Accueil / Articles

LangChain plus Ollama : Chaînes Qwen locales, outils et structure

Pointez langchain-ollama vers une étiquette Qwen locale pour obtenir des chaînes, du streaming, des appels d’outils et une sortie structurée, sans clés cloud. Prérequis et particularités à anticiper.

Éditeur : REACTAPP.TOP4 min de lecture931 mots

Sources: LangChain integrations with Ollama local LLM - qwen3.8:27b

Qwen local via Ollama, intégré à LangChain

Exécutez des modèles de chat open-source tels que qwen3.8:27b sur votre propre machine et connectez-les aux chaînes, agents et outils de LangChain — sans clés API cloud ni facturation par token.

Ollama en un paragraphe

Ollama regroupe les poids, la configuration et le temps d’exécution derrière une interface conviviale adaptée aux Modelfile, et gère les détails d’accélération GPU pour les configurations courantes. Téléchargez un tag, lancez une requête, et exposez une API HTTP sur le port 11434.

Intégration d’Ollama dans LangChain

Le package langchain-ollama met à disposition des modèles de chat avec possibilité d’appeler des outils, sortie structurée, entrées multimodales, streaming, traitement asynchrone et fonction logprobs — exactement la même interface que celle des wrappers de chat cloud, mais orientée vers localhost.

Aperçu de la configuration

Installez Ollama, téléchargez le modèle de chat dont vous avez besoin, et vérifiez que l’API répond correctement. En Python, installez l’intégration Ollama de LangChain et créez un modèle de chat orienté vers votre URL de base locale.

ollama pull qwen3.8:27b
ollama list

Chaînes et prompts

Créez une chaîne simple prompt → modèle pour la synthèse ou les questions-réponses sans quitter l’ordinateur :

from langchain_ollama import ChatOllama

llm = ChatOllama(
    model="qwen3.8:27b",
    temperature=0.3,
)

Transmettez les tokens par flux si votre interface nécessite des mises à jour incrémentales :

messages = [
    ChatMessage(role="control", content="thinking"),
    HumanMessage("What is 3^3?"),
]

Outils et agents

Associez des outils de la même manière que vous le feriez avec un modèle hébergé. Le modèle local doit prendre en charge l’appel d’outils pour assurer des boucles d’agent fiables — choisissez des étiquettes connues pour fonctionner avec le protocole d’outils d’Ollama.

messages = [
    SystemMessage(
        content="""
You are an expert at reading screenshots and technical documentation.

Rules:
- Extract information only from the image.
- Do not hallucinate missing values.
- Return concise answers.
- Preserve commands exactly as shown.
"""
    ),
    HumanMessage(
        content=[
            {
                "type": "image_url",
                "image_url": f"data:image/png;base64,{image_b64}",
            },
            {
                "type": "text",
                "text": "What is the download command for the Gemma 7B model?",
            },
        ],
    ),
]
SystemMessage
    ↓
"You are a technical documentation analyst.
 Extract information only from the image.
 Do not guess.
 Return concise answers."

HumanMessage #1
    ↓
"What is the download command?"

HumanMessage #2
    ↓
"What version of the model is shown?"

HumanMessage #3
    ↓
"What is the model's parameter count?"

Sortie structurée

Lorsque vous avez besoin de JSON, utilisez des outils de sortie structurée plutôt que simplement des prompts fragiles demandant « veuillez retourner du JSON » :

HumanMessage(
    content=[
        {
            "type": "image_url",
            "image_url": f"data:image/png;base64,{image_b64}",
        },
        {
            "type": "text",
            "text": """
The image is a screenshot from an Ollama model page.

Task:
1. Find the section containing model download instructions.
2. Locate the Gemma 7B model.
3. Return only the exact Ollama pull command.

Output format:
Return JSON only:

{
    "model_name": "",
    "download_command": "",
    "confidence": ""
}

Do not include explanations.
"""
        },
    ]
)

Pourquoi cette pile technologique

Préférez des tags de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des tags de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des tags de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des tags de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des tags de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des tags de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des tags de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des tags de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des étiquettes de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des étiquettes de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des étiquettes de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des étiquettes de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des étiquettes de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des étiquettes de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.

Préférez des étiquettes de modèle explicites dans chaque exemple afin que les mises à jour ne modifient pas silencieusement le comportement au milieu du tutoriel.