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-ollamaVé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.