Framework d’application IA · 03

Analyse détaillée de LangGraph· Construire des applications complexes à états et multi-agents

Cadre d’orchestration d’agents basé sur les graphes, aussi simple que de construire avec des blocs !

FRAMEWORK MAP
Analyse détaillée de LangGraph
Construire des applications complexes à états et multi-agents
Cadre d’orchestration d’agents basé sur les graphes, aussi simple que de construire avec des blocs !
Résumé en une phrase

LangGraph est un framework d’orchestration d’agents basé sur les graphes, conçu pour construire des applications complexes avec état, à plusieurs nœuds et à exécution en boucle, et prenant en charge des fonctionnalités avancées telles que les branches conditionnelles, l’exécution parallèle et l’intervention humaine.

1. Qu’est-ce que LangGraph ?

LangGraph est un framework d'orchestration d'agents basé sur des graphes (Graph), spécialement conçu pour construireAvec étatMulti-nœudExécution en boucleConçu pour des applications complexes. Trois éléments clés :LLM/Agent · Graph (structure de graphe) · State(état)

  • Orchestrer sur la base d’une structure en graphe, avec un contrôle flexible du flux
  • Prend en charge les boucles, les branches conditionnelles et l’exécution parallèle
  • Gestion d’état intégrée, prend en charge la mémoire à long terme
  • Prend en charge l'intervention humaine (Human in the loop)
  • Très évolutif, מתאים aux systèmes multi-agents complexes

2. Concepts clés

Graphique

Composé de nœuds (Node) et d’arêtes (Edge), définissant le flux d’exécution

Nœud (node)

Unité chargée d’exécuter une tâche spécifique ; il peut s’agir d’un appel LLM, d’un appel à un outil ou d’une logique personnalisée

Edge

Définit les connexions entre les nœuds et peut être une transition conditionnelle ou inconditionnelle

State(état)

État global maintenu pendant l’exécution du graphe, partagé par tous les nœuds

Point de contrôle

Enregistrer l’état d’exécution, prendre en charge la reprise et le suivi de l’historique

Agent (agent intelligent)

Un agent à état construit sur des graphes

3. Flux d’exécution (moteur d’exécution de graphe)

Entrée
Input
État initial
State
Nœud d’exécution
Node
Mettre à jour le statut
Update
Évaluation conditionnelle
Edge
Nœud suivant
Next Node
Fin
End
Exécuter en boucle jusqu’à ce que les conditions de fin soient remplies
Type Edge
  • Direct EdgeArête inconditionnelle : A → B
  • Conditional EdgeArête conditionnelle : A → C (with condition)
Exemple de bord conditionnel (JSON)
{
  "from": "agent",
  "condition": "state['next']",
  "edges": {
    "continue": "tools",
    "end": "end"
  }
}

4. Scénarios d’application typiques

Système de conversation complexe

Prend en charge les conversations à plusieurs tours, la mémoire contextuelle et l’appel d’outils

Collaboration multi-agents

Plusieurs agents collaborent pour accomplir des tâches complexes avec une répartition claire des rôles

Automatisation des workflows

Automatiser les processus complexes et réduire l’intervention manuelle

Scénarios de décision et de planification

Prise de décision basée sur l’état et traitement des tâches de planification

5. Exemple de code : construire un LangGraph simple

from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, List, Dict, Any

# 1. Définir l'état
class AgentState(TypedDict):
    messages: Annotated[List[Dict[str, Any]], "historique des messages"]
    next: str
    result: str

# 2. Créer le graphe
graph = StateGraph(AgentState)

async def agent(state: AgentState):
    # Appeler le LLM pour analyser l'entrée de l'utilisateur
    return {"next": "tools"}

async def tools(state: AgentState):
    # Appeler des outils externes
    return {"result": "résultat d’exécution de l’outil"}

async def review(state: AgentState):
    # Vérifier le résultat et décider s’il faut terminer
    if "terminé" in state["result"]:
        return {"next": END}
    return {"next": "agent"}

# 3. Ajouter des nœuds
graph.add_node("agent", agent)
graph.add_node("tools", tools)
graph.add_node("review", review)

# 4. Ajouter des arêtes
graph.set_entry_point("agent")
graph.add_edge("agent", "tools")
graph.add_edge("tools", "review")
graph.add_conditional_edges("review", lambda x: x["next"])

# 5. Compiler le graphe
app = graph.compile()
Définition de l’état
Fonction de nœud
Définition du flux
Prise en charge des boucles
Prend en charge les branchements conditionnels
État visualisé

6. Fonctionnalités avancées

Persistance de l’état

Memory, SQLite, PostgreSQL, Redis, etc.

Mécanisme de checkpoint

Permet de reprendre l’exécution depuis n’importe quel point de contrôle

Intervention humaine

Human in the loop — des nœuds de revue humaine peuvent être insérés dans le processus

Exécution parallèle

Prendre en charge plusieurs nœuds en parallèle pour améliorer l’efficacité

Débogage visuel

Fournit un support graphique pour faciliter le débogage et la compréhension du flux

Prise en charge multi-agents

Construisez facilement des systèmes complexes de collaboration multi-agents

7. Comparaison avec d’autres frameworks

FrameworkModèle d’exécutionGestion d'étatContrôle des processusÉvolutifScénarios d’applicationVisualisation
LangChainChaîne linéaireÉtat simpleFlux fixeMoyenApplication simpleLimité
LangGraphStructure en grapheÉtat intégréFlexible (graphe + conditions)ÉlevéApplications/workflows complexesPrise en charge intégrée
AutoGPTBoucle à agent uniqueMoyenExécution en boucleMoyenExécution autonome des tâchesAucun
MetaGPTCollaboration multi-agentsMoyenExécution basée sur les rôlesMoyenTâches de collaboration en équipeLimité

8. Écosystème et intégration

Modèle
OpenAIAnthropicLlama 3
Outils
RechercheCalculatriceAPI
Stockage
SQLitePostgreSQLRedis
Supervision/Déploiement
LangSmithSuivi des journauxDockerFastAPI

9. Cas réels & projets open source