Guide

Statut éditorial : Validé

Chains et LCEL avec LangChain 1.x : comprendre leur place actuelle

Comprendre LCEL, les Runnables et les chaînes historiques dans l’écosystème LangChain 1.x recentré sur les agents.

Classification du contenu

Types

  • Modèles et API

Technologies

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

LCEL, le LangChain Expression Language, compose des Runnables en pipelines à l’aide d’opérateurs. Cette approche reste utile dans langchain-core, mais LangChain 1.x a recentré le package principal sur les agents. De nombreuses chaînes historiques ont été déplacées vers langchain-classic. Il faut donc distinguer le concept de composition de l’ancien catalogue de classes.

Le modèle mental des Runnables

Un Runnable reçoit une entrée et produit une sortie. Prompt, modèle, parser ou fonction peuvent être enchaînés si leurs contrats correspondent. La composition apporte invoke, batch, streaming et configuration communes. Gardez toutefois les types explicites : une chaîne compacte peut devenir illisible si les dictionnaires changent de forme à chaque étape.

Quand utiliser LCEL

LCEL convient à un pipeline borné : préparer un prompt, appeler un modèle, parser la sortie et éventuellement enrichir les données. Il permet parallélisme et branches simples sans créer un agent. Pour des boucles, un état durable, des interruptions ou une reprise, utilisez plutôt LangGraph ou une orchestration métier explicite.

LangChain 1.x et langchain-classic

Les anciennes classes comme plusieurs chains et retrievers vivent désormais dans langchain-classic. Elles peuvent maintenir un système existant, mais un nouveau flux simple gagne souvent à être écrit avec Runnables, fonctions ou create_agent selon le besoin. Épinglez séparément les packages d’intégration, dont les politiques de stabilité peuvent différer.

FAQ

LCEL est-il supprimé ?

Non. Les primitives Runnable restent importantes ; c’est surtout l’organisation des API haut niveau qui a changé.

Faut-il remplacer chaque chaîne historique ?

Pas immédiatement. Isolez-la, testez son comportement et migrez lorsqu’une alternative apporte un bénéfice.

LCEL remplace-t-il LangGraph ?

Non. LCEL compose des étapes ; LangGraph gère mieux état, boucles et reprise.

Une chaîne LCEL observable et testable

~~~python from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI

prompt = ChatPromptTemplate.from_template( "Réponds en une phrase à partir de ce contexte :\n{context}\n\n{question}" ) chain = ( prompt | ChatOpenAI(model="gpt-4.1-mini", temperature=0) | StrOutputParser() ).with_config({"run_name": "answer_from_context"})

answer = chain.invoke({ "context": "Payload stocke les contenus éditoriaux.", "question": "Quel est le rôle de Payload ?", }) ~~~

LCEL est adapté aux pipelines déterministes : préparer, appeler, parser, enrichir. Utilisez RunnableParallel pour des branches indépendantes et RunnableLambda pour une petite transformation, mais évitez d’y cacher une orchestration complexe. Dès que le flux comporte boucles, reprise, validation humaine ou état persistant, un graphe LangGraph devient généralement plus lisible.

Sources utilisées