Tutoriel

Statut éditorial : En attente de relecture

Appeler Ollama depuis Python

Utiliser la bibliothèque Python officielle d’Ollama pour envoyer un chat, activer le streaming et traiter proprement les erreurs locales.

Classification du contenu

Types

  • Intelligence artificielle
  • api
Niveau
Débutant
Prochaine vérification
10 novembre 2026

Ollama expose une API sur http://localhost:11434/api et maintient une bibliothèque Python officielle. Vérifiez d’abord qu’Ollama fonctionne et que le modèle choisi est installé.

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

Envoyer un message

from ollama import chat

response = chat(
    model="gemma3",
    messages=[
        {"role": "system", "content": "Réponds en français et reste concis."},
        {"role": "user", "content": "Explique ce qu’est une API REST."},
    ],
)

print(response["message"]["content"])

Le nom du modèle doit correspondre à ollama list. Ne supposez pas qu’un modèle est présent : documentez la commande de téléchargement dans votre projet.

Diffuser progressivement la réponse

Le streaming réduit le délai perçu pour une réponse longue :

from ollama import chat

stream = chat(
    model="gemma3",
    messages=[{"role": "user", "content": "Donne trois conseils de revue de code."}],
    stream=True,
)

for chunk in stream:
    print(chunk["message"]["content"], end="", flush=True)

Utiliser un client configuré

Pour cibler une autre instance autorisée, créez un client explicite. Conservez l’adresse dans une variable d’environnement et imposez un délai côté application.

import os
from ollama import Client

client = Client(host=os.getenv("OLLAMA_HOST", "http://localhost:11434"))
response = client.chat(
    model="gemma3",
    messages=[{"role": "user", "content": "Réponds par oui ou non : 2 est pair."}],
)
print(response.message.content)

Gérer les erreurs

Traitez séparément l’indisponibilité du serveur, l’absence du modèle et les délais. N’effectuez pas des reprises infinies : limitez le nombre de tentatives et journalisez un identifiant de requête plutôt que les données sensibles.

Tester sans dépendre d’une réponse exacte

Une sortie de modèle peut varier. Testez la présence des champs attendus, le respect d’un schéma structuré et les erreurs de transport ; évitez d’asserter une phrase exacte. Pour une application critique, ajoutez un jeu d’évaluation plutôt qu’un seul prompt de démonstration.

Vous pouvez maintenant encapsuler cet appel derrière une fonction métier, ou utiliser l’intégration LangChain si votre application a besoin de chaînes, d’outils ou de retrievers.