Ollama mit Python integrieren: REST-API- und Python-Client-Beispiele
+ Konkrete Beispiele mit dem Einsatz von Think-LLMs
In diesem Beitrag untersuchen wir zwei Möglichkeiten, Ihre Python-Anwendung mit Ollama zu verbinden: 1. Über die HTTP REST API; 2. Über die offizielle Ollama Python-Bibliothek.
Wir behandeln sowohl Chat- als auch Generate-Aufrufe und besprechen anschließend, wie man „Thinking-Modelle“ effektiv nutzen kann.

Ollama hat sich schnell zu einer der bequemsten Möglichkeiten entwickelt, um große Sprachmodelle (LLMs) lokal zu betreiben. Um zu sehen, wie Ollama mit vLLM, Docker Model Runner, LocalAI und Cloud-Anbietern vergleicht – und wann Sie jeweils welche Option wählen sollten – siehe LLM-Hosting: Lokal, Selbstgehostet & Cloud-Infrastruktur im Vergleich. Dank seiner einfachen Benutzeroberfläche und der Unterstützung für beliebte Open-Modelle wie Llama 3, Mistral, Qwen2.5 und sogar „Thinking“-Varianten wie qwen3 ist es einfach, KI-Funktionen direkt in Ihre Python-Projekte einzubauen – ohne auf externe Cloud-APIs zu verlassen.
🧩 Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie folgende Voraussetzungen erfüllen:
pip install requests ollama
Bestätigen Sie, dass Ollama läuft, indem Sie folgenden Befehl ausführen:
ollama list
Sie sollten verfügbare Modelle wie llama3, mistral oder qwen3 sehen.
⚙️ Option 1: Verwenden der Ollama REST API
Die REST API ist ideal, wenn Sie maximale Kontrolle benötigen oder wenn Sie mit Frameworks integrieren, die bereits HTTP-Anfragen verarbeiten.
Beispiel 1: Chat API
import requests
import json
url = "http://localhost:11434/api/chat"
payload = {
"model": "llama3.1",
"messages": [
{"role": "system", "content": "Du bist ein Python-Assistent."},
{"role": "user", "content": "Schreibe eine Funktion, die eine Zeichenfolge umkehrt."}
]
}
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="")
👉 Die Ollama REST API streamt die Antworten Zeile für Zeile (ähnlich wie die Streaming-API von OpenAI). Sie können den Inhalt sammeln oder ihn in Echtzeit für Chatbots oder CLI-Tools anzeigen.
Beispiel 2: Generate API
Wenn Sie keine Chat-Kontexte oder Rollen benötigen, verwenden Sie den einfachen Endpunkt /api/generate:
import requests
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama3.1",
"prompt": "Erkläre Rekursion in einem Satz."
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
print(line.decode("utf-8"))
Dieser Endpunkt ist ideal für Einzelvorgänge der Textgenerierung – Zusammenfassungen, Codeausschnitte usw.
🐍 Option 2: Verwenden der Ollama Python-Bibliothek
Die Ollama Python-Bibliothek bietet eine sauberere Oberfläche für Entwickler, die vollständig in Python bleiben möchten.
Beispiel 1: Chat API
import ollama
response = ollama.chat(
model="llama3.1",
messages=[
{"role": "system", "content": "Du bist ein Code-Assistent."},
{"role": "user", "content": "Generiere ein Python-Skript, das alle Dateien in einem Verzeichnis auflistet."}
]
)
print(response['message']['content'])
Dies gibt die finale Nachricht als Dictionary zurück. Wenn Sie Streaming verwenden möchten, können Sie den Chat-Stream iterieren:
stream = ollama.chat(
model="llama3.1",
messages=[
{"role": "user", "content": "Schreibe ein Haiku über Rekursion."}
],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
Beispiel 2: Generate API
import ollama
output = ollama.generate(
model="llama3.1",
prompt="Erkläre den Begriff Decorator in Python."
)
print(output['response'])
Oder streamen Sie das Ergebnis:
stream = ollama.generate(
model="llama3.1",
prompt="Nenne drei Vorteile der Verwendung von Python für AI-Projekte.",
stream=True
)
for chunk in stream:
print(chunk['response'], end='', flush=True)
🧠 Arbeiten mit „Thinking“-Modellen
Ollama unterstützt „Thinking-Modelle“ wie qwen3, die dafür konzipiert wurden, ihre Zwischenschritte der logischen Schlussfolgerung anzuzeigen. Diese Modelle erzeugen strukturierten Ausgang, oft in einem Format wie:
</think>
Schlussfolgerungsschritte hier...
</think>
Endgültige Antwort hier.
Dies macht sie nützlich für:
- Debuggen der Modell-Schlussfolgerung
- Forschung zur Interpretierbarkeit
- Erstellen von Tools, die Gedanken von Ausgabe trennen
Beispiel: Verwenden eines „Thinking“-Modells
import ollama
response = ollama.chat(
model="qwen3",
messages=[
{"role": "user", "content": "Was ist die Hauptstadt Australiens?"}
]
)
content = response['message']['content']
# Optionaler Auszug des „Thinking“-Teils
import re
thinking = re.findall(r"</think>
(.*?)