Aller au contenu

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 :

  1. Le Prompting (Templates).
  2. La Mémoire (Se souvenir de la conversation).
  3. Les Sources (Aller chercher l’info).
  4. 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 ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from 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 Magique
chain = prompt | model | parser
# Exécution
print(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).

Exemple RAG Simplifié

from langchain_community.vectorstores import FAISS
from 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 RAG
rag_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 :

  1. LangChain : Les librairies.
  2. LangSmith : Plateforme d’observabilité (DevOps pour LLM). Permet de tracer chaque étape d’une chaîne, voir les coûts, debugger les hallucinations.
  3. 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)

Ressources Externes