Skip to main content

LangGraph

POUR AGENT IAChatGPTClaude

Framework bas niveau de l'équipe LangChain pour construire des systèmes multi-agents déterministes et cycliques sous forme de machines à états (State Machines), avec un support complet de la persistance.

1. Vue d'ensemble du concept et problématique système

Les tentatives de construction d'agents fiables en production à l'aide de simples boucles while True en Python ou de chaînes linéaires se heurtent rapidement à des contraintes d'ingénierie critiques :

  1. Absence de persistance : Si le serveur redémarre pendant un processus agentique de 5 minutes, tout l'état courant et les progrès sont irrémédiablement perdus.
  2. Incontrôlabilité du flux (Black Box Problem) : Il est difficile de prédire à quel moment l'agent décidera de terminer sa tâche, ou comment le forcer à revenir en arrière en cas d'échec de validation.
  3. Impossibilité de pause longue durée (Human-in-the-Loop) : Suspendre l'exécution du programme dans l'attente d'une confirmation utilisateur sans bloquer la mémoire du processus dans du code standard est extrêmement complexe.

LangGraph résout ces problèmes en modélisant les systèmes agentiques comme des Graphes d'État Orientés (Stateful Graphs). Tout processus complexe est décomposé en nœuds transparents (Nodes), arêtes de transition (Edges) et un état typé unique (State), qui est enregistré atomiquement dans la base de données après chaque étape.

2. Taxonomie architecturale et modèle mental

L'architecture LangGraph s'articule autour de quatre entités clés :

  • 1. Shared State (État partagé) : Interface strictement typée (via TypedDict ou Pydantic). Elle définit le schéma de données accessible à tous les nœuds. Des réducteurs spécifiques (Reducers) peuvent être assignés aux champs, par exemple Annotated[list, add_messages], qui ajoutent automatiquement de nouveaux messages au lieu d'écraser le tableau existant.
  • 2. Nodes (Nœuds du graphe) : Fonctions synchrones ou asynchrones classiques. Chaque nœud reçoit l'état courant, effectue un calcul (appel de modèle, exécution de tests ou requête BD) et retourne une mise à jour partielle de l'état (State Delta).
  • 3. Edges & Conditional Edges (Arêtes de transition) :
    • Arêtes standards : Transition déterministe du nœud A vers le nœud B.
    • Arêtes conditionnelles : Une fonction routeuse analyse la dernière sortie du modèle et décide où diriger le flux (par exemple : si un outil est appelé — aller vers tools, si une réponse finale est trouvée — aller vers END).
  • 4. Checkpointers (Gestionnaires de checkpoints) : Drivers de sauvegarde longue durée (MemorySaver pour les tests, PostgresSaver / SqliteSaver pour la production). Ils créent des instantanés immuables (Snapshots) à chaque superstep.

3. Pipeline technique et mécanique interne

L'exécution du graphe suit le modèle de parallélisme synchrone massif (Bulk Synchronous Parallel, BSP) :

  1. State Initialization (Démarrage de session) : Le graphe reçoit l'entrée initiale et un objet de configuration contenant la clé thread_id. Le checkpointer charge le dernier état sauvegardé pour ce thread.
  2. Superstep Execution (Exécution du superstep) : Tous les nœuds actifs de la phase courante s'exécutent en parallèle. Chaque nœud lit un instantané identique de l'état et génère son propre patch de mise à jour.
  3. Reducer Aggregation & Checkpoint Commit (Fusion d'état) : Après la fin de travail de tous les nœuds de la phase, le système applique les réducteurs aux changements reçus, forme un nouvel état et l'enregistre atomiquement dans la base de données.
  4. Edge Routing & Interrupt Inspection (Routage et vérification des pauses) : Les transitions conditionnelles sont évaluées. Si le graphe rencontre un point d'interruption (interrupt_before), l'exécution s'achève en toute sécurité, rendant le contrôle à l'application externe.

4. Scénarios d'ingénierie pratiques en production

01. Boucle autonome de développement et correction de bugs

Graphe à quatre nœuds :

  • generate_code -> run_unit_tests -> evaluate_output.
  • Si les tests passent avec succès — transition vers create_pr.
  • Si les tests échouent — une arête conditionnelle renvoie l'état vers generate_code accompagné de la stack trace de l'erreur (avec une limite de maximum 5 itérations).

02. Processus financier Human-in-the-Loop

L'agent analyse les factures contradictoires des clients. Si le montant du remboursement est inférieur à $100, le graphe effectue le remboursement automatiquement via le nœud execute_refund. Si le montant est supérieur — le graphe s'interrompt (interrupt), génère un lien vers un formulaire d'approbation pour le manager et reprend son fonctionnement uniquement après réception d'un webhook humain.

03. Système multi-agents « Superviseur — Spécialistes »

Le nœud central Supervisor agit comme routeur de haut niveau. Selon le type de tâche, il bascule le contexte entre des sous-graphes spécialisés : ResearchSubgraph (recherche web et analytique) et DraftingSubgraph (génération de contrats), tout en contrôlant un contexte d'entreprise unifié.

5. Pièges courants, erreurs typiques et sécurité

  • Bloat d'état (State Bloat) : Stocker des fichiers PDF de plusieurs gigaoctets ou des tableaux massifs dans l'état partagé entraîne que chaque checkpoint dans PostgreSQL prend des centaines de millisecondes. Ne conservez dans l'état que des métadonnées légères et les URLs S3 des artefacts.
  • Recursion Limit Exceeded : Si les arêtes conditionnelles n'ont pas de sortie garantie hors de la boucle, l'exécution plantera avec une erreur système de dépassement de profondeur (par défaut 25 étapes). Contrôlez toujours le compteur de tentatives directement dans le schéma d'état.
  • Objets non-sérialisables dans State : Tenter de stocker dans l'état un descripteur de fichier ouvert, une connexion à la base de données ou une closure fonctionnelle provoquera la panne du checkpointer lors de la tentative de sérialisation en JSON/Pickle.
/ Questions fréquentesSchema.org FAQPage

FAQ: LangGraph

Les chaînes classiques LangChain étaient strictement acycliques (DAG) : les données ne circulaient que dans un seul sens. Les processus réels d'agents nécessitent des boucles : tentatives multiples, retours en arrière après une erreur de linting, branchements conditionnels et pauses pour validation humaine. LangGraph a transformé les agents en véritables machines à états (State Machines).
/ Liens internes
Tous les termes