Guide

Statut éditorial : Validé

LangGraph : construire des agents à états compréhensibles

Modéliser un agent avec un état typé, des nœuds, des transitions, des checkpoints et une reprise contrôlée dans LangGraph.

Classification du contenu

Types

  • Agents IA

Technologies

Niveau
Avancé
Publié le
10 août 2026
Dernière relecture
31 août 2026
Prochaine vérification
3 mars 2027

LangGraph représente une application agentique comme un graphe. Des nœuds lisent un état partagé, produisent des mises à jour et déterminent la transition suivante. Cette structure convient aux processus qui bouclent, appellent des outils, attendent une validation ou doivent reprendre après une interruption.

Concevoir l’état avant le graphe

L’état doit contenir uniquement ce qui sert à décider ou poursuivre : messages, objectif, résultats d’outils, compteur d’étapes et statut de validation. Définissez un schéma typé et des règles de fusion pour les champs mis à jour plusieurs fois. Ne transformez pas l’état en journal illimité ; conservez les traces détaillées ailleurs.

Nœuds et transitions

Un nœud réalise une responsabilité claire : appeler un modèle, exécuter un outil, vérifier une sortie ou demander une approbation. Les arêtes simples imposent l’ordre ; les arêtes conditionnelles choisissent la suite à partir de l’état. Rendez les conditions visibles et déterministes. Le modèle peut proposer une action, mais le code doit appliquer les règles métier.

Boucles et conditions d’arrêt

Une boucle d’outils doit toujours posséder un nombre maximal d’étapes, un délai, un budget et un chemin d’échec. Détectez les appels identiques répétés. Si une opération produit un effet externe, ajoutez idempotence et confirmation plutôt que de compter sur le modèle pour ne pas la répéter.

Checkpoints et intervention humaine

Un checkpointer persiste l’état à des points identifiés et permet de reprendre un fil d’exécution. Associez chaque conversation à un identifiant stable et protégez l’accès à ses checkpoints. Les interruptions permettent de suspendre avant une décision sensible, de présenter le contexte à un humain puis de reprendre avec sa réponse.

Streaming et observabilité

Le graphe peut diffuser les mises à jour d’état, les valeurs complètes ou les messages générés. Choisissez le flux selon l’interface et filtrez les événements internes. En production, corrélez chaque nœud avec durée, tokens, erreurs et transitions, sans enregistrer aveuglément les données sensibles.

Checklist

FAQ

LangGraph est-il nécessaire pour un seul appel LLM ?

Non. Une fonction simple sera plus lisible.

L’état remplace-t-il une base métier ?

Non. Il orchestre l’exécution ; les données de référence doivent garder leur propre stockage.

Comment tester un graphe ?

Testez chaque nœud, chaque condition et des parcours complets avec modèles et outils simulés.

Exemple minimal d’un graphe typé

~~~python from typing import TypedDict from langgraph.graph import StateGraph, START, END

class State(TypedDict): question: str answer: str approved: bool

def draft(state: State): return {"answer": f"Brouillon pour : {state['question']}"}

def review(state: State): return {"approved": len(state["answer"]) < 500}

def route(state: State): return END if state["approved"] else "draft"

graph = StateGraph(State) graph.add_node("draft", draft) graph.add_node("review", review) graph.add_edge(START, "draft") graph.add_edge("draft", "review") graph.add_conditional_edges("review", route) app = graph.compile()

print(app.invoke({"question": "Explique le RAG", "answer": "", "approved": False})) ~~~

Chaque nœud doit produire une mise à jour explicite de l’état. Ajoutez un nombre maximal de boucles pour éviter qu’une correction se répète indéfiniment. En production, utilisez un checkpointer avec un identifiant de conversation stable et ne placez pas de secret dans l’état persisté.

Sources utilisées