Intégrer Ollama avec Python : exemples d'API REST et de client Python

+ Exemples concrets utilisant des LLMs de réflexion

Sommaire

Dans cet article, nous allons explorer deux façons de connecter votre application Python à Ollama : 1. Via HTTP REST API ; 2. Via la bibliothèque Python officielle d’Ollama.

Nous aborderons à la fois les appels chat et generate, puis nous discuterons de la manière d’utiliser efficacement les “modèles de réflexion”.

ollama et python

Ollama a rapidement devenu l’une des manières les plus pratiques d’exécuter des grands modèles de langage (LLMs) localement. Pour voir comment Ollama se compare à vLLM, Docker Model Runner, LocalAI et aux fournisseurs de cloud — y compris quand choisir chacun — consultez LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared. Avec son interface simple et son support des modèles ouverts populaires comme Llama 3, Mistral, Qwen2.5, et même les variantes “réflexion” comme qwen3, il est facile d’intégrer directement des capacités d’IA dans vos projets Python — sans dépendre des API cloud externes.


🧩 Prérequis

Avant de commencer, assurez-vous d’avoir :

  • Ollama installé et en cours d’exécution localement (ollama serve)
  • Python 3.9+
  • Dépendances requises :
pip install requests ollama

Confirmez que Ollama est en cours d’exécution en exécutant :

ollama list

Vous devriez voir des modèles disponibles tels que llama3, mistral ou qwen3.


⚙️ Option 1 : Utilisation de l’API REST d’Ollama

L’API REST est idéale lorsque vous souhaitez un contrôle maximum ou lors de l’intégration avec des cadres qui gèrent déjà les requêtes HTTP.

Exemple 1 : API de chat

import requests
import json

url = "http://localhost:11434/api/chat"

payload = {
    "model": "llama3.1",
    "messages": [
        {"role": "system", "content": "Vous êtes un assistant Python."},
        {"role": "user", "content": "Écrivez une fonction qui inverse une chaîne."}
    ]
}

response = requests.post(url, json=payload, stream=True)

for line in response.iter_lines():
    if line:
        data = json.loads(line)
        print(data.get("message", {}).get("content", ""), end="")

👉 L’API REST d’Ollama transmet les réponses ligne par ligne (similaire à l’API de transmission d’OpenAI). Vous pouvez accumuler le contenu ou l’afficher en temps réel pour les chatbots ou les outils CLI.


Exemple 2 : API de génération

Si vous n’avez pas besoin de contexte de chat ou de rôles, utilisez le point de terminaison plus simple /api/generate :

import requests

url = "http://localhost:11434/api/generate"
payload = {
    "model": "llama3.1",
    "prompt": "Expliquez la récursion en une phrase."
}

response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
    if line:
        print(line.decode("utf-8"))

Ce point de terminaison est idéal pour les tâches de génération de texte en une seule fois — résumés, extraits de code, etc.


🐍 Option 2 : Utilisation de la bibliothèque Python d’Ollama

La bibliothèque Python d’Ollama offre une interface plus propre aux développeurs qui préfèrent rester entièrement en Python.

Exemple 1 : API de chat

import ollama

response = ollama.chat(
    model="llama3.1",
    messages=[
        {"role": "system", "content": "Vous êtes un assistant de code."},
        {"role": "user", "content": "Générez un script Python qui liste tous les fichiers d'un répertoire."}
    ]
)

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

Cela renvoie le message final sous forme de dictionnaire. Si vous souhaitez une transmission, vous pouvez itérer sur le flux de chat :

stream = ollama.chat(
    model="llama3.1",
    messages=[
        {"role": "user", "content": "Écrivez un haïku sur la récursion."}
    ],
    stream=True
)

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

Exemple 2 : API de génération

import ollama

output = ollama.generate(
    model="llama3.1",
    prompt="Résumez le concept de décorateurs en Python."
)

print(output['response'])

Ou transmettez le résultat :

stream = ollama.generate(
    model="llama3.1",
    prompt="Listez trois avantages d'utiliser Python pour les projets d'IA.",
    stream=True
)

for chunk in stream:
    print(chunk['response'], end='', flush=True)

🧠 Travail avec les modèles de “réflexion”

Ollama prend en charge les “modèles de réflexion” tels que qwen3, conçus pour afficher leurs étapes de raisonnement intermédiaires. Ces modèles produisent une sortie structurée, souvent dans un format comme :

🧠

  Étapes de raisonnement ici...
</think>

Réponse finale ici.

Cela les rend utiles pour :

  • Déboguer le raisonnement du modèle
  • Recherche sur l’interprétabilité
  • Construire des outils qui séparent le pensée du résultat

Exemple : Utilisation d’un modèle de réflexion

import ollama

response = ollama.chat(
    model="qwen3",
    messages=[
        {"role": "user", "content": "Quelle est la capitale de l'Australie ?"}
    ]
)

content = response['message']['content']

# Extraction optionnelle de la partie "pensée"
import re
thinking = re.findall(r"🧠(.*?)✅", content, re.DOTALL)
answer = re.sub(r"🧠.*?✅", "", content, flags=re.DOTALL)

print("🧠 Processus de pensée : \n", thinking[0].strip() if thinking else "N/A")
print("\n✅ Réponse finale : \n", answer.strip())

Quand utiliser les modèles de réflexion

Cas d’utilisation Modèle recommandé Pourquoi
Interprétabilité / Débogage qwen3 Afficher les traces de raisonnement
Applications sensibles à la performance qwen3 mode non-réfléchissant Plus rapide, moins verbeux
Éducatif / Explicatif qwen3 Montre la logique étape par étape

✅ Résumé

Tâche API REST Client Python
Génération de texte simple /api/generate ollama.generate()
Chat conversationnel /api/chat ollama.chat()
Support de transmission Oui Oui
Fonctionne avec les modèles de réflexion Oui Oui

Ollama’s conception locale-first le rend idéal pour des applications d’IA sécurisées, hors ligne ou sensibles à la confidentialité. Que vous construisez un chatbot interactif ou un service d’enrichissement de données en arrière-plan, vous pouvez intégrer les LLM de manière fluide dans votre flux de travail Python — avec un contrôle total sur les modèles, la latence et les données. Pour une comparaison plus large d’Ollama avec d’autres infrastructures LLM locales et cloud, consultez notre LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared.

Liens utiles