Multi-Agent Framework
LangGraph — State-Machine Framework for Production Agents logo

LangGraph — framework à machine d’état pour Agents en production

LangGraph modélise les Agents sous forme de graphes orientés (nœuds et arêtes) avec état explicite — la façon la plus prête pour la production de bâtir des AI Agents multi-étapes fiables, avec checkpoints, human-in-the-loop et flux de contrôle déterministe.

Why LangGraph

LangGraph échange une courbe d’apprentissage plus raide contre une fiabilité de production nettement supérieure. Au lieu d’espérer qu’une boucle LLM termine, vous déclarez le graphe : nœuds (appels LLM, outils, fonctions de routage), arêtes (transitions statiques ou conditionnelles) et un State typé qui circule entre eux. Le runtime gère nativement le checkpointing vers n’importe quel store (mémoire, SQLite, Postgres, Redis), la reprise et les interruptions human-in-the-loop.

C’est le framework auquel on pense quand « mon Agent doit s’arrêter pour qu’un humain valide » ou « mon workflow de 20 étapes doit reprendre exactement là où il s’est arrêté après un crash ». CrewAI et AutoGen peuvent résoudre ces problèmes ; LangGraph est conçu autour d’eux.

L’écosystème est aussi remarquable. LangGraph s’intègre nativement avec LangChain, LangSmith (observabilité), LangMem (mémoire) et toute la panoplie d’outils LangChain. Si votre stack contient déjà des composants LangChain, LangGraph est le complément sans friction. Sinon, vous bénéficiez du tout, mais en adoptant un écosystème conséquent.

Quick Start — Multi-Agent Supervisor Graph

Pattern superviseur : un nœud de routage inspecte l’état et choisit le prochain worker, les workers rendent la main au superviseur, qui finit par renvoyer END. L’InMemorySaver checkpointe l’état ; remplacez-le par SqliteSaver / PostgresSaver en production pour une reprise durable. Les thread IDs isolent les conversations concurrentes.

# pip install langgraph langchain-openai
from typing import Literal, TypedDict, Annotated
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, END, START
from langgraph.checkpoint.memory import InMemorySaver
from langchain_core.messages import HumanMessage, AIMessage
from langchain_core.tools import tool

llm = ChatOpenAI(model="gpt-4o-mini")

class State(TypedDict):
    messages: Annotated[list, lambda a, b: a + b]
    next: str

# Two specialized workers
def researcher(state: State) -> State:
    resp = llm.invoke([HumanMessage(f"Research briefly: {state['messages'][-1].content}")])
    return {"messages": [AIMessage(content=f"[researcher] {resp.content}")], "next": ""}

def writer(state: State) -> State:
    resp = llm.invoke([HumanMessage(f"Polish into 2 sentences: {state['messages'][-1].content}")])
    return {"messages": [AIMessage(content=f"[writer] {resp.content}")], "next": ""}

# Supervisor routes to the right worker
def supervisor(state: State) -> State:
    last = state["messages"][-1].content if state["messages"] else ""
    resp = llm.invoke([HumanMessage(
        f"Pick the next worker (researcher, writer, or FINISH): {last}")]).content.upper()
    next_ = "researcher" if "RESEARCH" in resp else ("writer" if "WRITE" in resp else "FINISH")
    return {"messages": state["messages"], "next": next_}

def route(state: State) -> Literal["researcher", "writer", "__end__"]:
    return state["next"] if state["next"] != "FINISH" else END

graph = StateGraph(State)
graph.add_node("supervisor", supervisor)
graph.add_node("researcher", researcher)
graph.add_node("writer", writer)
graph.add_edge(START, "supervisor")
graph.add_conditional_edges("supervisor", route,
                            {"researcher": "researcher", "writer": "writer", END: END})
graph.add_edge("researcher", "supervisor")
graph.add_edge("writer", "supervisor")

app = graph.compile(checkpointer=InMemorySaver())
cfg = {"configurable": {"thread_id": "demo"}}
for event in app.stream({"messages": [HumanMessage("The state of AI agents in 2026")], "next": ""},
                        config=cfg):
    print(event)

Fonctionnalités clés

State typé

Définissez State comme un TypedDict ou un modèle Pydantic. LangGraph suit les transformations d’état entre nœuds, détecte les dérives de schéma à la compilation et permet de raisonner sur ce que chaque nœud lit et écrit.

Arêtes conditionnelles

add_conditional_edges(source, router_fn, {label: target}) laisse tout nœud choisir dynamiquement le prochain. Plus flexible que les graphes statiques ; reste auditable via la structure compilée.

Checkpointers

InMemory, SQLite, Postgres, Redis. L’état persiste entre invocations. Reprenez depuis n’importe quel checkpoint — indispensable pour les Agents longs, les retries et le debug.

Human-in-the-loop

interrupt() met en pause l’exécution ; reprenez via Command(resume=value). Flux d’approbation, demandes de clarification et modifications d’état natifs, sans plomberie maison.

LangGraph Studio

Application desktop pour déboguer visuellement les graphes en cours d’exécution — visualiser l’état, inspecter les messages, exécuter pas à pas, modifier l’état et relancer. Ce qui se rapproche le plus d’un débogueur traditionnel dans le monde des Agents LLM.

Streaming + sous-graphes

Streamez messages et mises à jour d’état en temps réel ; composez des graphes en sous-graphes (un nœud peut être un autre graphe compilé). Supporte des architectures d’Agents profondément imbriquées.

Comparaison

 Control FlowCheckpointingDebuggingLearning Curve
LangGraphcelui-ciGraph / state machineFirst-class (multiple backends)LangGraph StudioMedium
CrewAISequential / hierarchicalVia Crew FlowsTracesLow
AutoGenConversation loopv0.4 has it; older v0.2 limitedTrace logsMedium
OpenAI SwarmHandoff tool callsNot built-inLogsLow

Cas d'usage

01. Services d’Agents en production

Agents face utilisateur qui doivent survivre aux crashs, retries et déploiements. Le checkpointing fait de LangGraph le choix par défaut pour des Agents dans des applis SaaS en production.

02. Workflows à validation humaine

Tâches sensibles à la conformité (achats, emails, remboursements) où un Agent propose et un humain valide. interrupt() + Command resume est le pattern le plus propre de l’écosystème.

03. Architectures multi-Agent complexes

Superviseur + workers, équipes hiérarchiques, pools d’Agents en tournoi. Quand votre système comprend plus de 3 Agents avec un flux de contrôle non trivial, la modélisation par graphe évite le chaos émergent.

Tarification et licence

LangGraph : open source MIT. Gratuit en self-hosting.

LangGraph Platform : service de déploiement managé de LangChain — Agents hébergés avec auto-scaling, webhooks, déclencheurs cron et UI Studio. Offres payantes ; voir langchain.com/langgraph-platform.

LangSmith (optionnel) : SaaS d’observabilité. Niveau dev gratuit. Complémente mais ne remplace pas LangGraph — déployer sur LangGraph Platform ne requiert pas LangSmith.

Assets associés sur TokRepo

Questions fréquentes

Faut-il LangChain pour utiliser LangGraph ?+

Pas strictement — vous pouvez construire les nœuds à partir de fonctions nues et de n’importe quel SDK LLM. Mais les intégrations LangChain (outils, retrievers, loaders) rendent LangGraph bien plus productif ; la plupart des vrais projets utilisent les deux.

LangGraph vs CrewAI ?+

Des paris différents. CrewAI : basé sur les rôles, rapide à mettre en production, plus simple. LangGraph : basé sur les graphes, plus de mise en place, fiabilité de niveau production. Si un non-ingénieur peut décrire votre pipeline comme « A puis B puis C avec des rôles », commencez par CrewAI. Si votre pipeline contient des boucles, des branches conditionnelles ou des approbations humaines, commencez par LangGraph.

À quel point est-ce difficile à déboguer ?+

Mieux que la plupart. LangGraph Studio offre une UI pas-à-pas avec inspection d’état. Combiné aux traces LangSmith, vous identifiez précisément quel nœud a produit quelle sortie. Toujours plus difficile que déboguer du code non-agent — c’est inhérent aux systèmes agentiques.

LangGraph peut-il encaisser un fort débit ?+

Oui. Le runtime est asynchrone et sans état entre invocations (l’état vit dans le checkpointer). Scalez horizontalement derrière n’importe quel load balancer ; branchez un checkpointer Postgres pour la durabilité.

Et l’ancienne API LangChain Agents ?+

Utilisez LangGraph pour tout nouveau travail sur des Agents. LangChain Agents (initialize_agent, AgentExecutor) est en mode maintenance. LangChain reste la référence pour les briques non-Agent (prompts, retrievers, outils).

Comparer les alternatives