LangGraph est devenu le standard pour construire des agents IA robustes en production. Dans ce tutoriel pas à pas, vous allez créer un agent capable d'analyser des données, de chercher des informations et de rédiger un rapport, avec un système de mémoire et de contrôle humain intégré.
Pourquoi LangGraph plutôt que LangChain simple
LangChain est excellent pour les pipelines linéaires : entrée, traitement, sortie. Mais un vrai agent a besoin de boucles, de conditions, de mémoire persistante et de points de contrôle humain. LangGraph modélise tout ça comme un graphe orienté. C'est plus de code au départ, mais infiniment plus puissant et maintenable.
Installation et configuration
Commencez par installer les dépendances : pip install langgraph langchain langchain-openai. Configurez votre clé API OpenAI ou Anthropic dans les variables d'environnement.
Définir l'état de l'agent
L'état est le coeur de LangGraph. C'est le dictionnaire partagé entre tous les noeuds du graphe. Définissez-le avec TypedDict pour avoir une auto-complétion et une validation. Pour notre agent d'analyse : messages (historique), données_analysées, rapport_final, étape_courante.
Créer les noeuds
Chaque noeud est une fonction Python qui prend l'état en entrée et retourne un dict avec les clés à mettre à jour. Noeud 1 : collecte_données. Noeud 2 : analyse. Noeud 3 : rédaction_rapport. Noeud 4 : validation_humaine (optionnel mais recommandé).
Best practice : chaque noeud doit faire une seule chose. Un noeud qui collecte ET analyse ET rédige est un anti-pattern. La séparation des responsabilités est la clé de la maintenabilité.
Connecter les noeuds : le graphe
On crée le graphe avec StateGraph(MonEtat), on ajoute les noeuds avec add_node(), puis on définit les arêtes avec add_edge() pour les transitions inconditionnelles et add_conditional_edges() pour les décisions dynamiques.
Ajouter la mémoire
Pour un agent avec mémoire persistante entre les sessions, LangGraph supporte nativement PostgreSQL et SQLite via des checkpointers. Une seule ligne de configuration, et votre agent se souvient des conversations précédentes.
Le point de contrôle humain
Ajoutez interrupt_before=['validation_humaine'] lors de la compilation du graphe. L'agent s'arrête avant ce noeud, attend votre approbation, puis continue. Indispensable pour les agents qui prennent des actions irréversibles.
Tester et monitorer
Utilisez LangSmith pour tracer chaque exécution : quels noeuds ont été appelés, dans quel ordre, avec quelles entrées et sorties. En production, c'est indispensable pour débugger et améliorer votre agent.
Avec toute mon attention,
Article très complet et ancré dans la réalité du terrain. On retrouve exactement les mêmes patterns chez nos clients. La partie sur les coûts d'inférence est particulièrement précieuse, c'est un sujet que peu d'articles abordent franchement.
Merci Thomas ! Effectivement, l'optimisation des coûts est souvent négligée en phase de prototypage mais devient critique en production. N'hésitez pas à nous contacter si vous voulez approfondir ce point.
Je partage cet article à toute mon équipe. La distinction entre « démo impressionnante » et « production robuste » est exactement le débat qu'on a en ce moment en interne. Le conseil sur les human checkpoints est actionnable immédiatement.
Très bon article. Je nuancerais sur le délai de 18 jours pour déployer un premier agent, dans mon expérience c'est plus proche de 4 à 6 semaines quand on intègre vraiment les contraintes de sécurité et de RGPD.
Remarque tout à fait juste Marc. Les 18 jours correspondent à un premier agent en environnement de test ou pour un cas d'usage bien délimité. En production avec toutes les contraintes enterprise, votre estimation est réaliste.