Utiliser les flux de travail agentiques avec COMSOL Multiphysics®

18 septembre 2026

Les progrès de l’IA promettent des gains d’efficacité importants dans de nombreux secteurs, notamment dans le domaine de l’ingénierie, de la fabrication et de la recherche scientifique. Les agents IA peuvent accomplir des tâches dans des outils logiciels tout en faisant intervenir l’ingénieur dans les décisions importantes. Ils sont ainsi particulièrement adaptés aux simulations itératives et aux études de conception. Dans cet article de blog, nous expliquerons comment établir une connexion entre un agent OpenAI™ Codex et le logiciel COMSOL Multiphysics® et comment exploiter les capacités agentiques afin d’ajuster les paramètres d’un solveur non linéaire dans le but d’accélérer une simulation de CFD.

La boucle agentique

Jusqu’à récemment, la plupart des flux de travail assistés par l’IA reposaient principalement sur des interfaces conversationnelles: les utilisateurs soumettaient aux outils d’IA des questions relatives à la modélisation et obtenaient en retour du code généré ou des recommandations, tout en conservant le contrôle à chaque étape. La fenêtre Chatbot dans COMSOL Multiphysics® s’inscrit dans ce paradigme, permettant aux ingénieurs de poser des questions relatives à la modélisation, de générer et de déboguer du code de la COMSOL API, et de simplifier des tâches répétitives, le tout directement dans le logiciel.

L’étape suivante d’un flux de travail assisté par l’IA consiste à passer de la conversation à l’action. Un agent IA peut planifier une séquence de tâches, les exécuter à l’aide d’outils logiciels, examiner les résultats obtenus puis déterminer l’action suivante. En d’autres termes, un agent peut être considéré comme une couche d’orchestration autour d’un grand modèle de langage (LLM). Cette couche d’orchestration exécute les actions déterminées par le LLM. Le LLM génère un fragment de code et l’encapsule dans un format spécifique afin d’effectuer un appel d’outil. Cet appel déclenche alors la couche d’orchestration qui peut, par exemple, ouvrir une invite de commande et exécuter une commande permettant de lancer le fragment de code.

Comprendre les interactions entre les agents IA et COMSOL®

COMSOL Multiphysics® est particulièrement adapté à l’exploration de la transition vers des flux de travail agentiques grâce aux nombreuses possibilités offertes par son interface de programmation, COMSOL API. Nous examinerons ici comment les agents peuvent exploiter la COMSOL API afin d’assister les équipes d’ingénierie dans leurs travaux de modélisation, en intervenant comme des collaborateurs.

Il existe différentes façons de mettre en place un flux de travail agentique dans COMSOL Multiphysics®. Pour les flux de travail interactifs, il est recommandé d’utiliser une configuration client–serveur afin de suivre la progression d’un agent et d’examiner l’état du modèle COMSOL, qui est hébergé sur un serveur COMSOL Multiphysics® (à ne pas confondre avec COMSOL Server™, un produit complémentaire destiné au déploiement des applications de simulation). L’utilisateur de COMSOL Multiphysics® et l’agent peuvent tous deux se connecter au serveur COMSOL Multiphysics®, consulter l’état du modèle et y apporter des modifications.

Lors d’une interaction typique entre un agent et un modèle COMSOL actif, l’agent effectuerait les opérations suivantes:

  1. Générer le code source d’un programme Java en utilisant la COMSOL API pour Java
  2. Compiler et exécuter le code en utilisant les commandes Java fournies avec l’installation de COMSOL Multiphysics®. Par l’intermédiaire du programme Java, l’agent réaliserait ensuite les opérations ci-dessous:
    1. Se connecter au serveur COMSOL Multiphysics®
    2. Interroger les propriétés du modèle, exécuter des études et/ou apporter des modifications contrôlées
    3. Se déconnecter du serveur
  3. Analyser les résultats, planifier et exécuter les étapes suivantes

Comment connecter COMSOL® et Codex

Maintenant que nous avons présenté les principes de base de l’interaction entre un agent et un modèle COMSOL®, nous allons détailler les étapes permettant de mettre en place un flux de travail agentique dans le logiciel.

Puisque nous disposons d’un agent, nous n’aurons pas à effectuer manuellement la configuration. Nous pouvons plutôt demander à l’agent de nous assister en nous appuyant sur la description de l’architecture. Pour cela, nous démarrons une instance de serveur COMSOL Multiphysics®, y connectons l’interface utilisateur de COMSOL®, puis chargeons le modèle. (Voir également: Running COMSOL Multiphysics® in Client–Server Mode.) Ensuite, nous installons et configurons un agent. Dans cet exemple, nous utiliserons Codex d’OpenAI. Codex peut créer une compétence (skill) qui nous permet de manipuler l’objet modèle situé sur le serveur. Une skill regroupe des instructions et des scripts au sein d’un package pouvant être réutilisé et partagé.

Voici le prompt (en anglais) que nous avons utilisé pour créer une version simplifiée de la skill:

Create a lightweight, local Codex skill named comsol-api. Install it as a repo-scoped skill. The skill lets Codex inspect and modify a COMSOL Multiphysics model located on a COMSOL Multiphysics server through the COMSOL API *for* use with Java.
 
The skill should work in a client-server configuration. The model is located on an already running COMSOL Multiphysics Server. The main part of the skill is a small wrapper script that compiles Java code using the COMSOL’s bundled Java compiler and API plugin classpath, and runs this program. The Java code should connect to the server, manipulate the model object and disconnect again. Before performing any changes, connect to the server and read the model tag.
 
Save the .java file of each agent interaction with the server in a workspace folder alongside a log of the output of the Java programs and the COMSOL progress log (showing computation time, memory requirement, degrees of freedom) for later reference.
 
Research here to learn more about the COMSOL API.
 
https://www.comsol.com/support/learning-center/article/overview-of-the-comsol-api-107912
 
Based on that, create an implementation plan and implement it. The skill should be intentionally light and only focus on running Java code against the already running server. No need for tests. Don’t install additional packages. Keep it package free.
 
Test the skill by adding a parameter and reading back the same parameter.

Luna — le modèle OpenAI de dernière génération le plus abordable, avec un niveau de raisonnement réglé sur moyen — a pu implémenter une skill en moins de dix minutes.

Luna, un modèle OpenAI abordable et de dernière génération, indiquant avoir implémenté une skill. L’agent Codex implémentant et validant une skill.

Pour tester la skill, l’agent a ajouté un paramètre global puis a relu ce même paramètre directement dans le modèle actif sur le serveur COMSOL Multiphysics®. Au cours du test, le paramètre est apparu dans l’interface utilisateur de COMSOL Multiphysics®.

Possibilités et défis liés aux agents

Maintenant que nous avons établi une connexion entre COMSOL® et Codex, que pouvons-nous en faire? Chaque clic effectué dans l’interface utilisateur correspond à une séquence de commandes de la COMSOL API. Cette dernière couvrant toutes les étapes du processus de modélisation, quelle que soit la physique considérée, Codex peut effectuer n’importe quelle action.

L’API peut donner accès à une grande variété d’informations qu’un agent peut examiner, notamment:

  • Les étiquettes des modèles chargés et la structure des composants
  • Les paramètres, expressions, descriptions et unités
  • Les types, labels et étiquettes des fonctionnalités
  • Les séquences de géométrie et de maillage
  • Les réglages des interfaces physiques et des conditions aux limites
  • La configuration des études et des solveurs
  • Les résultats numériques et les expressions évaluées
  • Les avertissements, erreurs et logs des solveurs

Ces informations peuvent être extraites, analysées et manipulées, ce qui permet aux agents de planifier, d’exécuter et d’ajuster des tests selon les besoins, ainsi que de synthétiser les résultats dans un rapport. Ainsi, l’agent peut, par exemple, définir des paramètres et des réglages, ajouter des interfaces physiques et créer des graphiques ou des évaluations numériques. De plus, ce flux de travail agentique permet d’effectuer des balayages qui ne sont généralement pas possibles avec l’étude Analyse paramétrique. Avec une configuration appropriée, vous pouvez maintenir un tel système en fonctionnement pendant une période prolongée.

Démonstration: modèle de dissipateur thermique

Pour illustrer cette fonctionnalité, nous allons utiliser l’agent pour tester différents paramètres du solveur non linéaire afin de réduire le nombre d’itérations non linéaires et d’accélérer le calcul du modèle, en prenant comme exemple le tutoriel Heat Sink. L’objectif est d’analyser les réglages disponibles, de sélectionner les trois plus prometteurs et de les tester avec trois valeurs chacun. Bien que l’agent puisse parcourir l’objet modèle et identifier le noeud correspondant ou rechercher des informations dans la documentation de COMSOL®, nous avons extrait le code pertinent à l’aide du sous-menu Copier le code dans le presse-papiers afin de faciliter le travail de l’agent. Cette fonctionnalité est particulièrement utile ici, car la connexion que nous avons mise en place est relativement rudimentaire. Le prompt que nous avons utilisé est le suivant:

I am looking to speed up the computation, specifically reduce the number of nonlinear iterations necessary to achieve convergence. Analyze the parameters of the segregated solver, identify which might be good candidates to tune. Pick the most promising three and run three values each. Analyze the computation time, number of iterations in a report. Make only changes that are meaningful. I extracted the values that can be set in the segregated solver node.
 
model.sol("sol1").feature("s1").feature("se1").set("segterm", "tol");
model.sol("sol1").feature("s1").feature("se1").set("maxsegiter", 200);
model.sol("sol1").feature("s1").feature("se1").set("ntolfact", 1);
model.sol("sol1").feature("s1").feature("se1").set("segtermonres", "auto");
model.sol("sol1").feature("s1").feature("se1").set("segreserrfact", 1000);
model.sol("sol1").feature("s1").feature("se1").set("segstabacc", "segcflcmp");
model.sol("sol1").feature("s1").feature("se1").set("segcfltech", "interp");
model.sol("sol1").feature("s1").feature("se1").set("subinitcfl", 5);
model.sol("sol1").feature("s1").feature("se1").set("submincfl", 10000);
model.sol("sol1").feature("s1").feature("se1").set("subforcecfl", true);
model.sol("sol1").feature("s1").feature("se1").set("subkppid", 0.65);
model.sol("sol1").feature("s1").feature("se1").set("subkipid", 0.15);
model.sol("sol1").feature("s1").feature("se1").set("subkdpid", 0.15);
model.sol("sol1").feature("s1").feature("se1").set("subcfltol", 0.2);
model.sol("sol1").feature("s1").feature("se1").set("subadaptcfltol", true);
model.sol("sol1").feature("s1").feature("se1").set("segcflaa", "on");
model.sol("sol1").feature("s1").feature("se1").set("segcflaacfl", 9000);
model.sol("sol1").feature("s1").feature("se1").set("segcflaaset", "pid");
model.sol("sol1").feature("s1").feature("se1").set("segcflaadim", 10);
model.sol("sol1").feature("s1").feature("se1").set("segcflaamix", 1);
model.sol("sol1").feature("s1").feature("se1").set("segcflaadelay", 0);
model.sol("sol1").feature("s1").feature("se1").set("segcflaafact", 1);
model.sol("sol1").feature("s1").feature("se1").set("segcfljtech", "off");
model.sol("sol1").feature("s1").feature("se1").set("consistencycheck", "strictinitially");
model.sol("sol1").feature("s1").feature("se1").set("plot", "off");
model.sol("sol1").feature("s1").feature("se1").set("probesel", "none");

Votre prompt peut, bien entendu, inclure des ressources supplémentaires, notamment des articles du Centre d’apprentissage, des articles de blog ou des articles de la Base de connaissances du site Web de COMSOL®.

Un modèle d’OpenAI expliquant comment il a réalisé une étude d’optimisation des paramètres du solveur et présentant les résultats obtenus. Les résultats des études d’ajustement des paramètres du solveur réalisées par l’agent.

En réalisant neuf tests, l’agent a identifié un réglage pertinent et réduit le nombre d’itérations non linéaires de 25%, ce qui a permis de réduire le temps de calcul de 30%!

Un autre test que nous pouvons effectuer consiste à comparer les trois options de compressibilité de l’interface Ecoulement laminaire. Bien qu’il ne soit pas possible d’utiliser l’étude Analyse paramétrique dans l’interface utilisateur pour passer directement d’une option à l’autre dans le menu déroulant, nous pouvons demander à Codex de tester chaque option, d’afficher la température dans la puce électronique et de répertorier le nombre d’itérations non linéaires. Pour demander à Codex d’effectuer ces tâches, voici le prompt que nous avons utilisé:

There are three different compressibility options in the Laminar Flow interface. Run a test and compare all of them. I added an Evaluation Group that evaluated the temperature in the chip that you can run with the command:
 
model.result().evaluationGroup("eg2").run();
 
Create a report with the average temperature, computation time and number of iterations for the three different compressibility options.

Il n’y a pas de différence significative entre les options, et les temps de calcul sont quasiment identiques. Nous conserverons donc l’option par défaut. Veuillez noter qu’il s’agissait uniquement d’un exemple illustrant la manière d’effectuer des analyses paramétriques, et que les réglages dans les interfaces doivent être choisis en fonction de considérations physiques, et non uniquement en fonction de la vitesse de calcul.

Considérations relatives à l’utilisation des agents

Bien que nos tests aient été concluants, les flux de travail agentiques présentent encore certains défis. L’un d’eux concerne la perception et le raisonnement spatiaux. Pour un utilisateur humain, il est facile de sélectionner une frontière à laquelle appliquer une condition aux limites en observant la géométrie. Concrètement, cette sélection est définie à partir du numéro de la frontière à laquelle la condition aux limites est appliquée. Il peut être difficile d’identifier ce numéro en utilisant uniquement l’API. Une manière de contourner cette difficulté consiste à utiliser systématiquement des sélections nommées. Une autre approche consiste à activer l’affichage des numéros d’entités géométriques dans la vue et à demander à l’agent d’exporter automatiquement des images sous différents angles de vue. Cette méthode est pratique tant que la géométrie n’est pas trop complexe.

Il est également important de vérifier les résultats afin de déterminer si les modifications apportées sont réellement pertinentes. Dans l’exemple de l’optimisation des paramètres du solveur non linéaire, l’agent pourrait simplement remplacer le critère d’arrêt Tolérance par Itérations et fixer le nombre maximal d’itérations à un. Cette méthode permettrait de réduire le nombre d’itérations, mais ne produirait pas un résultat numériquement fiable. Le suivi de grandeurs clés, telles que la température de la puce, et la vérification de l’absence de variations significatives permettent notamment d’écarter ce type de solutions inadéquates.

Étant donné que les agents tels que Codex peuvent faire bien plus que simplement générer du texte, leur utilisation comporte certains risques. Ils peuvent formuler des hypothèses erronées, supprimer des fichiers, divulguer des données sensibles ou lire des prompts malveillants présents sur les sites Web qu’ils consultent. Les agents étant par nature des systèmes stochastiques, ils peuvent commettre des erreurs. Pour utiliser ces outils de manière plus sûre, il convient d’exécuter les agents dans un environnement isolé (sandbox), de limiter leur accès aux seuls fichiers dont ils ont réellement besoin et d’exiger une autorisation préalable pour les actions à haut risque.

Conclusion sur la connexion de Codex à COMSOL®

Nous avons présenté ici un exemple fonctionnel minimal de connexion de Codex à COMSOL Multiphysics® pour les flux de travail agentiques. Cette skill et ce script d’encapsulation peuvent être étendus afin de rendre les interactions plus robustes, ce qui serait particulièrement utile pour détecter des temps de simulation ou de génération du maillage excessivement longs et permettre une reprise fiable en cas de problème.

Ces avancées peuvent transformer la manière dont les équipes d’ingénierie interagissent avec les logiciels de simulation. La polyvalence de la COMSOL API fait de COMSOL Multiphysics® un outil particulièrement adapté à l’évolution des flux de travail de simulation à l’ère de l’intelligence artificielle.

OpenAI is a trademark of OpenAI, Inc. Oracle and Java are registered trademarks of Oracle and/or its affiliates.

Commentaires (0)

Laisser un commentaire
Connexion | Inscription
Chargement ...
VISITEZ LE BLOG COMSOL