LangChain
Ce que vous saurez dans 3 minutes
LangChain est devenu la “colle” universelle de l’IA générative.
- Pour les Développeurs : C’est l’abstraction qui évite de réécrire le code quand on change de modèle (passer de GPT-4 à Claude se fait en une ligne).
- Pour les Architectes : C’est le standard pour construire des architectures RAG (Retrieval Augmented Generation) robustes.
1. Comprendre
Un LLM est une API “texte en entrée, texte en sortie”. Pour faire une application réelle (ex: un chatbot qui interroge vos PDF), il faut gérer :
- Le Prompting (Templates).
- La Mémoire (Se souvenir de la conversation).
- Les Sources (Aller chercher l’info).
- La Structuration (Avoir du JSON en sortie, pas du texte libre).
LangChain fournit des briques standardisées pour tout cela.
Architecture Modulaire
LangChain est découpé en modules clés :
- Model I/O : Interface unifiée pour tous les LLM (OpenAI, HuggingFace, Ollama).
- Retrieval : Tout pour le RAG (Loaders de documents, Splitters, VectorStores).
- Chains : Assemblage de séquences (Séquentiel : A -> B -> C).
- Agents : Le LLM décide de la séquence (Boucle décisionnelle).
- Memory : Stockage de l’état (Short-term, Long-term).
2. Appliquer
La Révolution LCEL (LangChain Expression Language)
En 2023, LangChain a introduit une syntaxe déclarative inspirée du pipe Unix (|) pour simplifier le code.
# Avant : Code verbeux avec classes Chain# Maintenant (LCEL) :
from langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParser
model = ChatOpenAI(model="gpt-4o")prompt = ChatPromptTemplate.from_template("Raconte une blague sur {topic}")parser = StrOutputParser()
# La Chaîne Magiquechain = prompt | model | parser
# Exécutionprint(chain.invoke({"topic": "les développeurs Python"}))Agents vs Chaînes
C’est la distinction fondamentale.
- Logique : “Hard-coded”. Le développeur définit les étapes : Étape 1 -> Étape 2 -> Étape 3.
- Usage : Pipelines RAG simples, Extraction, Résumé.
- Fiabilité : Très haute (toujours le même chemin).
- Logique : “Discrétionnaire”. Le LLM reçoit une boîte à outils (Google Search, Calculette) et un objectif via un prompt “ReAct” (Reasoning + Acting).
- Usage : Assistants autonomes, Recherche web complexe.
- Fiabilité : Variable (peut boucler ou se tromper).
Exemple RAG Simplifié
from langchain_community.vectorstores import FAISSfrom langchain_openai import OpenAIEmbeddings
# 1. Indexation (Vector Store)vectorstore = FAISS.from_texts( ["François adore le café.", "Le ciel est bleu."], embedding=OpenAIEmbeddings())retriever = vectorstore.as_retriever()
# 2. Chaîne RAGrag_chain = ( {"context": retriever, "question": RunnablePassthrough()} | prompt | model | parser)
rag_chain.invoke("Qu'est-ce que François aime ?")# Réponse : "François aime le café." (factuelle, issue du context)3. Aller plus loin
LangSmith & LangGraph
LangChain (l’outil) est devenu une suite :
- LangChain : Les librairies.
- LangSmith : Plateforme d’observabilité (DevOps pour LLM). Permet de tracer chaque étape d’une chaîne, voir les coûts, debugger les hallucinations.
- LangGraph : Nouvelle librairie pour construire des agents cycliques et “stateful” (avec état), plus robuste que les agents classiques.
La controverse “Abstraction”
Critique fréquente : LangChain ajoute trop d’abstraction (“Abstraction Hell”).
- Pour : Vitesse de développement, standardisation.
- Contre : Difficile de comprendre ce qui se passe sous le capot, stack traces illisibles.
- Conseil : Utilisez LangChain pour prototyper vite. Si vous avez besoin de performance millimétrée en prod, descendez parfois au niveau API native.
Questions Fréquentes
LangChain fonctionne-t-il avec des modèles locaux ?
Oui, parfaitement. Via l’intégration Ollama ou LlamaCpp, vous pouvez orchestrer un Llama-3 qui tourne sur votre machine, sans envoyer de données à OpenAI.
Quelle différence avec LlamaIndex ?
Historiquement, LlamaIndex était spécialisé dans la gestion des données (Data Ingestion/Indexing pour RAG), et LangChain dans l’orchestration (Chains/Agents). Aujourd’hui, les deux se chevauchent, mais LlamaIndex reste souvent préféré pour les RAG complexes sur des données structurées.
Notions Liées (Spider Web)
- Concepts : RAG, Prompt Engineering
- Outils Connexes : LlamaIndex, Ollama
- Modèles : LLM
Ressources Externes
- Doc Officielle : python.langchain.com
- LangChain AI (Blog) : Blog officiel (très riche en patterns d’agents).