
Lorsque vous créez des modèles multiphysiques et des applications de simulation, la COMSOL API vous permet d’écrire du code pour automatiser des opérations, d’ajouter des fonctionnalités personnalisées à vos applications et de les associer à des outils externes. La fonctionnalité Chatbot, introduite dans la version 6.3 de COMSOL Multiphysics®, vous connecte directement aux modèles OpenAI™ GPT, vous permettant de générer ou de déboguer le code de la COMSOL API. Par exemple, elle peut aider à convertir des tâches répétitives en des boucles For ou à localiser des erreurs de logique dans une méthode de modèle. Vous pouvez également utiliser la fenêtre Chatbot pour demander des conseils généraux sur la modélisation.
Dans cet article de blog, nous présenterons quelques exemples simples qui illustrent la manière dont cette fonctionnalité peut se révéler utile en tant qu’assistant de modélisation.
Utiliser la fenêtre Chatbot en conjonction avec la fenêtre Java Shell
La fenêtre Chatbot, qui a été élaborée pour une utilisation pratique dans COMSOL Multiphysics®, offre des informations spécifiques à la modélisation et à la simulation et élimine le besoin de copier-coller des messages depuis et vers des outils d’IA externes. A la place, vous pouvez facilement y ajouter des méthodes pour vérifier que ces dernières ne comportent pas de bugs ou exécuter le code API suggéré par le modèle d’IA, les résultats étant immédiatement visibles dans le Constructeur de modèles et la fenêtre Graphiques.
La fenêtre Java Shell, également introduite dans la version 6.3, fournit une invite de commande pour exécuter du code Java de manière interactive. Vous pouvez utiliser la fenêtre Java Shell pour exécuter du code généré par la fenêtre Chatbot. Nous vous montrerons comment procéder dans les exemples ci-dessous.
Pour en apprendre plus sur l’utilisation de la COMSOL API et la fenêtre Java Shell, consultez la section “Running Code in the Java Shell Window” de l’article du Centre d’Apprentissage Overview of the COMSOL API.
Etape 1: Activer la fenêtre Chatbot
La fenêtre Chatbot est disponible pour la version Windows® de COMSOL Multiphysics®. Elle est incluse dans la plateforme mais n’est pas installée par défaut. (Des instructions sur l’installation et la configuration de la fenêtre Chatbot sont disponibles dans cet article du Centre d’Apprentissage.)
Notez que:
- Pour utiliser la fonctionnalité Chatbot, vous devrez créer un compte OpenAI et obtenir une clé API OpenAI, ce qui nécessite généralement un abonnement payant. Actuellement, les grands modèles de langage (LLMs) OpenAI™ et Azure® OpenAI™ GPT-4 sont pris en charge.
- Concrètement le LLM n’est pas installé dans COMSOL Multiphysics® — la fenêtre Chatbot facilite simplement la communication avec le LLM.
Démos: utiliser la fenêtre Chatbot pour…
- Créer une géométrie
- Générer des annotations
- Déboguer un code
- Poser des questions relatives à la modélisation
- Identifier les erreurs de configuration des modèles
Créer une géométrie
Des connaissances de base en Java peuvent être utiles pour travailler avec la COMSOL API; en revanche, cela n’est souvent pas nécessaire pour utiliser la fenêtre Chatbot, car celle-ci intègre des fonctionnalités qui aident à comprendre la syntaxe Java et la structure du code.
Pour commencer, voyons comment la fenêtre Chatbot peut nous aider à créer une géométrie de cylindre. Cliquez d’abord sur le bouton Modèle vierge, qui permet de construire tous les aspects du modèle à partir de zéro à l’aide de l’API.
Ensuite, ouvrez la fenêtre Chatbot: dans l’onglet Accueil, allez dans le menu Fenêtres et sélectionnez Chatbot.
La fenêtre Chatbot s’ouvrira dans la partie inférieure droite de l’interface utilisateur.
Dans la fenêtre Chatbot, il y a trois options de sujets de chat: Géneral, Programmation, et Modélisation. Pour cet exemple, sélectionnez Programmation.
Saisissez maintenant le prompt Crée une géométrie de cylindre.
Cela générera du code pour créer un cylindre d’un rayon et d’une hauteur arbitraires, sans toutefois l’exécuter. Pour exécuter le code, vous devez l’envoyer à la fenêtre Java Shell.
Faites un clic-droit sur le bloc de code et sélectionnez Envoyer au Java Shell.
La fenêtre Java Shell s’ouvre alors avec une copie du même bloc de code.
Cliquez sur le bouton Exécuter en bas de la fenêtre Java Shell pour générer le cylindre.
Dans l’exemple présenté ici, le code suivant a été généré:
// Create a 3D geometry
model.geom().create("geom", 3);
// Add a cylinder to the geometry
model.geom("geom").feature().create("cyl", "Cylinder");
// Set cylinder properties: radius and height
model.geom("geom").feature("cyl").set("r", 1); // radius
model.geom("geom").feature("cyl").set("h", 5); // height
// Build the geometry
model.geom("geom").run();
Toutefois, gardez à l’esprit que la fenêtre Chatbot peut produire des variations légèrement différentes du code à chaque fois, en raison d’un faible degré d’aléa dans ses réponses.
Générer des annotations
Le modèle d’IA avec lequel le chatbot communique ne comprend pas tous les aspects de la COMSOL API. Cependant, en utilisant la fonctionnalité Enregistrer le code ou Enregistrer la méthode dans le Constructeur d’applications, nous pouvons le guider pour générer des suggestions de code utiles. L’exemple suivant vous montre comment ajouter des annotations à un modèle, puis à les développer en sollicitant l’appui de la fenêtre Chatbot. Pour commencer, ouvrez le tutoriel Pacemaker Electrode à partir de la Bibliothèque d’applications, sous la branche COMSOL Multiphysics > Electromagnetics.
Si le modèle n’a pas encore été résolu, cliquez sur le bouton Calculer. Le calcul prendra quelques secondes.
Ensuite, utilisez la fonctionnalité d’enregistrement de code intégrée pour apprendre à ajouter une annotation. Dans le ruban, allez dans l’onglet Développeur et cliquez sur Enregistrer la méthode pour démarrer l’enregistrement.
Il vous sera demandé de stocker l’enregistrement sous le nom method1, ce qui convient à notre objectif; vous pouvez renommer cette méthode si vous le souhaitez. Le Constructeur de modèles est maintenant encadré en rouge, indiquant qu’un enregistrement est en cours.
Dans l’arborescence du modèle, faites un clic-droit sur Groupe de graphiques 3D 3 et sélectionnez Annotation.
Dans la fenêtre de Réglages du noeud Annotation, dans le champ Texte, tapez eval(V). Cela permet d’évaluer et d’afficher la valeur local du champ potentiel électrique. Ensuite, pour le réglage Position, entrez 0.001, 0.002, 0.003 pour les coordonnées x, y, et z, respectivement.
Cliquez sur le bouton Afficher pour créer l’annotation.
Dans l’onglet Développeur, cliquez sur Arrêter l’enregistrement.
Cliquez maintenant sur le bouton Constructeur d’applications et double-cliquez sur le noeud method1 au niveau de l’arborescence. Le code enregistré s’affiche alors dans l’éditeur de méthodes.
Copiez ce code et revenez au Constructeur de modèles.
Avant d’utiliser la fenêtre Chatbot pour créer automatiquement des noeuds Annotation, vous devez supprimer le noeud Annotation qui vient d’être généré pour éviter les conflits. Dans l’arborescence du modèle, faites un clic-droit sur le noeud Annotation et sélectionnez Supprimer.
Dans la fenêtre Chatbot, sélectionnez l’option Programmation et tapez les instructions suivantes, en collant le code que vous avez copié dans l’éditeur de méthodes:
Voici comment créer une annotation dans COMSOL Multiphysics:
model.result(“pg3”).create(“ann1”, “Annotation”);
model.result(“pg3”).feature(“ann1”).set(“posxexpr”, 0.001);
model.result(“pg3”).feature(“ann1”).set(“posyexpr”, 0.002);
model.result(“pg3”).feature(“ann1”).set(“poszexpr”, 0.003);
model.result(“pg3”).feature(“ann1”).set(“text”, “eval(V)”);
Peux-tu créer une boucle qui placerait ces annotation en 10 endroits le long d’une ligne allant de (x,y,z)=(0,0,-0.02) à (x,y,z)=(0,0,0).
Appuyez sur la touche Entrée ou cliquez sur le bouton Soumettre.
Faites un clic-droit sur la zone contenant le code généré et sélectionnez Envoyez au Java Shell.
Dans la fenêtre Java Shell, cliquez sur Exécuter pour ajouter les annotations.
Essayons maintenant quelque chose d’un peu plus avancé. Commencez par supprimer tous les noeuds Annotation générés. Pour ce faire, maintenez la touche Shift enfoncée pour sélectionner plusieurs noeuds, puis cliquez avec le bouton droit et choisissez Supprimer dans le menu contextuel.
Allez dans la fenêtre Chatbot et tapez le prompt:
A la place, crée plutôt des annotations dans un motif hélicoïdal centré le long de la même ligne avec un rayon d’hélice de 0.0025.
Cliquez sur le bouton Soumettre ou appuyez sur la touche Entrée.
Maintenant, répétez la procédure précédente. Faites un clic-droit sur le code généré, envoyez-le au Java Shell, et cliquez sur Exécuter pour afficher les annotations.
Ensuite, augmentons la densité des annotations. Supprimez d’abord les 10 noeuds Annotation qui ont été créés. Puis, utilisez le prompt suivant dans la fenêtre Chatbot:
Maintenant, double la fréquence et crée 20 annotations.
Une fois de plus, faites un clic-droit sur le code généré et envoyez le au Java Shell, qui apparaîtra comme suit.
Cliquez sur Exécuter pour afficher les annotations.
Ces exemples vous donnent un aperçu de la manière dont la fonctionnalité chatbot peut être utilisée pour résoudre très rapidement des tâches d’automatisation sophistiquées. En utilisant une combinaison des fonctionnalités Enregistrer la méthode (ou Enregistrer le code) et les prompts dans la fenêtre Chatbot, vous pouvez guider les réponses du chatbot afin d’augmenter rapidement la complexité de votre code. Pour une utilisation répétée du même code, au lieu d’utiliser la fenêtre Java Shell, vous pouvez saisir le code dans une méthode dans l’éditeur de méthodes. Notez également que nous aurions pu enregistrer la suppression des noeuds Annotation et automatiser cette partie du processus.
Déboguer un code
Une autre utilisation de la fonctionnalité chatbot consiste à détecter les bugs subtils dans votre code qui vont au-delà de simples erreurs de syntaxe. Pour illustrer cela, utilisons l’application de simulation Tuning Fork de la bibliothèque d’applications, disponible sous COMSOL Multiphysics > Applications. Le tutoriel associé à cette application ne nécessite aucun produit complémentaire.
Accédez au Constructeur d’applications et, dans la branche Méthodes, double-cliquez sur la méthode setMaterial.
Pour trouver les erreurs de syntaxe, vous pouvez cliquer sur le bouton Vérifier la syntaxe dans l’onglet Méthode. Cette fonctionnalité n’utilise pas la fenêtre Chatbot mais réalise une vérification au niveau du compilateur. A l’aide du compilateur Java intégré, l’éditeur de méthodes compile automatiquement une méthode quand, par exemple, vous quittez une fenêtre ou enregistrez votre application ou votre modèle.
Pour trouver des bugs dans le code qui ne sont pas liés à la syntaxe, la fenêtre Chatbot peut être utile.
Introduisons un bug dans le code pour montrer comment cette fonctionnalité peut être utilisée. Dans la méthode setMaterial, remplacez la référence au matériau mat4 par mat3. Désormais, quand un utilisateur sélectionne le matériau iron, avec l’étiquette “mat4”, l’application de simulation utilisera à la place les propriétés du matériau copper, avec l’étiquette “mat3”.
La méthode est maintenant associée à la fenêtre Chatbot avec le prompt prédéfini I need help finding potential bugs in setMaterial, ignoring any code style issues.. (Les deux autres options du sous-menu Envoyer au Chatbot, Conversation à propos de setMaterial et Suggérer des améliorations à setMaterial, ont des prompts prédéfinis différents.)
Appuyez sur la touche Entrée ou cliquez sur le bouton Soumettre.
La fenêtre Chatbot détecte l’erreur et affiche le message suivant:
**Duplicate Material Selection for Copper and Iron:**
– Both “copper” and “iron” are setting the selection for `mat3`. This might be intentional, but if different materials are expected, this is a bug.
Il souligne également deux autres problèmes potentiels. En revanche, dans ce cas, il s’agit de faux positifs, car la fenêtre Chatbot n’a pas reçu toutes les informations concernant les autres méthodes et fonctionnalités de l’application.
Dans ce cas, le bug était relativement facile à détecter sans l’aide de la fenêtre Chatbot. Toutefois, imaginez que l’application prenne en charge 40 ou 50 matériaux au lieu de seulement cinq; auquel cas, quand vous travaillez avec des blocs de code plus longs, utiliser la fenêtre Chatbot peut considérablement accélérer le processus de débogage.
Vous pouvez également demander des conseils de modélisation dans la fenêtre Chatbot. Supposons que nous sommes novices dans le domaine de la modélisation électrostatique et que nous souhaitons savoir quelles conditions aux limites sont importantes pour ce type de modèles. Pour cela, dans la fenêtre Chatbot, sélectionnez le sujet Modélisation. Entrez le prompt:
Quelles sont les conditions aux limites les plus importantes pour l’électrostatique?
La fenêtre Chatbot donne une réponse assez satisfaisante. Notez, cependant, qu’elle mentionne le type “Conditions aux limites mixtes”. Bien que cette condition aux limites soit disponible dans le logiciel COMSOL®, elle nécessite le module AC/DC et porte un nom différent: Capacité distribuée.
En général, pour les questions d’introduction à la modélisation, la fenêtre Chatbot peut constituer un point de départ utile. En revanche, pour les sujets plus avancés, il est conseillé de consulter également la Documentation COMSOL (disponible aussi dans le logiciel via la fenêtre Aide) et les manuels pertinents sur le sujet. Si vous sélectionnez l’option Général au lieu de Programmation ou Modélisation, vous pouvez soumettre des prompts sur n’importe quel sujet, y compris ceux qui ne sont pas liés à COMSOL Multiphysics®.
Identifier les erreurs de configuration des modèles
Vous pouvez également utiliser la fenêtre Chatbot pour détecter des erreurs simples dans la configuration de votre modèle. Bien que la fonctionnalité chatbot ne comprenne pas tous les aspects de la modélisation et de la simulation, elle peut tout de même s’avérer utile; par exemple, elle peut identifier les fautes de frappe dans les expressions utilisées dans le Constructeur de modèles.
Pour essayer cette fonctionnalité, ouvrez le tutoriel Laser Heating of a Silicon Wafer de la Bibliothèque d’applications sous COMSOL Multiphysics > Heat Transfer. Ce modèle, qui illustre une simulation transitoire d’un laser se déplaçant sur une plaquette de silicium, ne nécessite aucun produit complémentaire.
Introduisons maintenant une faute de frappe volontaire dans l’une des définitions de variables. L’expression qui définit la distance par rapport au point focal s’écrit correctement comme suit:
sqrt((x-x_focus)^2+(y-y_focus)^2)
Nous remplacerons celle-ci par l’expression incorrecte, où le second terme utilise par erreur x_focus au lieu de y_focus:
sqrt((x-x_focus)^2+(y-x_focus)^2)
Enregistrez, ensuite le fichier en sélectionnant Enregistrez sous dans le menu Fichier et en choisissant l’option Modèle au format Java (.java).
Ceci créera un fichier texte avec une extension .java, qui peut être compilé en un fichier .class Java pour être utilisé comme composant Java autonome. Cette approche permet d’exécuter COMSOL Multiphysics® sans l’interface utilisateur COMSOL Desktop®. Le fichier .java contient l’ensemble de la configuration du modèle via le code API. Dans ce cas, nous utiliserons le fichier uniquement pour identifier les problèmes potentiels dans la définition du modèle. (Notez que l’utilisation de cette fonctionnalité n’a aucun rapport avec la compilation d’applications de simulation avec COMSOL Compiler™.)
Ouvrez le fichier .java dans un éditeur de texte, copiez le code et collez-le dans la fenêtre Chatbot, en utilisant un prompt tel que:
Peux-tu trouver des erreurs dans ce modèle:
En effet, le premier problème détecté par la fenêtre Chatbot est la faute de frappe que nous venons d’introduire. Il indique:
Here are a few potential issues in the provided code:
1. **Duplicate Variable Definition**: The variable `r_focus` is defined twice with different expressions. The first definition is correct:
“`java
model.component(“comp1”).variable(“var1”).set(“r_focus”, “sqrt((x-x_focus)^2+(y-y_focus)^2)”);
“`
The second definition at the end of the method seems incorrect:
“`java
model.component(“comp1”).variable(“var1”).set(“r_focus”, “sqrt((x-x_focus)^2+(y-x_focus)^2)”);
“`
Ensure you use the correct expression for `r_focus`.
Ce type de débogage peut être utile pour détecter les petites erreurs dans la configuration du modèle. Pour les modèles plus complexes, vous pouvez supprimer les redondances et simplifier le code avant d’enregistrer le modèle sous forme de fichier .java. Pour cela, vous pouvez compacter l’historique afin que le fichier ne contienne que les paramètres actuels du modèle (Fichier > Compacter l’historique).
Prochaine étape
Dans cet article de blog, nous avons mis en avant les capacités de la fonctionnalité Chatbot à l’aide du tutoriel Pacemaker Electrode. Si vous souhaitez explorez vous-même le fichier utilisé pour créer l’exemple Pacemaker Electrode, cliquez sur le bouton ci-dessous.
Pour aller plus loin
Vous souhaitez en savoir plus sur le Constructeur d’applications et la COMSOL API? Consultez la documentation associée:
- Démarrez avec l’Application Builder
- Apprenez-en davantage à propos de la programmation à l’aide de l’API COMSOL
Microsoft et Azure sont des marques commerciales du groupe de sociétés Microsoft. OpenAI est une marque commerciale de OpenAI, Inc. Oracle et Java sont des marques déposées de Oracle et/ou ses sociétés affiliées.
Commentaires (0)