Tutoriel

Statut éditorial : En attente de relecture

Connecter Ollama à LangChain

Utiliser ChatOllama dans une chaîne LCEL, activer le streaming et brancher un modèle local à un retriever sans masquer ses limites.

Classification du contenu

Types

  • Intelligence artificielle
  • outils

Technologies

Niveau
Intermédiaire
Prochaine vérification
10 novembre 2026

L’intégration officielle langchain-ollama fournit ChatOllama. Elle permet d’utiliser un modèle servi par Ollama dans les mêmes compositions LCEL qu’un autre chat model.

Préparer l’environnement

ollama pull gemma3
python -m venv .venv
source .venv/bin/activate
pip install -U langchain langchain-ollama

Vérifiez séparément ollama run gemma3 avant d’ajouter LangChain. Vous isolerez ainsi les problèmes de modèle, de serveur et d’intégration.

Invoquer ChatOllama

from langchain_ollama import ChatOllama

model = ChatOllama(model="gemma3", temperature=0)
response = model.invoke("Explique le RAG en trois phrases.")
print(response.content)

Composer une chaîne LCEL

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama import ChatOllama

prompt = ChatPromptTemplate.from_template(
    "Réponds uniquement avec le contexte fourni.

Contexte: {context}

Question: {question}"
)

chain = prompt | ChatOllama(model="gemma3", temperature=0) | StrOutputParser()
answer = chain.invoke({
    "context": "Ollama expose par défaut une API locale sur le port 11434.",
    "question": "Quel port utilise l’API ?",
})
print(answer)

Streamer la réponse

for chunk in chain.stream({"context": "...", "question": "Résume le contexte."}):
    print(chunk, end="", flush=True)

Ajouter un retriever

Un RAG récupère d’abord des documents, puis transforme leur contenu en contexte. Gardez la récupération testable indépendamment du modèle. Limitez le nombre et la taille des passages : augmenter sans contrôle le contexte consomme de la mémoire et peut diluer l’information utile.

Points d’attention

Les capacités d’outils, de vision ou de sortie structurée dépendent du modèle choisi. Testez-les plutôt que de les déduire de l’interface LangChain. Fixez le nom du modèle, surveillez la latence et prévoyez un délai maximal.

Cette intégration est adaptée au développement local et aux données maîtrisées. Pour une charge concurrente, mesurez le comportement d’Ollama et concevez explicitement la mise à l’échelle.