Accueil / Articles / Pourquoi les équipes passent des chaînes LangChain aux flux de travail LangGraph

Pourquoi les équipes passent des chaînes LangChain aux flux de travail LangGraph

Les agents de production ont besoin d’un état durable, ainsi que de branches et de HITL. Conservez les outils LangChain à l’intérieur des nœuds ; déplacez le flux de contrôle vers un graphe explicite lorsque les exigences opérationnelles l’exigent.

1928 mots

Les équipes qui dépassent les limites des chaînes linéaires de LangChain se tournent souvent vers LangGraph — non pas parce que ces chaînes seraient « mortes », mais parce que les agents de production nécessitent un état durable, des cycles et un flux de contrôle explicite. Cette migration est motivée par des difficultés opérationnelles : tentatives de réexécution, contrôles manuels, branches logiques et difficultés à suivre l’avancement partiel des tâches.

Ce que LangChain a bien fait

LangChain a rendu les modèles LLM programmables grâce à des prompts composables, des outils, des récupérateurs de données et des mécanismes de pipeline LCEL. Il a normalisé l’idée selon laquelle une application est un graphe de appels aux modèles et de transformations de données, et il a fourni des outils prêts à l’emploi pour les démonstrations RAG qui continuent d’éduquer l’écosystème. Pour les flux en une seule passe ou avec peu de branches, il reste un outil très utile.

Où cela devient problématique en production

Les exécuteurs d’agents linéaires ou ad hoc deviennent insuffisants lorsque l’on a besoin de :

  • Des boucles qui réessaient la récupération des données après un échec
  • Une capacité à pause/reprendre le travail après un redémarrage du processus
  • Points de contrôle par utilisateur
  • Branchements conditionnels qui sont du code, et non des suggestions de prompt
  • Réponses claires à la question « quel étape a échoué ? »
  • À ce stade, ajouter plus de mémoire à une chaîne cache la topologie au sein des prompts. Les échecs deviennent narratifs plutôt que des transitions d’état tapées.

    Ce que LangGraph change réellement

    LangGraph considère comme des classes principales l’état, les nœuds, les arêtes et les points de contrôle. Le système en temps réel connaît la position du curseur dans le flux de travail. Les interruptions, les redémarrages et la diffusion des événements des nœuds deviennent naturels. Vous continuez à utiliser les composants LangChain à l’intérieur des nœuds ; c’est la couche d’orchestration qui change.

    La forme du code, concrètement

    Un modèle mental en forme de chaîne :

    from langchain.agents import AgentExecutor, create_tool_calling_agent
    
    agent = create_tool_calling_agent(llm, tools, prompt)
    executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
    result = executor.invoke({"input": "Find the latest invoice and flag anomalies"})
    

    Un modèle mental en forme de graphe avec des branches explicites et une persistance :

    from langgraph.graph import StateGraph, END
    
    def call_model(state: AgentState) -> AgentState:
        response = llm.invoke(state["messages"])
        return {"messages": [response]}
    
    def route(state: AgentState) -> str:
        last = state["messages"][-1]
        return "tools" if last.tool_calls else END
    
    graph = StateGraph(AgentState)
    graph.add_node("agent", call_model)
    graph.add_node("tools", tool_node)
    graph.add_conditional_edges("agent", route, {"tools": "tools", END: END})
    graph.add_edge("tools", "agent")
    app = graph.compile(checkpointer=checkpointer)
    

    Le deuxième formulaire fait de « évaluer d’abord, puis réécrire éventuellement » une caractéristique visible, et non un paragraphe au sein d’un méga-demande.

    Où CrewAI et Pydantic AI s’intègrent

    CrewAI optimise la collaboration entre rôles/tâches lorsque la métaphore retenue est celle d’une équipe, et non celle d’une machine à états. Pydantic AI ainsi que d’autres kits d’agents typés privilégient l’utilisation d’outils basés sur des schémas. Ils peuvent coexister avec LangGraph ou le remplacer lorsque les besoins en flux de contrôle sont moindres. La pression en faveur d’une migration vers LangGraph est la plus forte lorsque la durabilité et les branches logiques jouent un rôle prédominant — et non lorsqu’une courte liste de tâches pour l’équipe suffit.

    Les véritables problèmes derrière cette migration

    1. Flux de contrôle caché dans les exécuteurs d’agents.
    2. Aucune capacité de mise en attente prioritaire pour les humains sans modification du état global.
    3. Tempêtes de tentatives qui réexécutent des appels à des outils irréversibles.
  • Différenciation insuffisante entre « erreur de modèle » et « étape métier sautée ».
  • Tests qui ne peuvent pas cibler un seul nœud en fonction de l’état des fixtures.
  • LangGraph ne corrige pas magiquement les outils défectueux, mais il permet de traiter ces problèmes lors des revues de code.

    Lorsque LangChain reste pertinent

    • Pipelines de prompts similaires à ETL
    • RAG simple sans boucles
    • Codes de liaison à l’intérieur des nœuds du graphe
    • Vitesse d’enseignement et de prototypage

    Ne réécrivez pas un job batch LCEL fonctionnel en format graphe juste pour la forme.

    Lorsque la réécriture en vaut la peine

    • Agents à plusieurs étapes avec capacité de réflexion
    • Conformité HITL
    • Flux de travail de recherche ou opérationnels longs
    • Besoin de débogage par « voyage dans le temps » des états

    Guide de migration

    1. Inventoriez les chaînes et marquez celles qui nécessitent des tentatives répétées, des branches ou HITL.
    2. Extraire le schéma d’état partagé (TypedDict / Pydantic).
    3. Transformer chaque segment de la chaîne en nœud avec des entrées/sorties claires.
    4. Remplacer les branches décrites dans les prompts par des arêtes conditionnelles.
    5. Ajouter des outils de vérification avant d’activer la pause/reprise en environnement de production.
    6. Conserver les récupérateurs/outils LangChain à l’intérieur des nœuds pour éviter une réécriture complète des intégrations existantes.

    Effets organisationnels

    Les graphes créent un langage commun entre les ingénieurs en apprentissage automatique et ceux de la plateforme : les nœuds correspondent aux responsabilités, les arêtes aux SLA. La réponse aux incidents s’améliore lorsque les pages citent des noms de nœuds. Cette clarté constitue en grande partie la raison de la migration, indépendamment des micro-benchmarks.

    Coûts et compromis

    Les graphes ajoutent du code générique et nécessitent un temps d’apprentissage. Une fragmentation excessive de chaque outil auxiliaire en nœuds crée du bruit inutile. Commencez de manière globale : boucle récupération → génération → évaluation → réécriture, puis divisez les nœuds lorsque les métriques l’exigent.

    Conclusion

    LangChain a appris à l’industrie comment connecter les modèles. LangGraph enseigne comment les exécuter en tant que systèmes. Cette migration n’est pas tant un rejet qu’une reconnaissance du fait que les agents de production sont des flux de travail — et que ces derniers méritent des machines à états, et non seulement des séquences de pipelines.

    Notes de terrain des équipes ayant effectué la migration

    Prévoyez des exécutions parallèles : conservez le chemin de la chaîne pour le trafic à faible risque, tandis qu’un pourcentage de sessions est acheminé vers le graphe. Comparez les taux d’erreur des outils, la valeur médiane du nombre d’étapes nécessaires pour l’achèvement, ainsi que la fréquence des interruptions humaines. Si le graphe s’avère plus opérationnel même avec une qualité de réponse similaire, effectuez le passage. Sinon, le problème résidait ailleurs — généralement dans la conception ou l’évaluation des outils — et non dans le choix de l’orchestrateur.

    Document anti-objectifs : LangGraph ne corrigerait pas un index incapable de répondre, ni un outil dépourvu de clés d’idempotence. Associez la migration à des contrats pour les outils ainsi qu’à des ensembles d’évaluation hors ligne qui testent les branches qui vous intéressent.

    Les métriques d’intérêt montrent que les développeurs se tournent vers des kits de type graphique et en équipe, car les agents de production exigent un état durable et des branches — et non simplement des chaînes plus longues. La première vague d’applications basées sur les LLM récompensait des pipelines simples de type appel et récupération ; la vague actuelle valorise des workflows explicites.

    Modèles observés dans les analyses post-mortem

    Lorsqu’un agent basé sur des chaînes échoue en production, le rapport d’incident a souvent le même ton : le modèle « a décidé » de sauter une étape de vérification, ou une tentative de réessai a reproduit un effet secondaire, ou personne n’a pu déterminer si la récupération des données s’était bien effectuée. Les graphes ne suppriment pas ces bugs, mais ils modifient les preuves disponibles par la suite. Les journaux au niveau des nœuds et les différences de points de contrôle montrent l’état le plus récent valide. Cela réduit le temps moyen nécessaire pour comprendre ce qui s’est passé, même si le temps moyen de correction dépend toujours de la qualité des outils.

    Concevoir l’état afin que les migrations soient rentables

    Un schéma d’état utile nomme explicitement les étapes clés de l’activité : retrieved, drafted, graded, approved, committed. Les arêtes déplacent ces étiquettes ; les prompts ne les créent pas. Lors d’une migration, associez chaque ancien segment de chaîne à une étape clé. Si une étape ne peut pas être nommée, ce segment n’a peut-être pas encore besoin de son propre nœud.

    Intervention humaine sans solutions temporaires globales

    Les chaînes d’opérations placent souvent l’intervention humaine dans des files externes reliées par des appels de retour. LangGraph permet d’interrrompre temporairement l’attente au sein du runtime : le point de contrôle est figé, une interface utilisateur collecte l’approbation, puis la reprise se fait avec le même identifiant de thread. Cette conception élimine toute une catégorie d’erreurs liées à des approbations perdues, fréquentes dans les systèmes manuels d’attente.

    Flux en continu et attentes utilisateur

    Les utilisateurs de produits basés sur des agents s’attendent à des flux de tokens ainsi qu’à des flux par étapes (“recherche”, “évaluation”, “attente d’approbation”). Les flux d’événements graphiques correspondent parfaitement à ces étapes. Les chaînes d’opérations peuvent simuler cela avec des appels de retour personnalisés, mais le modèle graphique correspond déjà au vocabulaire d’expérience utilisateur en usage sur le marché.

    Contrôle des coûts

    Un plus grand nombre de nœuds peut entraîner davantage d’appels au modèle. Limitez le nombre maximal de révisites dans les boucles de réflexion. Le stockage en cache conserve les résultats dans l’état tout au long de la durée de vie d’un thread. Préférez des classificateurs peu coûteux pour les nœuds de routage et réservez les modèles volumineux à la synthèse. La migration offre l’occasion d’intégrer ces contrôles de manière intentionnelle, plutôt que de les découvrir sur la facture cloud.

    Interopérabilité avec les investissements existants dans LangChain

    Les outils de récupération, les enveloppes d’outils, les analyseurs de sortie et les modèles de prompts nécessitent rarement une réécriture. Les nœuds les importent. L’argument des coûts engagés contre LangGraph disparaît généralement dès que les équipes comprennent que la migration consiste en un transfert d’orchestration, et non en une reconstruction complète. Lorsque CrewAI ou d’autres kits disposent déjà d’un sous-système, enveloppez-les en un seul nœud plutôt que de forcer une monoculture.

    Matrice de décision (condensée)

    Signal Chaîne Lean Graphe Lean
    RAG en une seule passe oui optionnel Boucles de réflexion pénible naturel HITL en cours d’exécution ajouté ultérieurement natif Tâches sur plusieurs jours gênant points de contrôle Commandes ETL simples idéal excès de fonctionnalités

    Histoire d’une semaine typique de réécriture

    Jours 1–2 : représenter la chaîne actuelle sous forme de graphique sur un tableau blanc ; nommer les états. Jour 3 : mettre en œuvre le parcours idéal avec deux arêtes conditionnelles. Jour 4 : ajouter des points de contrôle et des interruptions pour l’outil dangereux. Jour 5 : observer le trafic en parallèle et comparer les traces. Les équipes qui sautent l’étape du tableau blanc créent un enchevêtrement de chaînes à l’intérieur des nœuds et se demandent pourquoi rien ne s’améliore.

    Que signifie « terminé » pour une migration

    La migration est achevée lorsque les opérateurs peuvent, uniquement à l’aide des outils disponibles, déterminer quel nœud a été exécuté en dernier, quels clés d’état ont changé, et comment reprendre l’exécution depuis le point de contrôle précédent — sans avoir à examiner des archives Slack. La qualité des réponses peut rester inchangée dès le premier jour ; en revanche, la facilité d’utilisation ne devrait pas l’être.

    Différences concrètes dans les erreurs

    Les erreurs en chaîne apparaissent souvent sous forme d’une seule exception englobant une défaillance du modèle au sein d’une séquence exécutable. Les erreurs graphiques peuvent être attribuées au nom du nœud ainsi qu’aux clés d’état présentes au moment de la défaillance. Les ingénieurs support utilisent cette attribution pour décider s’il convient de corriger les mécanismes de récupération, les prompts d’évaluation ou les adaptateurs d’outils. Au fil des mois, cette différence influence davantage le calcul du retour sur investissement de la migration que n’importe quel micro-benchmark mesurant le nombre de tokens par seconde.

    Gestion des versions des graphes

    Considérez les définitions de graphes compilés comme des artefacts versionnés. Lorsque les contrats des nœuds changent, augmentez la valeur de graph_version dans les métadonnées du point de contrôle et rejetez les reprises incompatibles. Sans cette discipline, la fonction pause/reprise devient un obstacle lors des déploiements progressifs. Les chaînes n’ont que rarement affronté ce problème car elles s’arrêtent peu en cours d’exécution ; les graphes rendent ce problème visible — et résolvable.

    Expérience de développement local

    La capacité de LangGraph à parcourir les nœuds avec leur état initial améliore l’examen des propositions de modification. Les reviewers peuvent exécuter un seul nœud avec des entrées enregistrées au lieu de rejouer toute une chaîne. Ce flux de travail favorise des nœuds plus petits et testables — la même exigence que celle appliquée déjà aux gestionnaires HTTP dans une bonne architecture de service.

    Quand ne pas fragmenter

    Si deux « nœuds » s’exécutent toujours ensemble sans aucun lien entre eux, conservez-les en un seul nœud contenant des appels séquentiels de LangChain. Les graphes doivent coder les décisions, et non chaque limite fonctionnelle. Une sur-frAGMENTation constitue le mode d’échec des migrations trop enthousiastes.

    Trajectoire de l’écosystème

    Au fur et à mesure que les outils de vérification des points d’arrêt, les débogueurs et les assistants à la déploiement se développent, le coût lié au choix précoce des graphes diminue. Néanmoins, la raison stratégique reste l’honnêteté du flux de contrôle : les agents sont des workflows, et ces derniers méritent des machines à états explicites lorsque la fiabilité en production est importante.

    Appendice : sujets de discussion pour l’examen de l’architecture

    Demandez si l’agent actuel peut faire une pause pour une révision juridique sans perdre son état ; si les appels répétés à des outils sont empêchés en cas de tentative ultérieure ; si un nouvel ingénieur peut identifier les étapes à partir d’un seul trace ; et si l’évaluation couvre également les chemins de branche, et non seulement le chemin de récupération réussie. Des réponses négatives constituent des signaux de migration. Des réponses positives peuvent indiquer que LangChain-plus-discipline est déjà suffisant — ce qui constitue également un résultat valable.

    Appendice : sujets de conversation pour l’examen de l’architecture

    Demandez si l’agent actuel peut faire une pause pour une révision juridique sans perdre son état ; si les appels répétés à des outils sont empêchés en cas de tentative manquée ; si un nouvel ingénieur peut identifier les étapes à partir d’un seul trace ; et si l’évaluation couvre également les chemins de branche, et non seulement le chemin de récupération réussie. Des réponses négatives constituent des signaux de migration. Des réponses positives peuvent indiquer que LangChain-plus-discipline est déjà suffisant — ce qui constitue également un résultat valable.

    L’opérabilité est l’indicateur clé de performance lié à la migration que les services financiers finiront par remarquer.

    Dokumentez les hypothèses relatives au flux de contrôle à côté du code afin que les modifications futures ne puissent pas supprimer silencieusement un nœud ou un filtre. Préférez des assertions vérifiables par machine plutôt que des connaissances internes partagées uniquement dans les threads de discussion. Effectuez des exercices de simulation d’échecs chaque fois que la topologie ou les règles d’identité changent. Gardez les ensembles d’évaluation versionnés avec le graphe afin que les dégradations soient détectées avant les clients.