0 Abonnés · 59 Publications

VSCode est la forme abrégée du nom de l'éditeur multiplateforme VisualStudio Code de Microsoft.

En savoir plus.

Article Iryna Mykhailova · Oct 21, 2025 2m read

Bonjour,

Je voulais partager avec vous une méthode pratique qui m'a été utile lors de mes développements sur Health Connect Cloud avec VS Code et GitBash. Lors de ces développements, si des modifications sont effectuées directement sur le serveur, comme des règles de routage ou des déploiements de composants, elles ne sont pas automatiquement incluses dans le contrôle de code source. Vous devez donc exporter les modifications depuis le serveur vers vos fichiers locaux et les envoyer vers votre dépôt distant. Je suis sûr qu'il existe des méthodes plus simples pour gérer ce problème, que je suis en train de tester, mais pour une solution rapide, j'ai pensé qu'il serait utile d'utiliser une méthode de pré-validation qui déclenche un rappel dans GitBash – voir ci-dessous.

0
0 16
Article Iryna Mykhailova · Oct 2, 2025 25m read

Table des matières

  1. Objectif de l'article
  2. Les conteneurs : définition et pertinence dans le cadre d'IRIS
     2.1 Les conteneurs et les images en quelques mots
     2.2 Avantages des conteneurs pour les développeurs
     2.3 Pourquoi IRIS fonctionne bien avec Docker
  3. Conditions préalables
  4. Installation de l'image InterSystems IRIS
     4.1 Utilisation de Docker Hub
     4.2 Extraction de l'image
  5. Exécution de l'image InterSystems IRIS
     5.1 Démarrage d'un conteneur IRIS
     5.2 Vérification de l'état des conteneurs
     5.3 Exécution de code dans le terminal conteneur
     5.4 Accès au portail de gestion IRIS
     5.5 Connexion du conteneur à VS Code
     5.6 Arrêt ou suppression du conteneur
     5.7 Configuration d'un mot de passe spécifique avec un montage de type bind
     5.8 Utilisation de volumes %SYS durables
      5.8.1 Contenu stocké sous %SYS durable
      5.8.2 Comment activer %SYS durable
  6. Utilisation de Docker Compose
     6.1 Exemple d'utilisation de l'outil Docker Compose
     6.2 Exécution de Docker Compose
  7. Utilisation d'un fichier Dockerfile pour l'exécution d'un code source personnalisé
     7.1 Exemple de fichier Dockerfile
     7.2 Exemple de Docker Compose
     7.3 Compréhension des couches, du balisage des images et de la différence entre le temps de compilation et le temps d'exécution
     7.4 Code source et script d'initialisation
     7.5 Création de l'image avec le fichier Dockerfile
     7.6 Exécution d'instructions dans le terminal IRIS conteneurisé
  8. Conclusion et suite


1. Objectif de l'article

La communauté de développeurs InterSystems propose déjà de nombreux articles intéressants qui expliquent le fonctionnement de Docker, les commandes les plus importantes et plusieurs cas d'utilisation d'InterSystems IRIS dans un environnement conteneurisé.

Les articles de cette série ont un objectif quelque peu différent. Je suis un grand fan des guides étape par étape, c'est pourquoi je souhaite créer un guide complet sur la configuration et l'utilisation de Docker avec InterSystems IRIS, en commençant par les bases pour ensuite passer progressivement à des scénarios plus avancés tels que les instances à espaces de noms multiples, les conteneurs interconnectés, les intégrations avec des systèmes externes et les applications comprenant une interface utilisateur.

2. Les conteneurs : définition et pertinence dans le cadre d'IRIS

2.1 Les conteneurs et les images en quelques mots

Traditionnellement, pour exécuter une application, il fallait faire correspondre sa version à celle de votre système d'exploitation et la packager pour cette cible spécifique. Dans le même temps, chaque application doit être conçue pour fonctionner spécifiquement avec un système cible. Si vous vouliez qu'une application fonctionne sous macOS et Windows, vous deviez modifier sa conception et la packager pour ces différents systèmes. Les images et conteneurs Docker constituent des technologies de déploiement d'applications qui résolvent ces problèmes en permettant aux développeurs de packager un logiciel une seule fois et de l'exécuter n'importe où. 

Docker est une plateforme logicielle qui regroupe des logiciels dans des conteneurs. Une image Docker, ou image de conteneur, est un fichier exécutable autonome contenant toutes les instructions (bibliothèques, dépendances et fichiers) nécessaires pour créer et exécuter un conteneur. Une image Docker est partageable et portable, ce qui vous permet de déployer la même image à plusieurs endroits à la fois. Un conteneur Docker est un environnement d'exécution qui contient tous les composants nécessaires pour exécuter le code de l'application sans utiliser les dépendances de la machine hôte.  

Contrairement aux machines virtuelles, les conteneurs sont légers. Ils n'ont pas besoin d'un système d'exploitation complet et fonctionnent directement sur le système d'exploitation hôte via le moteur Docker Engine en utilisant uniquement les binaires et les bibliothèques nécessaires à l'application spécifique, ce qui les rend plus efficaces. Plusieurs conteneurs isolés peuvent être lancés en même temps sur la même machine sans interférer les uns avec les autres.

2.2 Avantages des conteneurs pour les développeurs

  • Isolation: exécution dans un environnement propre et reproductible sans affecter le système hôte.
  • Reproductibilité: assurance que la configuration fonctionne de la même manière sur différentes machines.
  • Configuration facile: lancement d'une instance IRIS en quelques secondes à l'aide d'une seule commande, sans installation manuelle.

2.3 Pourquoi IRIS fonctionne bien avec Docker

L'exécution d'InterSystems IRIS dans Docker présente plusieurs avantages:

  • L'application peut être exécutée et testée dans des conteneurs isolés,
  • Il est possible d'utiliser des systèmes de contrôle de version partagés (tels que Git) au lieu de travailler directement sur le serveur
  • L'environnement conteneurisé peut être répliqué à n'importe quelle étape, ce qui garantit la cohérence tout au long du cycle de vie du logiciel.
  • Votre application peut facilement être exécutée sur n'importe quel ordinateur.

3. Conditions préalables

Pour exécuter InterSystems IRIS dans un conteneur Docker, il faut que vous ayez:

4. Installation de l'image InterSystems IRIS

4.1 Utilisation de Docker Hub

Docker Hub est le registre central des images Docker. Il fournit une vaste bibliothèque d'images pré-construites que vous pouvez utiliser comme point de départ. InterSystems y publie les images officielles IRIS Community Edition que vous pouvez télécharger pour exécuter IRIS localement dans votre conteneur. Vous pouvez également utiliser Docker Hub pour pousser vos propres images personnalisées afin de les partager au sein de votre équipe ou de les distribuer à la communauté. Docker Hub est disponible en ligne et intégré à Docker Desktop.

4.2 Extraction de l'image

Voici quelques commandes courantes pour les images Docker :

CommandeDescription
docker pull <image>Téléchargement d'une image depuis Docker Hub
docker imagesRépertoire de toutes les images locales
docker rmi <image>Suppression d'une ou plusieurs images

Vous trouverez la commande pull exacte directement sur la page Docker Hub de l'image:

Pour l'image InterSystems IRIS, la commande est comme suit:

docker pull intersystems/iris-community:latest-cd

Vous pouvez également rechercher iris-community dans la barre de recherche de Docker Desktop et cliquer sur Pull:

Une fois l'installation terminée, l'image InterSystems IRIS devrait apparaître dans la liste de vos images locales:

5. Exécution de l'image InterSystems IRIS

Une fois l'image InterSystems IRIS extraite de Docker Hub, vous pouvez l'exécuter dans un conteneur. 

Voici les principales commandes pour les conteneurs Docker:

CommandeDescription
docker run -d <image>Exécution en mode détaché : démarrer le conteneur en arrière-plan et renvoyer immédiatement le contrôle au terminal.
docker run -p <host>:<container> <img>Mappage du port hôte vers le port du conteneur
docker psListe des conteneurs en cours d'exécution
docker ps -aListe de tous les conteneurs (y compris les conteneurs arrêtés)
docker exec -it <container> bashExécution d'une commande dans un conteneur en cours d'exécution
docker logs <container>Affichage des journaux d'un conteneur
docker stop <container>Arret d'un conteneur en cours d'exécution
docker start <container>Démarrage d'un conteneur arrêté
docker restart <container>Redémarrage d'un conteneur
docker rm <container>Suppression d'un conteneur

5.1 Démarrage d'un conteneur IRIS

Vous pouvez démarrer un conteneur InterSystems IRIS Community Edition nommé "my-iris" via l'interface utilisateur Docker Desktop en cliquant simplement sur le bouton Run de l'image que vous souhaitez exécuter dans le panneau Images. Pour l'image InterSystems, il est possible de spécifier quelques paramètres facultatifs, tels que les ports à exposer sur votre machine hôte pour communiquer avec les services exécutés dans le conteneur.

Cela peut être fait via le menu ci-dessus, en considérant que:

  • côté gauche → port sur la machine hôte
  • côté droit → port à l'intérieur du conteneur

Ports IRIS courants (à l'intérieur du conteneur)

  • 1972 → Port Superserver : utilisé par IRIS pour les protocoles réseau (ObjectScript, JDBC, etc.).
  • 52773 → Port du serveur Web : utilisé par IRIS pour le portail de gestion (interface Web).

Si vous ne mappez pas explicitement les ports, Docker attribuera des ports aléatoires sur l'hôte.

Vous pouvez également exécuter le conteneur à l'aide du terminal:

docker run --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystems/iris-community:latest-cd

Dans cet exemple:

  • 9091 sur l'hôte est mappé à 1972à l'intérieur du conteneur (Superserver).
  • 9092 sur l'hôte est mappé à 52773 à l'intérieur du conteneur (Portail de gestion).

5.2 Vérification de l'état des conteneurs

Après avoir exécuté cette commande, exécutez docker ps pour vérifier si le conteneur fonctionne correctement.

> docker ps
CONTAINER ID   IMAGE                                   COMMAND                 CREATED         STATUS                            PORTS                                                                                        NAMES
907d4c2b4ab5   intersystems/iris-community:latest-cd   "/tini -- /iris-main"   3 seconds ago   Up 2 seconds (health: starting)   0.0.0.0:9091->1972/tcp, [::]:9091->1972/tcp, 0.0.0.0:9092->52773/tcp, [::]:9092->52773/tcp   my-iris

Les conteneurs en cours d'exécution sont également répertoriés dans le panneau Containers de Docker Desktop:

L'état des images associées sera "In Use" (En cours d'utilisation), comme indiqué dans le panneau Images :

5.3 Exécution de code dans le terminal conteneur

Une fois que le statut du conteneur indique Running (exécution), tout fonctionne correctement. 

Vous pouvez le tester en ouvrant le terminal du conteneur (cliquez sur le nom du conteneur dans le panneau de conteneurs (Containers) de Docker Desktop et accédez à Exec) et en saisissant:

iris session IRIS

Cela ouvre un terminal IRIS à l'intérieur du conteneur Docker, où vous pouvez utiliser la syntaxe ObjectScript standard pour exécuter des commandes et des scripts.

5.4 Accès au portail de gestion IRIS de l'instance conteneurisée

Ensuite, ouvrez votre navigateur et accédez à:

http://localhost:9092/csp/sys/UtilHome.csp

Par défaut, les conteneurs IRIS se servent de l'utilisateur _SYSTEM avec le mot de passe SYS. Il est nécessaire de changer le mot de passe après la connexion.

Cela vous donne un accès complet au portail de gestion IRISvous permettant de gérer les espaces de noms, les bases de données et d'autres fonctionnalités IRIS directement depuis l'interface web.

5.5 Connexion du conteneur VSCode

Vous pouvez connecter votre IDE préféré (tel que VS Code ou Studio) au conteneur IRIS à l'aide du port Superserver mappé (par défaut 1972 à l'intérieur du conteneur, par exemple, 9091 sur l'hôte) et du port du serveur Web (par défaut 52773 à l'intérieur du conteneur, par exemple, 9092 sur l'hôte). Cela vous permet de développer et de tester du code ObjectScript directement sur le conteneur en cours d'exécution.

Pour connecter le conteneur à VSCode:

  • Installez la solution InterSystems ObjectScript Extension Pack
  • Ouvrez l'extension InterSystems Server
  • Cliquez sur les trois points et sélectionnez "Edit server" (Modifier le serveur)
  •  
  • Cliquez sur "Modifier dans settings.json"
  • Ajoutez cet élément au fichier json "intersystems.servers":
"docker_iris": {
    "webServer": {
         "scheme": "http",
         "host": "localhost",
         "port": 9092
    },
    "description": "Connection to Docker container."
}
  • Maintenant le serveur est connecté. Vous pouvez vous connecter avec l'utilisateur _SYSTEM.
  • Comme vous pouvez le constater, l'espace de noms USER (UTILISATEUR) est le seul disponible:

5.6 Arrêt ou suppression du conteneur

Pour arrêter un conteneur en cours d'exécution, utilisez la commande:

docker stop my-iris

Redémarrage du conteneur

Pour redémarrer le conteneur, utilisez la commande

docker start my-iris

Suppression (effacement) du conteneur

Pour supprimer l'instance du conteneur, mais pas l'image, utilisez la commande: 

docker rm my-iris

La totalité des données contenues dans le conteneur sera perdue, sauf si vous avez monté des volumes (nous en parlerons dans les paragraphes suivants).

5.7 Configuration d'un mot de passe spécifique avec un montage de type bind

Il est possible de configurer un mot de passe personnalisé lors du démarrage d'un conteneur à l'aide d'un fichier de mots de passe. Le fichier sera enregistré sur notre hôte et copié dans le conteneur à l'aide du mécanisme bind mount .

Lorsque vous utilisez un bind mount, un fichier ou un répertoire sur la machine hôte est monté depuis l'hôte dans un conteneur, ce qui permet de partager le code source ou les artefacts de compilation entre un environnement de développement sur l'hôte Docker et un conteneur. 

  • Créez un fichier nommé password.txt contenant uniquement votre mot de passe sous forme de chaîne (attention! Notez votre mot de passe, vous en aurez besoin plus tard). 
  • Copiez le chemin d'accès, dans cet exemple ce sera C:\InterSystems\DockerTest\password\password.txt
  • Exécutez la commande suivante:
docker run --name my-iris -d --publish 9091:1972 --publish 9092:52773 --volume "C:\InterSystems\DockerTest:/durable" intersystems/iris-community:latest-cd --password-file /durable/password/password.txt 

Une fois le conteneur lancé, vous pouvez vous connecter avec l'utilisateur _SYSTEM et le mot de passe que vous avez enregistré dans votre fichier de mots de passe. 

À l'intérieur du conteneur Docker, vous verrez un fichier password.txt.done . Le même fichier se trouvera dans votre dossier hôte.

L'extension du fichier est remplacée par .done afin d'éviter la présence du mot de passe dans le texte brut. Il s'agit du comportement standard d'InterSystems IRIS avec les fichiers de mots de passe. Par conséquent, une fois le mot de passe lu à partir du fichier password.txt et l'utilisateur IRIS par défaut (_SYSTEM) mis à jour avec ce mot de passe, le fichier est mis à jour en ajoutant .done et en supprimant le mot de passe pour des raisons de sécurité.

Vous pouvez vous connecter au Portail de gestion à l'aide de votre mot de passe personnalisé (je vous avais dit de le noter :D). InterSystems IRIS ne vous obligera pas à changer le mot de passe après votre connexion.

Veuillez noter que si le conteneur est supprimé puis redémarré sans aucun volume durable monté (pour plus d'informations, voir le paragraphe suivant), le mot de passe ne sera pas relu à partir du fichier password.txt , car il a été remplacé par le fichier password.txt.done. Dans ce cas, le mot de passe standard "SYS" sera utilisé. 

5.8 Démarrage du conteneur avec un volume durable spécifique. Utilisation de volumes %SYS durables

Par défaut, tout ce que vous enregistrez dans un conteneur Docker en cours d'exécution disparaît lorsque vous le supprimez à l'aide de la commande docker rm <container's name> . 

Pour éviter de perdre vos données, InterSystems IRIS fournit la fonctionnalité durable %SYS. Cette fonctionnalité permet à l'instance de stocker tous les fichiers importants sur votre machine hôte, afin qu'ils survivent aux redémarrages du conteneur et de l'instance.

5.8.1 Contenu stocké sous %SYS durable

Voici quelques exemples:

  • Fichiers de configuration (iris.cpf, httpd.conf)
  • Configurations et journaux de la passerelle Web (/csp)
  • Bases de données système (IRIS, USER, IRISSECURITY, IRISTEMP, etc.)
  • Journaux, fichiers image d'écriture (WIJ) et fichiers temporaires
  • Fichiers journaux (messages.log, SystemMonitor.log, etc.)
  • Clé de licence (iris.key)
  • Toute autre base de données que vous avez créée

5.8.2 Comment activer %SYS durable

La première chose à faire est de choisir un dossier sur votre hôte, tel que C:\InterSystems\DockerTest

  • Sous Linux, assurez-vous qu'IRIS peut y écrire en créant l'utilisateur irisowner et en lui attribuant la propriété du répertoire:
adduser irisowner
chown -R irisowner:irisowner /InterSystems/DockerTest
  • Sous Windows, vous pouvez ignorer cette étape, car Docker Desktop will montera le dossier avec vos autorisations utilisateur Windows actuelles.

Ensuite, montez votre dossier hôte et indiquez à IRIS où écrire ses données durables à l'aide de la variable ISC_DATA_DIRECTORY:

  --volume "C:\InterSystems\DockerTest:/durable" --env ISC_DATA_DIRECTORY=/durable/iris

L'instruction complète à exécuter sur le terminal est la suivante:

docker run --name my-iris -d --publish 9091:1972 --publish 9092:52773 --volume "C:\InterSystems\DockerTest:/durable" --env ISC_DATA_DIRECTORY=/durable/iris intersystems/iris-community:latest-cd --password-file /durable/password/password.txt

À ce stade, vous pouvez inspecter votre conteneur et observer qu'un dossier durable est monté et contient les répertoires iris/ (pour le %SYS durable) et password/. Sur votre hôte, vous pouvez également voir les deux répertoires:

Si le conteneur est arrêté et supprimé, lorsque vous recréez le conteneur avec la même commande de Docker Compose IRIS restaurera son état précédent (utilisateurs, configuration, journaux, bases de données, etc.) à l'aide des données du dossier iris/, de sorte que rien ne soit perdu. Vous pouvez tester cette méthode en créant une application web, en arrêtant et en supprimant le conteneur, puis en le recréant une deuxième fois. Sans utiliser la fonctionnalité durable %SYS, toutes les modifications apportées à %SYS sont perdues lorsque le conteneur est supprimé et l'instance est lancée à chaque fois comme une nouvelle instance. 

Veuillez noter que si vous supprimez le dossier iris/, la prochaine fois que vous lancerez le conteneur IRIS, il sera initialisé comme lors d'une nouvelle installation, car il ne trouvera pas les données %SYS précédentes. Un tout nouveau dossier iris/ sera créé.

6. Utilisation de Docker Compose 

Jusqu'à présent, vous avez démarré InterSystems IRIS à l'aide d'une seule commande longue docker run. Cela fonctionne, mais il devient rapidement difficile de tout gérer avec des commandes shell simples.

Docker Compose est un fichier de configuration YAML qui permet de définir comment exécuter un ou plusieurs conteneurs. Cela simplifie le contrôle de l'ensemble de votre pile d'applications, facilitant la gestion des services, des réseaux et des volumes. Une seule commande vous permet de créer et de démarrer tous les services à partir de votre fichier de configuration.

Voici les commandes courantes pour Docker Compose:

CommandeDescription
docker compose up -dDémarrer tous les services définis dans docker-compose.yml en mode détaché (par défaut, utiliser le fichier docker-compose.yml du dossier courant).
docker compose -f ./path/to/docker-compose.yml up -dDémarrer les services à partir d'un fichier de composition dans un autre répertoire.
docker compose downArrêter et supprimer tous les conteneurs, réseaux et volumes créés par docker compose up.
docker compose psRépertorier les conteneurs gérés par Compose.
docker compose logsAfficher les journaux de tous les services définis dans le fichier Compose.
docker compose logs <service>Afficher les journaux d'un service spécifique (par exemple, iris).
docker compose exec <service> bashOuvrez un shell dans un conteneur en cours d'exécution géré par Compose.
docker compose stopArrêtez les conteneurs en cours d'exécution, mais ne les supprimez pas.
docker compose startDémarrer les conteneurs précédemment arrêtés.
docker compose restartRedémarrer tous les conteneurs définis dans le fichier Compose.
docker compose buildConstruire ou reconstruire les services définis par un fichier Dockerfile.
docker compose pullTélécharger la ou les dernières images pour les services.
docker compose configValider et afficher la configuration fusionnée à partir du fichier Compose.

6.1 Exemple d'utilisation de l'outil Docker Compose

Pour utiliser Docker Compose, il est nécessaire de créer un fichier docker-compose.yml contenant toutes les configurations du conteneur que l'on souhaite créer et démarrer.

Ainsi la commande suivante:

docker run --name my-iris -d --publish 9091:1972 --publish 9092:52773 --volume "C:\InterSystems\DockerTest:/durable" --env ISC_DATA_DIRECTORY=/durable/iris intersystems/iris-community:latest-cd --password-file /durable/password/password.txt

peut être remplacé par la suivante docker-compose.yml:

# docker-compose.yml     
services:
  iris:
    container_name: my-iris
    image: intersystems/iris-community:latest-cd
    init: true
    volumes:
      # Données système/persistantes (installation IRIS, bases de données, etc.)# Sous Windows, vous pouvez utiliser les deux options: "C:\\InterSystems\\DockerTest:/durable"
      - C:/InterSystems/DockerTest:/durable
      ports:
      - "9092:52773"# Portail de gestion / API REST
      - "9091:1972"# Port SuperServer
      environment:
      - ISC_DATA_DIRECTORY=/durable/iris
      # Utilisation du fichier de mots de passe pour se connecter au conteneur
      command: --password-file /durable/password/password.txt

6.2 Exécution de Docker Compose 

Ouvrez un terminal dans le répertoire où le fichier Docker Compose est enregistré (ou utilisez l'option -f) et exécutez la commande suivante:

docker compose up -d

Votre conteneur IRIS démarrera dans la configuration exacte spécifiée dans le fichier Docker Compose

Dans Docker Desktop, vous pouvez désormais voir qu'une pile composée appelée "dockertest" (elle prend le nom du dossier dans lequel Docker Compose est enregistré) a été créée et associée au conteneur "my-iris":

7. Utilisation d'un fichier Dockerfile pour l'exécution d'un code source personnalisé

Jusqu'à présent, vous avez exécuté InterSystems IRIS directement à partir de l'image Docker officielle. Cependant, nous aurons peut-être besoin de télécharger automatiquement des classes ObjectScript ou d'autres codes personnalisés dans l'image lors de sa création. 

Un fichier Dockerfileest un fichier texte contenant des instructions pour créer une image à partir d'une image de base (comme intersystems/iris-community:latest-cd). Grâce à un fichier Dockerfile, nous pouvons ajouter du code source personnalisé dans le conteneur et exécuter des commandes personnalisées lors de la création de l'image. 

7.1 Exemple de fichier Dockerfile

Le prochain exemple fournit un fichier Dockerfile qui effectue les opérations suivantes:

  • Démarrez l' image à partir de l'image officielle InterSystems IRIS.
  • Copiez le code de votre application depuis le dossier src/ vers le conteneur.
  • Exécutez un script pour importer les classes et initialiser l'application conteneurisée, puis enregistrez les journaux dans un fichier journal.
  • Exposez les ports InterSystems IRIS par défaut.

7.2 Exemple d'utilisation de l'outil Docker Compose

Vous devez également modifier Docker Compose afin de spécifier la création de l'image à partir du fichier Dockerfile situé dans le dossier courant:

# docker-compose.yml     
services:
  iris:
    container_name: my-iris
    build: # Cela indique à Docker de créer une nouvelle image basée sur celle spécifiée dans le fichier Dockerfile
      context: .        # Construction de l'image à partir du fichier Dockerfile local
      dockerfile: Dockerfile
    image: my-modified-iris-image:latest   # attribution d'une nouvelle balise à la nouvelle image afin d'éviter de remplacer l'image de base
    init: true
    volumes:
      # Données système/persistantes (installation IRIS, bases de données, etc.)# Sous Windows, vous pouvez utiliser les deux options: "C:\\InterSystems\\DockerTest:/durable"
      - C:/InterSystems/DockerTest:/durable
ports:
      - "9092:52773"# Portail de gestion / API REST
      - "9091:1972"# Port SuperServer
environment:
      - ISC_DATA_DIRECTORY=/durable/iris
    # Utilisation du fichier de mots de passe pour se connecter au conteneur
    command: --password-file /durable/password/password.txt

7.3 Compréhension des couches, du balisage des images et de la différence entre le temps de compilation et le temps d'exécution

Dans Docker, comme expliqué ici: Qu'est-ce qu'une image?, il y a deux principes importants à garder à l'esprit:

  1. Les images sont immuables: une fois qu'une image est créée, elle ne peut plus être modifiée. Vous pouvez uniquement créer une nouvelle image ou y ajouter des modifications.
  2. Les images de conteneur sont composées de couches: chaque couche représente un ensemble de modifications du système de fichiers qui ajoutent, suppriment ou modifient des fichiers.

De nouvelles couches sont ajoutées à une image lorsque les instructions spécifiées dans un fichier Dockerfile sont exécutées. Ces couches apparaîtront également dans les informations relatives à l'image.

Dans cette optique, il est très important de distinguer ce que fait Docker au temps de compilation (lorsqu'il crée une image à partir d'un fichier Dockerfile) et au temps d' exécution (lorsqu'il démarre un conteneur à partir de cette image).

Chacune de ces instructions Dockerfile est exécutée au temps de compilation

  • COPY: les fichiers sont copiés dans l'image
  • RUN: exécute des commandes et enregistre les résultats sous forme de nouvelles couches d'image
  • ENTRYPOINT: ne modifie pas le système de fichiers, mais définit le processus par défaut qui sera lancé au moment de l'exécution
  • EXPOSE: définit les métadonnées relatives aux ports que l'image prévoit d'utiliser

Au temps d'exécution, Docker ne reconstruit pas l'image, mais ajoute une couche de conteneur par-dessus. Toutes les modifications apportées pendant l'exécution du conteneur (comme les nouveaux fichiers, les modifications, les journaux) sont enregistrées dans cette couche temporaire.

D'après le dernier exemple fourni par Docker Compose:

build: # cela indique à Docker de créer une nouvelle image basée sur celle spécifiée dans le fichier Dockerfile
context: .        # Construction de l'image à partir du fichier Dockerfile local
dockerfile: Dockerfile
image: my-modified-iris-image:latest   # attribution d'une nouvelle balise à la nouvelle image afin d'éviter de remplacer l'image de base

Ces instructions indiquent à Docker de créer une nouvelle image appelée "my-modified-iris-image:latest" (ceci s'appelle un tag) en récupérant l'image de base et en la modifiant comme décrit dans le fichier Dockerfile. Il est très important de marquer la nouvelle image avec un nom distinct. Si nous évitons d'apposer une balise sur l'image nouvellement créée, l'image de base sera remplacée par la nouvelle. L'image officielle sera toujours disponible sur Docker Hub, mais cette version locale la masquera et tous les projets faisant référence à cette balise utiliseront désormais, sans le savoir, l'image personnalisée, contenant plusieurs nouvelles couches.

Pour éviter cela, utilisez toujours une balise distincte pour créer une nouvelle image distincte tout en conservant l'image de base officielle propre et réutilisable. 

7.4 Code source et script d'initialisation

À ce stade, nous devons créer au moins une classe et la placer dans le src/ dossier. La classe sera copiée dans le conteneur et importée via le iris.script fichier, qui contient toutes les instructions nécessaires pour importer les classes et initialiser l'application lors de la création de l'image.

Créez un nouveau répertoire appelé src/DockerStepByStep dans le dossier de votre projet et créez le fichier de classe suivant:

Class DockerStepByStep.cheers Extends%RegisteredObject
{

ClassMethod sayHi() As%Status { Set sc = $$$OKw"Hi mom!",! Return sc }

}

Dans la racine de votre projet, créez un fichier portant le nom iris.script:

// Non-expiration des mots de passe pour le mode devzn"%SYS"Do##class(Security.Users).UnExpireUserPasswords("*")

// Téléchargement des cours à partir d'une source fiablezn"USER"// Les classes à importerset importPath = "/opt/irisapp/src"write"Loading classes at '", importPath, "' ...", ! set errors = ""do$System.OBJ.Import(importPath,"cuk",,.errors) if errors = 0 { write"Classes loaded successfully", ! } else { write errors, " errors occurred while loading classes!", ! }

halt

7.5 Création de l'image avec le fichier Dockerfile

Pour la première exécution, vous pouvez utiliser la commande suivante pour créer l'image à partir du fichier Dockerfile (le drapeau --build force Docker à recréer l'image à partir de votre fichier Dockerfile):

docker-compose up --build

Pour les autres exécutions, si le fichier Dockerfile n'a pas été modifié, vous pouvez simplement exécuter ce qui suit: 

docker-compose up -d

Une fois la création de l'image lancée, vous verrez apparaître les journaux suivants dans le terminal:

PS C:\InterSystems\DockerTest> docker-compose up --build
[+] Building 21.5s (13/13) FINISHED
 => [internal] load local bake definitions                                                                     0.0s
 => => reading from stdin 530B                                                                                 0.0s
 => [internal] load build definition from Dockerfile                                                           0.0s
 => => transferring dockerfile: 1.73kB                                                                         0.0s
 => [internal] load metadata for docker.io/intersystems/iris-community:latest-cd                              10.0s
 => [internal] load .dockerignore                                                                              0.0s
 => => transferring context: 2B                                                                                0.0s
 => [1/6] FROM docker.io/intersystems/iris-community:latest-cd@sha256:93488df381f5868649e7bfc33a9083a3e86a22d  0.9s
 => => resolve docker.io/intersystems/iris-community:latest-cd@sha256:93488df381f5868649e7bfc33a9083a3e86a22d  0.0s
 => [internal] load build context                                                                              0.0s
 => => transferring context: 147B                                                                              0.0s
 => [2/6] WORKDIR /opt/irisapp                                                                                 0.0s
 => [3/6] COPY src src                                                                                         0.1s
 => [4/6] COPY iris.script .                                                                                   0.1s
 => [5/6] RUN mkdir -p /opt/irisapp/logs                                                                       0.3s
 => [6/6] RUN iris start IRIS &&     iris session IRIS < iris.script > /opt/irisapp/logs/build.log 2>&1 &&     4.5s
 => exporting to image                                                                                         4.5s
 => => exporting layers                                                                                        3.3s
 => => exporting manifest sha256:3ce316cefa21a3707251c4287005a15b02e6dc0151b24baf2a82f76064792250              0.0s
 => => exporting config sha256:00238e19edef86b29149d2eb89ff75f4d1465ba0d9a2ac4494a14d3bd3746a94                0.0s
 => => exporting attestation manifest sha256:3579cab5c8accc7958090276deb60bd7dbbc2ecbf13af8e7fa8c4ff2dfe91028  0.0s
 => => exporting manifest list sha256:17b969c340f57d611cc7603287cc6db50cffd696258a72b5648ece0a919676ac         0.0s
 => => naming to docker.io/intersystems/iris-community:latest-cd                                               0.0s
 => => unpacking to docker.io/intersystems/iris-community:latest-cd                                            0.9s
 => resolving provenance for metadata file                                                                     0.0s
[+] Running 3/3
 ✔ intersystems/iris-community:latest-cd  Built                                                                0.0s
 ✔ Network dockertest_default             Created                                                              0.1s
 ✔ Container my-iris                      Created                                                              0.2s 

À l'étape 6/6, le fichier iris.script est exécuté dans l'instance IRIS conteneurisée et les journaux sont enregistrés dans le chemin /opt/irisapp/logs/build.log.

Pour afficher les journaux, vous pouvez exécuter l'instruction suivante:

docker exec -it my-iris cat /opt/irisapp/logs/build.log

Vous devriez voir les enregistrements suivants qui vous informent du résultat de la compilation de la classe:

Node: buildkitsandbox, Instance: IRIS

USER>

USER>

%SYS>

%SYS>

%SYS>

%SYS>

USER>

USER>

USER>

USER> Loading classes at '/opt/irisapp/src' ...

USER>

USER>

Load of directory started on 09/16/202507:46:28 Loading file /opt/irisapp/src/DockerStepByStep/cheers.cls as udl

Compilation started on 09/16/202507:46:28 with qualifiers 'cuk' Class DockerStepByStep.cheers is up-to-date. Compilation finished successfully in 0.005s.

Load finished successfully.

USER> Classes loaded successfully

USER>

USER>

Sur Docker Desktop, vous pouvez voir qu'une nouvelle image appelée "my-modified-iris-image" a été créée et s'exécute parallèlement à l'image officielle de base.

Si vous examinez les images, vous constaterez que la version personnalisée est composée de 31 couches, contre 25 couches pour l'originale. Les nouvelles couches correspondent aux instructions exécutées au moment de la compilation par le fichier Dockerfile:

7.6 Exécution d'instructions dans le terminal IRIS conteneurisé

Pour tester les classes, vous pouvez activer le terminal Iris dans l'instance IRIS conteneurisée. Pour ce faire, exécutez l'instruction suivante:

docker exec -it my-iris iris session IRIS

À ce stade, vous pouvez invoquer la méthode de classe à partir de l'espace de noms USER à l'aide de la commande suivante:

do##class(DockerStepByStep.cheers).sayHi()

Finalement, vous devriez obtenir le résultat suivant:

PS C:\InterSystems\DockerTest> docker exec -it my-iris iris session IRIS

Node: 41c3c7a9f2e4, Instance: IRIS

USER>do##class(DockerStepByStep.cheers).sayHi() Hi mom!

8. Conclusion et suite

Nous avons parcouru l'ensemble du cycle de mise en œuvre d'InterSystems IRIS dans Docker:

  • extraction de l'image
  • démarrage et configuration des conteneurs
  • persistance des données avec %SYS durable
  • création d'images personnalisées avec votre propre code et vos propres scripts

Cela suffit pour commencer à expérimenter IRIS dans un environnement conteneurisé et l'utiliser pour le développement.

Un référentiel GitHub contenant tous les fichiers mentionnés dans la dernière partie (Docker Compose, Dockerfile, iris.script, etc.) est disponible.

Ne manquez pas le prochain article!

1
0 24
Article Sylvain Guilbaud · Sept 25, 2025 7m read

artisan cover

Si vous avez jamais observé un véritable artisan, qu'il s'agisse d'un potier transformant de l'argile en chef-d'œuvre ou d'un luthier donnant vie à un morceau de bois brut pour en faire une magnifique guitare, vous savez que la magie ne réside pas dans les matériaux, mais dans le soin, le savoir-faire et le traitement. Je le sais d'expérience : ma guitare électrique faite à la main est une source d'inspiration quotidienne, mais je dois avouer que créer quelque chose de ce genre est un don qui me manque.

Pourtant, dans le monde numérique, je vois souvent des gens qui espèrent que l'IA générative leur apporte une "solution miracle" en leur proposant des instructions vagues et hors contexte telles que "créez une application". Les résultats sont généralement décevants, sans aucune finesse ni créativité. Trop de gens attendent de l'IA qu'elle fasse des miracles sans contexte ni structure. Voilà ce qui nous a poussés à créer dc-artisan, un outil destiné aux artisans du prompt numérique. Notre objectif est de permettre à quiconque de transformer des prompts approximatifs et vagues en chefs-d'œuvre efficaces, fonctionnels et riches en contexte..

Tout comme lorsqu'on observe un grand artisan transformer des matières premières en œuvres d'art, créer avec GenAI est une question d'intention, de préparation et de travail minutieux. Le problème ne réside pas dans l'IA en soi, mais dans la manière dont nous l'utilisons. Tout comme un luthier doit sélectionner et façonner chaque morceau de bois avec soin, une ingénierie efficace des prompts nécessite un contexte, une structure et une intention bien définis.

Nous pensons que le monde mérite mieux que des "suggestions magiques" qui mènent à la déception. Une IA générative puissante est le fruit d'un accompagnement humain minutieux : un contexte précis, des objectifs concrets et une structure élaborée. Aucun artisan ne crée de la beauté par hasard : pour être fiables, les résultats d'une IA doivent être préparés avec soin.

dc-artisan aborde l'ingénierie rapide comme un véritable artisanat : de manière systématique, didactique et vérifiable. Il offre une boîte à outils complète pour aller au-delà des essais, des erreurs et des conjectures.

La première chose que fait dc-artisan est de chercher à comprendre votre prompt comme le ferait un collaborateur attentif. Lorsque vous commencez à rédiger, l'outil interagit directement avec vos entrées:

  • Questions de clarification: dc-artisan analyse votre demande initiale et vous pose des questions pertinentes afin de déterminer votre objectif principal, votre audience cible, le format souhaité et tout élément manquant. Par exemple:
    • “Quel type de résultat attendez-vous : un résumé textuel, un code ou des données structurées?”
    • “Quelle est l'audience cible?”
    • “Avec quel type de données ou d'informations ce prompt sera-t-il utilisé?”

prompt enhance

Ces interactions vous aident à clarifier non seulement ce que vous voulez que votre prompt dise, mais aussi pourquoi il le fait.

Une fois votre intention claire, dc-artisan examine la structure et propose des suggestions personnalisées afin d'améliorer la clarté, le ton et de compléter les détails manquants essentiels à un résultat riche en contexte et prêt à l'emploi.

Le meilleur dans tout ça? Vous pouvez utiliser toutes ces fonctionnalités directement dans votre éditeur préféré, VS Code ! Vous pouvez insérer des variables directement dans votre prompt (comme {task} ou {audience}) pour plus de flexibilité et de réutilisabilité, et prévisualiser instantanément le résultat final avec différentes substitutions. Vous voyez ainsi exactement comment cela fonctionnera dans la pratique.

Mais ce n'est pas tout. dc-artisan prend en charge le réglage rapide des prompts pour des performances optimales. Téléchargez un fichier CSV contenant des cas de test afin d'évaluer automatiquement la cohérence, la qualité des résultats et l'impact de la structure de vos prompts sur des entrées variées. dc-artisan évalue chaque réponse et génère des rapports complets avec des scores de qualité et des mesures de similarité, afin que vous puissiez mesurer et optimiser l'efficacité de vos prompts en toute confiance.

testing

Promouvoir sans contexte n'est pas un art, c'est du chaos

L'ingénierie des prompts sans structure revient à sculpter du bois les yeux bandés. Vous obtiendrez peut-être quelque chose, mais cela ne produira probablement pas un air mélodieux.

De nombreuses personnes ont recours à des prompts vagues ou surchargés, c'est-à-dire des commandes courtes et ambiguës ou des pages de contenu brut sans structure. Soit le modèle n'a aucune idée de ce que vous voulez, soit il se perd dans un marécage de bruit.

Lorsque le contexte du prompt devient trop long ou trop confus, même les LLM avancés peuvent se perdre. Au lieu de raisonner ou de générer de nouvelles stratégies, ils se laissent souvent déconcentrer, répétant le contenu précédent ou s'en tenant à des schémas familiers issus du début de l'historique des prompts. Ironiquement, les modèles plus volumineux avec des fenêtres contextuelles plus grandes (comme 32 000 tokens) sont encore plus sensibles à ce phénomène. Le simple fait de fournir plus de contexte (plus de documents, des prompts plus longs, des bases de connaissances entières) se retourne souvent contre vous, entraînant une surcharge contextuelle, des objectifs manqués et des résultats confus.

C'est précisément cette lacune que le RAG ( Génération augmentée par la récupération) vise à remplir : non pas en donnant plus d'informations aux LLM, mais en leur fournissant les connaissances les plus pertinentes au bon moment.

Comment dc-artisan et le mode pipeline RAG peuvent vous aider

dc-artisan unifie la création rapide de prompts et la gestion du contexte. Il vous aide non seulement à rédiger de meilleurs prompts, mais garantit également que votre IA reçoit des informations pertinentes et sélectionnées, et non un flot incessant d'informations futiles.

Avec le mode pipeline RAG vous pouvez:

  • 📄 Téléchargement et fragmentation des documents: PDF, DOCX, Markdown, TXT — à intégrer facilement dans votre base de données vectorielle.
  • 🧬 Inspection des fragments: à visualiser avec précision chaque unité atomique du texte intégré.
  • 🗑️ Nettoyage intelligent: à supprimer directement les contenus indésirables ou obsolètes depuis l'extension, afin que la base de connaissances de votre IA reste organisée et pertinente.

rag

Ce flux de travail est inspiré par le portail InterSystems Ideas Portal (see DPI-I-557)

Voici comment vous pouvez intégrer en toute simplicité une nouvelle section sur l'architecture backend de dc-artisan juste avant la section "Conclusion", en mettant en avant l'intégration avec l'interopérabilité InterSystems IRIS et notre adaptateur liteLLM personnalisé.

Ce qui distingue vraiment dc-artisan, c'est son backend robuste, conçu pour offrir à la fois interopérabilité et flexibilité. Le moteur de l'extension fonctionne sur L'interopérabilité InterSystems IRIS, en utilisant un adaptateur liteLLM personnalisé que nous avons développé.

Cette architecture signifie que vous n'êtes pas lié à un seul fournisseur de modèles linguistiques de grande taille (LLM). Au contraire, vous pouvez vous connecter et passer de manière transparente entre une large gamme de plateformes LLM de premier plan, notamment OpenAI, Gemini, Claude, Azure OpenAI, et bien d'autres, toutes gérées à partir d'un backend unifié de niveau entreprise.

Conclusion

De plus en plus de développeurs découvrent que la suggestion ne consiste pas à deviner les "mots magiques". Il s'agit plutôt de définir des objectifs réfléchis, d'utiliser un langage clair et de fournir un contexte pertinent, en rédigeant des prompts comme des ingénieurs, et non comme des magiciens. Tout comme les luthiers façonnent le bois pour créer des instruments dotés d'une âme, vous pouvez façonner des prompts pour créer des flux de travail IA à la fois fiables et riches en contexte à l'aide d'outils conçus spécialement pour votre métier.

dc-artisan est plus qu'un outil, c'est un changement de mentalité qui passe du codage intuitif à la clarté, la précision et au véritable art numérique.

🎸 Prêt à créer vos propres prompts?
⚙️ Lancez VS Code, installez dc-artisan et commencez à façonner votre IA comme un artisan, pas comme un magicien.

🗳️ Et si vous aimez ce que nous avons créé, votez pour nous dans le cadre du concours InterSystems IRIS Dev Tools Contest. Votre soutien compte beaucoup pour nous!

dc-artisan

0
0 21
Annonce Irène Mykhailova · Sept 22, 2025

Visual Studio Code publie chaque mois de nouvelles mises à jour avec de nouvelles fonctionnalités et des corrections de bugs. La version d'août 2025 est désormais disponible.

Cette version offre une sélection plus intelligente des modèles d'IA, une sécurité renforcée pour les modifications sensibles et les commandes de terminal, ainsi que des améliorations de productivité telles que la modification simplifiée du chat et le contexte personnalisable avec AGENTS.md.

Les mises à jour de la version 1.104 incluent :

Flexibilité du modèle

0
0 26
InterSystems officiel Adeline Icard · Juil 22, 2025

InterSystems a le plaisir d'annoncer la sortie de la version 3.0.5 de l'extension VS Code - ObjectScript. Cette version inclut de nombreuses corrections de bugs, ainsi que des modifications des données de télémétrie collectées. La collecte de données d'utilisation supplémentaires permet à InterSystems d'identifier et de prioriser les correctifs et améliorations les plus bénéfiques pour vous, nos utilisateurs. Les informations personnelles identifiables (PII) ne seront jamais collectées et la télémétrie peut être désactivée via le paramètre telemetry.telemetryLevel. La liste complète des

0
0 24
Article Sylvain Guilbaud · Mai 27, 2025 7m read

Je sais que ceux qui découvrent VS Code, Git, Docker, FHIR et d'autres outils peuvent parfois avoir des difficultés à configurer l'environnement. J'ai donc décidé de rédiger un article qui explique étape par étape l'ensemble du processus de configuration afin de faciliter les premiers pas.

Je vous serais très reconnaissant de bien vouloir laisser un commentaire à la fin de cet article pour me faire savoir si les instructions étaient claires, s'il manquait quelque chose ou si vous avez d'autres suggestions qui pourraient être utiles.

La configuration comprend:

✅ VS Code – Éditeur de code
✅ Git – Système de contrôle de version
✅ Docker – Lancement d'une instance de la communauté IRIS for Health
✅ Extension VS Code REST Client – Pour l'exécution de requêtes API FHIR
✅ Python – Pour l'écriture de scripts basés sur FHIR
✅ Jupyter Notebooks – Pour les tâches liées à l'IA et au FHIR

Avant de commencer: Vérifiez que vous disposiez des privilèges d'administrateur sur votre système.

Outre la lecture du guide, vous pouvez également suivre les étapes décrites dans les vidéos:

Pour Windows

<iframe allowfullscreen="" frameborder="0" height="360" src="https://www.youtube.com/embed/IyvuHbxCwCY" width="640"></iframe>

Pour macOS

<iframe allowfullscreen="" frameborder="0" height="360" src="https://www.youtube.com/embed/Ss7vU0l3JNU" width="640"></iframe>

Vous trouverez un sondage à la fin de l'article, merci de partager vos progrès. Vos commentaires sont très appréciés.

Alors, c'est parti!

1. Installation de Visual Studio Code (VS Code)

VS Code sera l'éditeur principal pour le développement.

Windows et amp; macOS

  1. Accédez à la page de téléchargement de VS Code: https://code.visualstudio.com/
  2. Téléchargez le programme d'installation pour votre système d'exploitation:
    • Windows: .exe file
    • macOS: .dmg file
  3. Exécutez le programme d'installation et suivez les instructions.
  4. (Windows uniquement) : pendant l'installation, cochez la case Add to PATH" (Ajouter au PATH).
  5. Vérifiez l'installation:
  • ouvrez un terminal (Command Prompt, , PowerShell ou Terminal macOS)
  • Exécutez:
code --version
  • Vous devriez voir le numéro de version.

2. Installation de Git

Git est nécessaire pour le contrôle de version, le clonage et la gestion des référentiels de code.

Windows

  1. Téléchargez la dernière version à partir de: https://git-scm.com/downloads
  2. Exécutez le programme d'installation:
    • Choisissez "Use Git from the Windows Command Prompt" (Utiliser Git à partir de l'invite de commande Windows).
    • Conservez les paramètres par défaut et terminez l'installation.
  3. Vérifiez l'installation:
git --version

macOS

  1. Ouvrez le terminal et exécutez:
git --version

Si Git n'est pas installé, macOS vous demandera d'installer les outils de ligne de commande Suivez les instructions.

3. Installation de Docker

Docker est indispensable pour exécuter InterSystems IRIS for Health Community.

Windows

1.    Téléchargez Docker Desktop à partir de: https://www.docker.com/products/docker-desktop
2.    Exécutez le programme d'installation et suivez les instructions.
3.    Redémarrez votre ordinateur après l'installation.
4.    Activez WSL 2 Backend (si cela vous est demandé).
5.    Verifiez l'installation

À remarquer: L'installation de Docker nécessite des privilèges d'administrateur sur votre machine et au moins un redémarrage.

macOS

1.    Téléchargez Docker Desktop pour Mac à partir de: https://www.docker.com/products/docker-desktop
2.    Installez-le en glissant Docker.app dans le dossier Applications.
3.    Ouvrez Docker à partir du menu Applications.

Pour vous assurer que le moteur Docker Desktop fonctionne sous Windows ou macOS, procédez comme suit:

Démarrez Docker Desktop

Windows: Ouvrez Docker Desktop à partir du menu Start. L'icône Docker en forme de baleine devrait apparaître dans votre barre d'état système.

Mac: Lancez Docker Desktop à partir du dossier Applications. Une fois l'application lancée, l'icône Docker en forme de baleine apparaîtra dans la barre de menu.

Attendez l'initialisation

Une fois que vous avez lancé Docker Desktop, le moteur peut prendre un certain temps à démarrer. Recherchez un message d'état indiquant que Docker est "running" (en cours d'exécution) ou "started" (démarré).

Vérifiez via le terminal/Command Prompt:

Ouvrez le terminal (ou Command Prompt/PowerShell pour Windows) et exécutez:

docker --version

ou

docker info

Dépannage

Si le moteur ne fonctionne pas, essayez de redémarrer Docker Desktop ou vérifiez s'il y a des messages d'erreur dans l'interface utilisateur de Docker Desktop. Assurez-vous également que votre système répond aux exigences de Docker Desktop. Vous pouvez voir des messages d'erreur confus faisant référence à des pipes si vous essayez de créer une image Docker sans que Docker Desktop soit en cours d'exécution.

4. Création de l'image IRIS for Health et son exécution à l'aide de Docker

Avant de pouvoir démarrer un conteneur Docker exécutant IRIS for Health Community (qui comprend notre serveur FHIR), nous devons le créer.

  1. Clonez le référentiel FHIR dans un répertoire approprié de votre système de fichiers. Ouvrez un terminal dans VS Code et clonez ce référentiel à l'aide de la commande suivante:
    git clone https://github.com/pjamiesointersystems/Dockerfhir.git
     
  2. Accédez à ce répertoire et ouvrez le dossier dans VS Code. Suivez les instructions du fichier readme pour créer et exécuter le conteneur. Une étape essentielle consiste à vous assurer que le référentiel de base est disponible dans votre magasin Docker. Vous pouvez le faire à l'aide de la commande dans le terminal VS Code:
    docker pull containers.intersystems.com/intersystems/irishealth-community:latest-em
    Vous devriez recevoir une confirmation après quelques minutes.
  3. Accédez au répertoire dans VS Code où se trouve le fichier docker-compose.yaml, puis exécutez la commande suivante:
    docker-compose build 
    Cela lancera le processus de compilation, qui peut prendre jusqu'à 10 minutes, au cours desquelles un référentiel FHIR complet sera créé et chargé avec un échantillon de patients. 
  4. Une fois le processus de compilation terminé, lancez le conteneur à l'aide de la commande suivante:
    docker-compose up -d
    suivi par
    docker ps
    Vous devriez voir un conteneur nommé **iris-fhir** en cours d'exécution. Si le conteneur ne démarre pas, vérifiez les journaux:
    docker logs iris-fhir
     

5. Installation de l'extension VS Code REST Client

Cette extension vous permet d'envoyer des requêtes API FHIR depuis VS Code.

  1. Ouvrez VS Code.
  2. Accédez aux extensions (Ctrl + Shift + X or Cmd + Shift + X on macOS).
  3. Recherchez "REST Client". Il existe plusieurs clients REST, veuillez installer celui-ci:
  4. Clickez le bouton "Install".

6. Installation de Python

Python est indispensable pour les tâches de programmation liées à FHIR.

Windows

1.    Télécharger Python à partir de: https://www.python.org/downloads/
2.    Exécutez le programme d'installation et cochez la case "Add to PATH" (Ajouter au chemin). Vous aurez besoin d'informations d'identification administratives pour apporter des modifications au chemin d'accès
3.    Terminez l'installation.
4.    Verifiez l'installation:

python --version

macOS

  1. Ouvrez le Terminal et installez Python via Homebrew:
    Brew install python
    Si vous n'avez pas d'Homebrew, installez-le d'abord:
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
     
  2. Verifiez l'installation:
python3 --version

7. Installation des blocs-notes Jupyter

Les notebooks Jupyter sont utilisés pour l'IA et le FHIR, ainsi que pour les tâches  FHIR SQL.

Windows & macOS

  1. Ouvrez le terminal (Command Prompt, PowerShell, ou macOS Terminal).
  2. Installez Jupyter à l'aide de pip:
    pip install jupyter
    jupyter --version
     
  3. Exécutez le bloc-note Jupyter:
jupyter notebook

Jupyter s'ouvrira alors dans votre navigateur web.

8.  Validation

Exécutez votre conteneur en accédant à votre fichier Docker Compose dans le shell. Exécutez la commande 

docker compose up -d
docker ps

Accédez au Portail de gestion d'IRIS:

  • Ouvrez votre navigateur et accédez à: http://localhost:8080/csp/sys/UtilHome.csp
  • Informations d'identification par défaut:

Nom d'utilisateur: _SYSTEM
Mot de passe: ISCDEMO

Accédez à l'API FHIR

  • Ouvrez votre navigateur et accédez à: http://localhost:8080/csp/healthshare/demo/fhir/r4/metadata

Dernières vérifications

Exécutez les commandes suivantes pour vérifier toutes les installations:

code --version       # VS Code
git --version        # Git
docker --version     # Docker
python --version     # Python
jupyter --version    # Jupyter

Si tout fonctionne, vous avez installé correctement tous les logiciels ci-dessus.

Dépannage

ProblèmeSolution
"Command not found" (Commande introuvable) pour n'importe quel outilVérifiez qu'il a bien été ajouté au PATH (chemin) (réinstallez-le si nécessaire).
Docker ne fonctionne pas sous WindowsRedémarrez Docker Desktop et vérifiez que WSL 2 backend est activé.
Le conteneur IRIS ne démarre pasExécutez docker logs iris-fhir pour vérifier les erreurs.
Impossible d'accéder à l'API FHIR Vérifiez que le conteneur est en cours d'exécution (docker ps).

Merci de votre aide. J'attends vos commentaires avec impatience!

0
0 30
Article Iryna Mykhailova · Avr 9, 2025 3m read

Comme vous le savez peut-être, le serveur web privé fourni avec chaque installation IRIS a été supprimé, rendant nécessaire l'utilisation d'un serveur web externe.

Pour les déploiements Docker, il est courant d'utiliser l'image de passerelle web (disponible ici) avec l'image IRIS pour accéder facilement au Portail de Gestion. Cette image peut être configurée pour un accès via HTTPS sans problème en configurant les certificats.

0
0 54
Article Pierre LaFay · Déc 30, 2023 6m read

Introduction

Depuis qu'InterSystems a récemment annoncé l'arrêt du support d'InterSystems Studio à partir de la version 2023.2 au profit du développement exclusif d'extensions pour l'IDE Visual Studio Code (VSC), estimant que ce dernier offre une expérience supérieure par rapport à Studio, beaucoup d'entre nous, développeurs, avons changé ou commencé à utiliser VSC. Beaucoup se sont peut-être demandé comment ouvrir le Terminal pour effectuer des opérations, car VSC n'a pas de panneau de sortie comme Studio, ni de fonctionnalité intégrée pour ouvrir le terminal IRIS, sauf en téléchargeant les plugins développés par InterSystems.

1
0 222
InterSystems officiel Adeline Icard · Fév 11, 2025

Tout d'abord, permettez-moi de souhaiter une bonne année à la Communauté des Développeurs ! Nous espérons vous apporter beaucoup de bonnes choses cette année, et aujourd'hui, j'aimerais vous présenter la dernière version de l'extension Intersystems Language Server pour VS Code. La plupart des améliorations de Language Server sont expérimentées via l'interface utilisateur de l'extension ObjectScript, vous n'êtes donc peut-être pas au courant des nombreuses améliorations dans des domaines tels qu'Intellisense et les survols qui ont été publiées tout au long de l'année 2024. Veuillez lire

0
0 39
InterSystems officiel Adeline Icard · Déc 9, 2024

Cela fait un moment que je n'ai pas publié d'article sur Embedded Git sur la Communauté des développeurs, et j'aimerais faire le point sur l'énorme quantité de travail que nous avons accompli cette année et sur la direction que nous allons prendre ensuite.

Contexte

Si vous créez des solutions sur IRIS et que vous souhaitez utiliser Git, c'est parfait ! Utilisez simplement VSCode avec un dépôt git local et transmettez vos modifications sur le serveur : c'est aussi simple que cela.

Mais que se passe-t-il si :

0
0 45
Article Robert Barbiaux · Sept 7, 2024 2m read

Introduction

Cet article décrit comment exécuter les tests unitaires lorsque la fonctionnalité intégrée à l'extension InterSystems ObjectScript n'est pas disponible car la version de IRIS utilisée est antérieure à 2023.3.

Au passage, l'extension ne semble pas supporter les tests pour les productions d'interopérabilité (classes qui étendent %UnitTest.TestProduction) , mais c'est seulement lié à la manière de déterminer si la classe comporte une méthode de test. Il suffit d'ajouter une méthode dont le nom commence par 'Test' pour que la classe soit reconnue par l'extension.

Préparation

0
0 98
Annonce Irène Mykhailova · Août 14, 2024

L'équipe de développement d'extensions VS Code recherche des bêta-testeurs pour fournir des commentaires sur une refonte proposée du flux de travail d'édition côté client. La liste complète des modifications se trouve dans la description de la GitHub pull request. Voici les points saillants :

0
0 39
Article Pierre LaFay · Juil 15, 2024 2m read

Vue d'ensemble

Après quelques discussions au Global Summit et l'utilisation d'un grand nombre de gestionnaires de paquets dans mon développement quotidien (npm, nuget, Chocolatey, etc) en plus de l'utilisation récente de l'InterSystems Package Manager pour un processus CICD que je suis en train de construire en utilisant Intersystems IRIS et IRIS 4 Health, je voulais un moyen facile et intégré pour rechercher/visualiser/installer des paquets liés à la pile technologique d'Intersystems.

0
0 59
Article Iryna Mykhailova · Juin 27, 2024 6m read

Introduction

Dans les prochaines semaines, mes collègues prévoient de commencer à utiliser VSCode pour coder avec les produits d'InterSystems. Parmi les nombreux avantages, je soulignerais la possibilité de se connecter facilement à d'autres technologies, telles que GitHub. En outre, VSCode propose également une vaste boutique d'extensions, où vous pouvez trouver de nombreux add-ons gratuits qui rendent le codage plus rapide et plus efficace. Enfin, pour conquérir le cœur de tous les développeurs, c'est open source.

Cela étant dit, commençons le tutoriel. N'hésitez pas à sauter certaines étapes si vous vous sentez à l'aise pour les réaliser sans aide.

Étape 1 - Téléchargement et installation de VSCode

Recherchez "VSCode download" ou cliquez sur this linkce lien pour télécharger à partir de la page officielle. Sélectionnez l'installation correcte pour votre ordinateur et exécutez le fichier téléchargé.

Une fois l'exécutable lancé, il vous sera demandé d'accepter la licence, de sélectionner quelques préférences (qui sont très personnelles et dont je ne parlerai pas dans ce texte), et de procéder à l'installation. 
 

Étape 2 - Installation des extensions InterSystems

Ouvrez votre VSCode dans l'onglet Extensions et recherchez le paquet ObjectScript Extension Pack dans la boutique.

Installez le paquet complet.
 

Étape 3 - Configuration de votre VSCode pour vos instances

Une fois les extensions installées, vous devriez avoir un onglet InterSystems. Vous pouvez le sélectionner et cliquer sur "+" dans la section des serveurs, comme indiqué ci-dessous, et vous serez invité à fournir des informations sur la connexion, telles que l'hôte, le port, le nom d'utilisateur et le mot de passe.

Sinon, vous pouvez aller dans votre fichier VSCode general settings.json, que vous pouvez trouver en cliquant sur l'engrenage de gestion   sur le côté gauche en bas de l'écran, en sélectionnant les configurations, et en cliquant sur "Ouvrir les paramètres (JSON)" ("Open Settings (JSON)")    sur le côté droit en haut de l'écran.

Là, vous pouvez coller le fragment JSON suivant, en le modifiant pour qu'il pointe vers votre instance.

"intersystems.servers": {
        "[YOUR SERVER NAME]": {
            "webServer": {
                "scheme": "http",
                "host": "127.0.0.1",
                "port": 53472
            },
            "username": "_system"
        }

 

Étape 4.1 - Connexion à un serveur et à un espace de noms pour le développement local

Toujours dans l'onglet InterSystems, sélectionnez la section Explorer et cliquez sur le bouton "Choisir le serveur et l'espace de noms" (Choose server and namespace).

Vous devriez être invité à choisir parmi les serveurs ajoutés lors de la dernière étape, votre nom d'utilisateur et votre mot de passe, ainsi qu'un espace de noms.

Ensuite, toujours dans le même onglet, vous pouvez utiliser la section d'exploration (Explore) ou la section des projets (Projects) pour choisir les classes et/ou les projets que vous souhaitez exporter. Si vous choisissez ce type de développement, vous pouvez ouvrir les fichiers exportés dans un espace de travail VSCode et vous connecter à GitHub, par exemple.

Étape 4.2 - Connection à un serveur et à un espace de noms pour développer sur le serveur (ma préférence)

Ouvrez l'onglet Intersystèmes dans la section Serveurs et choisissez un serveur.

Vous pouvez choisir un projet et cliquer sur le crayon pour l'ouvrir en mode édition sur votre espace de travail ou ou sur l'œil pour l'ouvrir en mode lecture.

De même, vous pouvez choisir entre les mêmes options directement sur l'espace de noms pour ouvrir tous ses fichiers dans l'espace de travail (ma préférence)

Dans les deux cas, il se peut que l'on vous demande à nouveau un nom d'utilisateur et un mot de passe. 
 

Étape 5 - Codage

Dans l'onglet de l'explorateur, après la dernière étape, votre espace de travail ressemble à l'image ci-dessous.

Vous pouvez créer un fichier et de nouveaux dossiers en cliquant avec le bouton droit de votre souris sur un répertoire, en sélectionnant "nouveau fichier" ("new file") et en le nommant avec le modèle FOLDERNAME.FILENAME.cls. En d'autres termes, vous devez nommer les dossiers en séparant les noms par des points. Le nom précédant le dernier point sera le nom du fichier, et le nom suivant le dernier point sera l'extension des fichiers COS, cls.
Par exemple, vous pouvez nommer votre fichier comme dans l'image ci-dessous, "folderone.foldertwo.filename.cls", dans le dossier User, et cliquer sur "Enter".

Ainsi, le répertoire et le fichier suivants devraient être créés automatiquement.

Maintenant, vous êtes prêt à coder comme vous le feriez en Studio.

 

Quelques conseils supplémentaires

- Vous pouvez appuyer sur Ctrl+Shift+V pour ouvrir les fichiers .int.

- Attention: contrairement à Studio, Ctrl + S dans VSCode compilera le fichier en plus de l'enregistrer.

- Maintenant, je vais vous montrer la meilleure fonctionnalité que j'ai rencontrée jusqu'à présent en codant avec VSCode. C'est de l'or en barre. Imaginez que vous ayez une instance de développeur pour les premières phases d'un projet, une autre instance pour les tests avec vos clients, et peut-être même encore une autre pour la production. Il peut être fastidieux de migrer les fichiers et les modifications entre les instances de Studio. Cependant, si vous utilisez VSCode, c'est assez simple.

Dans l'onglet Explorateur (Explorer), ouvrez la source et le fichier cible. Par exemple, si j'ai un fichier définissant des  données persistantes, et que j'ai ajouté des champs sur mon serveur de développement, et que je souhaite les transférer sur mon serveur de production, j'ouvrirai le fichier de développement et le fichier de production pour les mêmes données persistantes (une discussion sur l'ouverture de plusieurs serveurs ou espaces de noms est abordée dans la rubrique suivante).

Une fois que les deux sont ouverts, ils apparaissent dans la section "Éditeurs ouverts" ("Open Editors").

Sélectionnez le fichier source avec le bouton droit de votre souris et cliquez sur "Sélectionner pour comparer" ("Select to compare"). Cliquez avec le bouton droit sur le fichier cible et choisissez "Comparer avec sélectionné" ("Compare with selected").
BOUM! Vous aurez alors ce magnifique fichier de comparaison ouvert, comme illustré ci-dessous.

La barre située à droite de l'écran indique les différences entre les fichiers, et vous pouvez l'utiliser pour naviguer simultanément entre eux. Les couleurs rouge et verte signifient que quelque chose diffère dans les fichiers. Le rouge signifie que le fichier source contient du texte qui ne figure pas dans le fichier cible. Le vert signifie que le fichier cible contient du texte qui ne figure pas dans le fichier source. 

Cliquez sur les flèches du milieu pour transférer les modifications de la source vers la cible.

En outre, cliquez sur la flèche biface dans le coin supérieur droit de l'écran pour changer les côtés des fichiers : la source sera la cible et vice versa.

En appuyant sur Ctrl+S lorsque l'éditeur est ouvert, les deux fichiers sont enregistrés et compilés.

- Vous pouvez ouvrir plusieurs instances et espaces de noms à la fois dans votre espace de travail, tant que votre ordinateur peut le gérer. Cependant, pour que vous puissiez vous faire une idée, ces dernières semaines, j'ai travaillé avec deux espaces de noms lourds provenant de différentes instances, Studio, Microsoft Teams (qui est scandaleusement lourd), et deux autres applications pour se connecter à la base de données et aux API, le tout en même temps, avec un ordinateur ayant la configuration suivante: 8 Go de RAM et CPU de 2,10 GHz. La seule chose qui a parfois été un peu lente, c'est Studio.

Poursuite de la discussion

J'aimerais parler de débogage avec VSCode. Je n'ai pas encore trouvé quelqu'un qui l'apprécie plus que les outils de débogage de Studio. Personnellement moi, je ne suis pas très habitué à utiliser les outils de débogage VSCode avec les produits InterSystems, et même si Studio est beaucoup plus lourd, je préfère le laisser ouvert lorsque j'ai besoin de déboguer. Comment combinez-vous ces technologies? Quels sont les outils que vous préférez?

0
0 83
InterSystems officiel Guillaume Rongier · Juin 10, 2024

Les mises à jour récentes d'Intersystems Language Server introduisent de nombreuses améliorations significatives visant à améliorer l'expérience et la productivité des développeurs. Je vais parler de certains des principaux ici, tandis que la liste complète, y compris de nombreuses corrections de bugs, peut être trouvée dans le CHANGELOG de Language Server.

Descriptions détaillées des erreurs de syntaxe

0
0 75
InterSystems officiel Sylvain Guilbaud · Mai 13, 2024

Comme la plupart d'entre vous l'ont déjà entendu, InterSystems a annoncé l'abandon de Studio avec la sortie d'IRIS 2023.2. Un plan de dépréciation détaillé a été révélé en novembre, et nous atteignons maintenant la première étape de ce plan. À partir des kits de préversion 2024.2, les kits Windows ne contiendront plus Studio. Cela signifie que les nouvelles installations utilisant ce kit n'installeront pas Studio et que la mise à niveau d'une instance existante vers la version 2024.2 (ou ultérieure) supprimera Studio du répertoire bin de l'instance.

0
0 50
Article Iryna Mykhailova · Mai 6, 2024 3m read

Salutations à toutes et à tous,

Faut-il connecter votre VSCode à un serveur d'InterSystems ?

Connaissez-vous déjè de cette option ?

Puisque beaucoup de gens commencent à utiliser VSCode comme IDE pour nos produits, j'ai pensé qu'il pourrait être bénéfique de fournir quelques petits trucs et astuces pour les aider à démarrer et à devenir plus productifs. C'est pourquoi je lance cette série de petits articles.

Quelques éclaircissements importants :

1. Il ne s'agit pas d'un tutoriel ou d'une ressource d'apprentissage formelle - si vous recherchez ce type de ressources, veuillez consulter cet excellent exercice en ligne, par exemple, ou examiner cette excellente session de notre dernier Sommet virtuel. 

2. Ces "trucs et astuces" ne sont pas mes inventions - ils sont généralement déjà documentés ou mentionnés quelque part, je voulais simplement les rassembler et peut-être fournir quelques conseils ou exemples supplémentaires. J'essaierai de faire référence à la source le cas échéant.

3. Bien que j'aie déjà noté quelques idées et sujets à aborder dans cette "série", je ne sais pas à quelle vitesse je pourrai les mettre en place, et je ne peux donc pas m'engager sur la fréquence à laquelle ils apparaîtront...

Voici le premier -

Parmi les choses que vous devez faire en premier dans VSCode, il y a la définition de vos connexions au serveur. Vous pouvez le faire manuellement dans le fichier JSON Settings de l'extension InterSystems Server Manger, ou en appuyant sur le signe (+) lorsque vous essayez de vous connecter à un serveur (et en répondant aux invites), mais si vous êtes sous Windows, vous pouvez simplement importer vos définitions de serveur depuis le Registre Windows.

En fait, cela fait partie de la documentation de l'extension (dans la page VSCode Marketplace de l'extension, dans le GitHub Repository Readme, et dans la page Détails de l'extension dans VSCode lui-même - c'est en fait le même texte...) -

Sous Windows, vous pouvez lancer Import Servers from Registry à partir de Command Palette pour créer des entrées de connexion pour toutes les connexions que vous avez précédemment définies avec le gestionnaire de serveur InterSystems (InterSystems Server Manager).

Lorsque vous installez une instance sur une machine Windows ou définissez des serveurs pour un client via l'outil Server Manger, le registre Windows est mis à jour.

Par exemple, j'ai eu un client avec 9 serveurs différents définis sur lesquels il pourrait vouloir se connecter (environnements Prod / Dev / Test, LAN vs. DMZ, etc.), tandis qu'un autre client en a encore plus (ou beaucoup plus). Faire cela un par un dans VSCode pourrait être fastidieux (et sujet à l'erreur humaine). 

Supposons qu'il y ait par exemple la situation suivante sur ma machine, telle qu'elle est définie dans l'InterSystems Server Manager -

Je peux utiliser l'option "Importation de serveurs à partir du registre" de l'extension InterSystems Server Manager.

Ouvrez simplement la palette de commandes (View -&gt Command Palette... or Ctrl+Shift+P) et tapez après >le caractère "InterSystems", ainsi vous verrez l'option suivante -

[Ou une autre option dans le commentaire ci-dessous]

Ensuite, on vous demandera un nom d'utilisateur pour vous connecter à l'un des serveurs (vous n'êtes pas obligé de le saisir si vous ne voulez pas qu'il soit enregistré, mais il vous sera demandé à chaque fois que vous vous connecterez), puis un mot de passe, puis si vous voulez enregistrer le mot de passe pour tous les autres serveurs (vous n'êtes pas obligé d'enregistrer le mot de passe du tout si vous ne voulez pas) et enfin toutes les définitions de serveurs seront ajoutées.

Par exemple, voici ce à quoi ressembleront les paramètres JSON après l'importation, d'après l'image du Gestionnaire de serveur ci-dessus (et en supposant que j'ai fourni un nom d'utilisateur de SuperUtilisateur) -

Voici un petit GIF démontrant ce processus rapide (il commence par la définition des 3 connexions de serveur par défaut, et se termine avec les 5 serveurs supplémentaires selon l'exemple ci-dessus) :

 

0
0 80
Article Lorenzo Scalese · Avr 25, 2024 7m read

En tant que modèle linguistique d'IA, ChatGPT est capable d'effectuer une variété de tâches telles que traduire, écrire des chansons, répondre à des questions de recherche et même générer du code informatique. Avec ses capacités impressionnantes, ChatGPT est rapidement devenu un outil populaire pour diverses applications, des chatbots à la création de contenu.
Mais malgré ses capacités avancées, ChatGPT n'est pas en mesure d'accéder à vos données personnelles. Mais malgré ses capacités avancées, ChatGPT n'est pas en mesure d'accéder à vos données personnelles. Ainsi, dans cet article, je vais démontrer les étapes suivantes pour construire une IA ChatGPT personnalisée en utilisant le LangChain Framework:

  • Étape 1: Chargement du document 

  • Étape 2: Division du document en blocs

  • Étape 3: Utilisation de l'incorporation pour des blocs de données et leur conversion en vecteurs

  • Étape 4: Enregistrement des données dans la base de données de vecteurs

  • Étape 5: Obtention des données (question) de l'utilisateur et leur the intégration

  • Étape 6: Connexion à VectorDB et recherche sémantique

  • Étape 7: Récupération des réponses pertinentes basées sur les requêtes de l'utilisateur et leur envoi au LLM(ChatGPT)

  • Étape 8: Obtention d'une réponse de la part de LLM et renvoi de celle-ci à l'utilisateur

  REMARQUE : Veuillez lire mon article précédent LangChain – Unleashing the full potential of LLMs (LangChain - Libération du plein potentiel des LLM) pour obtenir plus de détails sur LangChain et sur la façon d'obtenir la clé API OpenAI

Alors, commençons
     

Étape 1: Chargement du document 

Tout d'abord, il faut charger le document. Nous allons donc importer PyPDFLoader pour le document PDF 

ClassMethod SavePDF(filePath) [ Language = python ]
{
#pour un fichier PDF, il faut importer PyPDFLoader à partir du framework langchainfrom langchain.document_loaders import PyPDFLoader
# pour un fichier CSV, il faut importer csv_loader# pour un fichier Doc, il faut importer UnstructuredWordDocumentLoader# Pour le document texte, il faut importer TextLoader#importation de l'os pour définir la variable d'environnementimport os
#attribution de la clé API OpenAI à une variable d'environnement 
os.environ['OPENAI_API_KEY'] = "apiKey"#Init du lanceur
loader = PyPDFLoader(filePath)   
#Chargement du document 
documents = loader.load()
return documents
}

Étape 2: Division du document en blocs

Les modèles linguistiques sont souvent limités par la quantité de texte qui peut leur être transmise. Il est donc nécessaire de les diviser en blocs moins volumineux. LangChain fournit plusieurs utilitaires pour ce faire.

L'utilisation d'un séparateur de texte (Text Splitter) peut également contribuer à améliorer les résultats des recherches dans les répertoires de vecteurs, car, par exemple, des blocs moins volumineux ont parfois plus de chances de correspondre à une requête. Tester différentes tailles de blocs (et leur chevauchement) est un exercice intéressant pour adapter les résultats à votre cas d'utilisation.

ClassMethod splitText(documents) [ Language = python ]
{
#Afin de diviser le document, il faut importer RecursiveCharacterTextSplitter du framework Langchain  from langchain.text_splitter import RecursiveCharacterTextSplitter
#Init du séparateur de texte, définition de la taille des blocs (1000) et du chevauchement. = 0
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
#Division du document en plusieurs blocs
texts = text_splitter.split_documents(documents)
return texts
}

Étape 3: Utilisation d'incorporation pour des blocs de données et leur conversion en vecteurs

Les incorporations (embeddings) de texte sont le cœur et l'âme des outils de Large Language Operations.. Techniquement, nous pouvons travailler avec des modèles linguistiques en langage naturel, mais le stockage et l'extraction du langage naturel sont très inefficaces. 

Pour améliorer l'efficacité, il faut transformer les données textuelles en formes vectorielles. Il existe des modèles ML dédiés à la création d'intégrations à partir de textes. Les textes sont convertis en vecteurs multidimensionnels. Une fois ces données incorporées, nous pouvons les regrouper, les trier, les rechercher, etc. Nous pouvons calculer la distance entre deux phrases pour connaître leur degré de parenté. Et le plus intéressant, c'est que ces opérations ne se limitent pas à des mots-clés comme dans les recherches traditionnelles dans les bases de données, mais capturent plutôt la proximité sémantique de deux phrases. Cela rend le système beaucoup plus puissant, grâce à l'apprentissage automatique.
 

Les modèles d'incorporation de texte reçoivent la saisie de texte et renvoient une liste de flottants (embeddings), qui sont la représentation numérique du texte saisi. Les embeddings permettent d'extraire des informations d'un texte. Ces informations peuvent ensuite être utilisées, par exemple, pour calculer les similitudes entre des textes (par exemple, des résumés de films).

Les modèles d'incorporation de texte reçoivent la saisie de texte et renvoient une liste de flottants

    ClassMethod getEmbeddings(query) [ Language = python ]
    {
    #Obtention d'un modèle d'embeddings à partir du framework Langchainfrom langchain.embeddings import OpenAIEmbeddings
    #Definition d'embedding
    embedding = OpenAIEmbeddings()
    return embedding
    }
    

Étape 4: Enregistrement des données dans la base de données de vecteurs

    ClassMethod saveDB(texts,embedding) [ Language = python ]
    {
    #Obtention de la base de données Chroma à partir de langchainfrom langchain.vectorstores import Chroma      
    # Incorporation et stockage des textes# La fourniture d'un répertoire persistant (persist_directory) permet de stocker les embeddings sur le disque# par exemple dans le dossier myData du chemin d'accès à l'application en cours
    persist_directory = "myData"
    vectordb = Chroma.from_documents(documents=texts, embedding=embedding, persist_directory=persist_directory)
    #sauvegarde du document au niveau local
    vectordb.persist()
    vectordb = None
    }
    

Étape 5: Obtention des données (question) de l'utilisateur et leur the intégration

    ClassMethod getVectorData(query) [ Language = python ]
    {
    #REMARQUE: Il faudrait avoir le même embedding utilisée lorsque nous avons sauvegardé des donnéesfrom langchain.embeddings import OpenAIEmbeddings
    #obtention d'embeddings
    embedding = OpenAIEmbeddings()
    #saisie des données de l'utilisateur (paramètre)
    query = query
    #La suite du code...

Étape 6: Connexion à VectorDB et recherche sémantique

#code continue....     from langchain.vectorstores import Chroma
 persist_directory = "myData"## À présent, il est possible de charger la base de données persistante à partir du disque et de l'utiliser comme d'habitude. 
 vectordb = Chroma(persist_directory=persist_directory, embedding_function=embedding)
 return vectordb
 }

Étape 7: Récupération des réponses pertinentes basées sur les requêtes de l'utilisateur et leur envoi au LLM(ChatGPT)

La mémoire de conversation est la façon dont un chatbot peut répondre à de multiples requêtes à la manière d'un chat. Elle assure une conversation cohérente et, sans elle, chaque requête serait traitée comme une entrée totalement indépendante, sans tenir compte des interactions passées.

LLM avec et sans une mémoire de conversation. Les cases bleues représentent les assistances de l'utilisateur et les cases grises représentent les réponses des LLM. Sans mémoire de conversation (à droite), les LLM ne peuvent pas répondre en utilisant la connaissance des interactions précédentes.

La mémoire permet le  Large Language Model (LLM) de se souvenir des interactions précédentes avec l'utilisateur. Par défaut, les LLMs sont  sans état — ce qui signifie que chaque requête entrante est traitée indépendamment des autres interactions. La seule chose qui existe pour un agent sans état est la saisie actuelle, rien d'autre.


Le modèle ConversationalRetrievalChain est un modèle d'IA conversationnelle conçu pour extraire des réponses pertinentes sur la base des requêtes de l'utilisateur. Il fait partie de la technologie de l'équipe de Langchain. Le modèle utilise une approche basée sur la récupération, où il recherche des réponses préexistantes dans une base de données pour trouver la réponse la plus appropriée à une requête donnée. Le modèle est entraîné sur un grand ensemble de conversations pour apprendre les schémas et le contexte afin de fournir des réponses précises et utiles.

ClassMethod retriveResponse(vectordb) [ Language = python ]
{
from langchain.llms import OpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationalRetrievalChain
#La mémoire de conversation est la façon dont un chatbot peut répondre à de multiples requêtes.
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
#Le ConversationalRetrievalChain est un modèle d'IA conversationnelle conçu pour extraire des réponses pertinentes sur la base des requêtes de l'utilisateur.
qa = ConversationalRetrievalChain.from_llm(OpenAI(temperature=0), vectordb.as_retriever(), memory=memory)
return qa
}


Étape 8: Obtention d'une réponse de la part de LLM et renvoi de celle-ci à l'utilisateur 

ClassMethod getAnswer(qa) [ Language = python ]
{
#Obtention d'une réponse de la part de LLM et renvoi de celle-ci à l'utilisateur
getAnswer = qa.run(query)
return getAnswer
}

Pour plus de détails et de fonctionnalités, veuillez consulter mon application irisChatGPT 

Vidéo connexe

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/h9JoqbUKFBk" title="YouTube video player" width="560"></iframe>

Je vous remercie

1
0 313
Article Iryna Mykhailova · Avr 17, 2024 2m read

Bonjour - Récemment, j'ai enquêté sur une situation ennuyeuse lors de l'édition de classes ou de routines ObjectScript dans VSCode.

Ce qui m'arrivait, lorsque je tapais des lignes de code dans ma classe (par exemple, en ajoutant une nouvelle méthode, ou en modifiant la signature de la classe, ou un bloc de code), la syntaxe était rapidement vérifiée, reformatée et compilé - inévitablement (puisque je serais à mi-chemin de ma saisie), cela générerait des erreurs de compilation.

0
0 281
Question Cyril Grosjean · Fév 5, 2024

Bonjour,

Je voudrais savoir d'où vient l'origine des messages de warning commençant par "1 open user transaction found", j'en ai plusieurs :

J'ai un problème sur un flux et je pense que cela vient de ces warnings.

Edit : J'ai trouvé quelques informations sur le détail, je ne sais pas si ça pourra aider (j'ai censuré certaines parties confidentielles dans l'entreprise) :

11
0 113
Question David Marinkovic · Mars 11, 2024

Bonjour,

Je rencontre une situation embarassante avec mon environnement de développement InterSystems IRIS et Visual Studio Code.
Je n'arrive pas à pousser un fichier modifié à dessin, (hors push automatique lors du save) et si quelqu'un à la réponse mille merci.

Contexte :
J'ai une instance IRIS en cours d'exécution sur un serveur.
Mon poste client utilise Visual Studio Code avec l'extension InterSystems ObjectScript. 
Je me suis volontairement abstenu d'utiliser Git pour simplifier la problématique.

2
0 63
Question Cyril Grosjean · Fév 26, 2024

Bonjour,

Je cherche à pouvoir activer l'authentification sur IAM. J'ai activé via docker le RBAC via ces lignes :

KONG_ENFORCE_RBAC:'on'# Activation de RBACKONG_ADMIN_GUI_AUTH:basic-authKONG_ADMIN_GUI_SESSION_CONF:'{"secret":"SYS","storage":"kong","cookie_secure":false}'

J'ai également créé avec des requêtes curl un "consummer" :

curl -i -X POST http://localhost:8001/consumers \
  --data "username=superadmin"
curl -i -X POST http://localhost:8001/consumers/superadmin/basic-auth \
  --data "username=superadmin" \
  --data "password=superpassword"
4
0 94
Annonce Iryna Mykhailova · Fév 26, 2024

J'ai récemment réalisé que cela faisait bien trop longtemps que je n'avais pas parlé des dernières fonctionnalités de l'extension InterSystems ObjectScript pour Visual Studio Code.

J'ai le plaisir d'annoncer la version 2.12.1 de l'extension ObjectScript, contenant un certain nombre d'améliorations qui facilitent la vie des développeurs. Certains points forts sont décrits ci-dessous, y compris la fonctionnalité n°1 demandée par Global Summit : l'importation XML !

0
0 104
Article Pierre LaFay · Fév 16, 2024 3m read

Suite à 2 webinaires locaux, nous avons mis l'accent sur VS Code ["Intro" et "Beyond Basics"; en hébreu], J'ai préparé pour les participants quelques liens vers des ressources pertinentes que nous avons envoyées en guise de suivi. Je les partage également ici pour le bénéfice de la Communauté.
Vous êtes bien sûr tous invités à ajouter d'autres ressources utiles.

0
0 46
Question Cyril Grosjean · Déc 27, 2023

Bonjour,

Je cherche à pouvoir accéder à mes données contenus dans une RecordMap depuis SQLAlchemy, et même à toute table déjà créée auparavant.

Voici une partie de code :

TestBase:

classTestBase(DeclarativeBase):
    CreatedAt: Mapped[int] = mapped_column(TIMESTAMP, default=func.now())
    UpdatedAt: Mapped[int] = mapped_column(TIMESTAMP, default=func.now(), onupdate=func.current_timestamp())

 

Création de l'engine et binding des entités:

3
0 92
Article Iryna Mykhailova · Déc 27, 2023 2m read

Avez-vous déjà modifié des fichiers dans VS Code, mais avez-vous dû vérifier une valeur globale ou exécuter quelques commandes ObjectScript ? C’est désormais possible, sans aucune configuration requise ! Si vous disposez de l'extension vscode-objectscript version 2.10.0 ou ultérieure et que vous êtes connecté à InterSystems IRIS 2023.2 ou version ultérieure, vous pouvez ouvrir maintenant une connexion de terminal à votre serveur, quel que soit l'endroit où il se trouve.

Il existe trois manières d'ouvrir ce nouveau terminal :

3
0 216
Article Pierre LaFay · Jan 12, 2024 1m read

Au hasard d'un post sur le terminal Iris j'ai découvert une syntaxe que je souhaite partager avec la communauté :

Dans le shel de la session Iris il est possible d'exécuter une commande "OS" (shell pour linux & mac, CMD pour windows ) en précédant la commande par !.

Par exemple :

USER> ! ls /tmp -lh

Toutes les commandes fonctionnent parfaitement même encapsulées dans un sudo. ci dessous queqlues exemples :

Bien sur si vous êtes sur un serveur distant, les commandes shell s'exécutent sur ce dernier et non en local

2
0 84