Stage Développeur IA : Agent Conversationnel pour la 3DEXPERIENCE
Dassault Systèmes, Vélizy-Villacoublay
Contexte et Exigences Fonctionnelles
Ce stage s'inscrit dans le programme "Virtual Companion" de Dassault Systèmes. La mission était de développer un agent intelligent de A à Z. Le projet reposait sur trois exigences fonctionnelles fondamentales :
- Comprendre : Interpréter des requêtes complexes en langage naturel, même si elles contiennent plusieurs intentions.
- Agir : Exécuter de manière fiable des actions concrètes et pertinentes dans l'application via des web services.
- Répondre : Fournir un feedback clair et systématique à l'utilisateur, qu'il s'agisse d'un succès ou d'une erreur.
Mon Rôle de Référent IA : Autonomie et Architecture
En tant que seul profil spécialisé en IA sur ce projet, j'ai eu l'opportunité et la responsabilité de le piloter de A à Z. Mon rôle a dépassé celui de simple développeur pour endosser celui de référent technique IA. J'ai mené ce projet en grande autonomie, en faisant les choix d'architecture, en sollicitant de mon propre gré les équipes expertes pour débloquer des situations complexes, et en assurant la montée en compétence de mon équipe sur ces nouvelles technologies.
Le Choix d'une Architecture Multi-Agents
L'un des premiers choix structurants a été de définir l'architecture de l'agent. L'objectif était de créer un système fiable et scalable, capable de gérer un nombre croissant d'outils. Après étude, j'ai écarté l'approche à agent unique (simple mais peu fiable avec de nombreux outils) pour implémenter une architecture multi-agents, inspirée par les meilleures pratiques internes. Bien que plus complexe, cette approche garantit la robustesse en spécialisant les tâches : un agent "routeur" analyse la requête et la délègue à des sous-agents experts, chacun gérant un périmètre d'outils restreint.
Implémentation Technique : un Écosystème Complet
Architecture Multi-Agents avec LangGraph
Le cœur du système est un graphe d'états cyclique implémenté avec LangGraph. Cette boucle de raisonnement permet une autonomie supervisée où plusieurs composants collaborent :
- Un agent "Planificateur" (appel LLM) qui analyse la requête pour en extraire et segmenter les intentions (s'il en existe plusieurs). Il identifie ainsi le domaine de chaque tâche et détermine le sous-agent expert à solliciter.
- Un nœud "Orchestrateur" (logique Python pure) qui suit ce plan et distribue les tâches aux agents compétents.
- Des sous-agents spécialisés (appel LLM), chacun équipé d'outils spécifiques. Ils réalisent une tâche précise en utilisant la technique du Tool Calling pour décider quelle fonction appeler.
- Un nœud "Synthétiseur" (Joiner) qui agrège les résultats des outils pour formuler une réponse finale à l'utilisateur.
Prompt Engineering et Intégration d'APIs
La fiabilité de l'agent repose sur deux piliers techniques que j'ai mis en place : le contrôle du LLM et l'intégration aux services de l'entreprise.
1. Prompt Engineering et Contrôle du LLM
Chaque appel au LLM (Mistral, via une API interne de type OpenAI) est minutieusement structuré grâce à des chaînes de prompts (PromptTemplate). Pour garantir des réponses fiables et exploitables, j'utilise Pydantic pour définir des schémas de sortie JSON stricts directement dans le prompt. Le modèle est ainsi contraint de répondre dans un format prévisible, que je peux ensuite parser et valider facilement.
2. Intégration aux Web Services et API Flask
L'un des défis majeurs a été l'intégration avec les web services complexes de la plateforme 3DEXPERIENCE. Cela a nécessité de gérer l'authentification, la récupération et le rafraîchissement de jetons de session, et d'orchestrer des appels à différents domaines. Pour encapsuler cette complexité et fournir une interface propre au reste du système, j'ai développé une API Flask. Elle sert de pont central, permettant au front-end de communiquer avec l'agent LangGraph, et à l'agent d'accéder aux fonctionnalités de Dassault Systèmes via des "outils" simples et sécurisés.
Au-delà du Code : une Démarche d'Ingénieur
Recherche, Itération et Résolution de Problèmes
Le projet a été une véritable démarche d'ingénieur en R&D. J'ai fait face à des impasses techniques, notamment sur la connexion directe aux APIs Dassault Systèmes, ce qui m'a poussé à explorer des solutions alternatives (comme une connexion via le cloud) et à mener un travail de fond pour trouver des solutions robustes.
Focalisation sur l'Expérience Utilisateur (UX) et la Transmission
Le succès d'un chatbot ne réside pas que dans sa technique. J'ai mené une réflexion sur son utilité réelle, son potentiel d'augmentation de la productivité (actions multiples) et l'importance de son intégration visuelle. Pour offrir une expérience familière et intuitive, le design du chatbot se devait d'être homogène avec les autres assistants existants dans l'écosystème de l'entreprise, afin de faciliter son adoption par les utilisateurs. En tant que référent IA, une partie de ma mission a été de vulgariser ces concepts et de préparer la transmission du projet, pour assurer sa pérennité après mon départ. Le projet a abouti à la livraison de plusieurs cas d'usage fonctionnels, présentés à d'autres équipes pour démontrer le potentiel de la solution.
Cette démarche a culminé par une présentation technique approfondie de mon travail en anglais, devant une vingtaine de personnes issues d'équipes basées en France, aux États-Unis et en Inde. Cet exercice m'a permis de synthétiser mes choix d'architecture et de démontrer le potentiel de la solution à un public international.
Note sur la Confidentialité
Pour des raisons de confidentialité inhérentes à un projet de R&D, je ne peux partager de visuels ou d'extraits de code. Les détails techniques décrits sur cette page représentent la limite de ce que je suis autorisé à communiquer publiquement et visent à illustrer la démarche et les concepts mis en œuvre.
Apprentissages et Compétences Développées
Compétences Techniques
- Prise de décision architecturale et développement de A à Z d'un système multi-agents avec LangChain et LangGraph.
- Prompt Engineering avancé avec schémas de sortie stricts (Pydantic) pour le Tool Calling.
- Intégration d'APIs complexes en environnement d'entreprise (authentification, sessions).
- Développement d'une API Flask comme pont entre un front-end, un agent IA et des services tiers.
Compétences Stratégiques et Humaines
- Autonomie et Leadership Technique : Pilotage d'un projet innovant en tant que référent IA.
- Communication et Vulgarisation : Présentation de concepts techniques complexes et transmission de connaissances.
- Communication Internationale : Collaboration quotidienne et présentation technique en anglais dans un contexte multiculturel (France, Inde, USA).
- Résolution de problèmes en R&D : Naviguer entre les contraintes techniques, les impasses et la recherche de solutions.
- Vision Produit : Analyse des cas d'usage et de l'expérience utilisateur pour une IA réellement utile.