Guide

Statut éditorial : En attente de relecture

Comprendre les chains et LCEL dans LangChain 1.x

Comprendre les Runnables, la composition LCEL et la place des anciennes chains dans LangChain 1.x, avec un exemple de pipeline simple.

Classification du contenu

Types

  • Intelligence artificielle

Technologies

Niveau
Intermédiaire
Prochaine vérification
10 novembre 2026

Dans les premières versions de LangChain, le mot « chain » désignait presque tout enchaînement entre un prompt, un modèle et un traitement de sortie. LangChain 1.x clarifie cette architecture : les anciennes classes comme LLMChain vivent dans langchain-classic, tandis que les compositions modernes reposent sur les Runnable de langchain-core.

Le modèle mental : une entrée, une transformation, une sortie

Un Runnable représente une étape invocable. Un prompt transforme un dictionnaire en messages, un modèle transforme ces messages en réponse, puis un parser transforme cette réponse en valeur exploitable. LCEL relie ces étapes avec l’opérateur |.

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

prompt = ChatPromptTemplate.from_messages([
    ("system", "Tu expliques les concepts techniques avec précision."),
    ("human", "Explique {concept} en trois points."),
])
model = ChatOpenAI(model="gpt-5-mini")
chain = prompt | model | StrOutputParser()

resultat = chain.invoke({"concept": "LCEL"})
print(resultat)

La séquence est déclarative : on lit directement le flux de données. Chaque composant peut être testé séparément, puis l’ensemble expose la même interface.

Les opérations utiles des Runnables

invoke traite une entrée. batch traite plusieurs entrées. stream livre progressivement les résultats lorsque les composants le permettent. Les variantes ainvoke, abatch et astream couvrent les usages asynchrones. Cette interface commune facilite le remplacement d’un modèle ou d’un parser sans réécrire le pipeline.

Quand LCEL est le bon choix

LCEL convient à un flux court et prévisible : classification, résumé, extraction ou génération contrôlée. Si le modèle doit décider dynamiquement quels outils appeler, utilisez plutôt create_agent. Si le workflow comporte de l’état durable, des branches, des reprises ou des validations humaines, LangGraph rend le contrôle plus explicite.

Attention aux tutoriels anciens

Un exemple basé sur LLMChain peut encore fonctionner avec langchain-classic, mais il ne représente plus le chemin recommandé pour un nouveau projet. Vérifiez la version de LangChain ciblée, les imports et la documentation du fournisseur de modèle.

Tester la chaîne

Testez au moins les variables manquantes, les réponses vides, les erreurs du fournisseur et le format final. Pour les sorties métier, préférez un schéma validé plutôt qu’un parsing fragile de texte libre.

À retenir

Questions fréquentes

LCEL remplace-t-il toutes les chains ?

Non. LCEL remplace avantageusement de nombreux pipelines simples, mais les anciennes chains spécialisées restent disponibles dans langchain-classic. Les agents et graphes répondent à d’autres besoins.

LCEL fonctionne-t-il en asynchrone ?

Oui. Les Runnables proposent des méthodes asynchrones et de streaming lorsque les composants sous-jacents les prennent en charge.

Contenus liés

Sources utilisées