Integration von Ollama mit Python: Beispiele für REST-API und Python-Client
+ Spezifische Beispiele unter Verwendung von Thinking LLMs
In diesem Beitrag werden wir zwei Möglichkeiten erkunden, Ihre Python-Anwendung mit Ollama zu verbinden: 1. Über die HTTP REST API; 2. Über die offizielle Ollama Python-Bibliothek.
Wir werden sowohl Chat- als auch Generate-Aufrufe abdecken und dann diskutieren, wie man „Denkmodelle“ effektiv nutzen kann.
Ollama hat sich schnell zu einer der bequemsten Methoden entwickelt, um große Sprachmodelle (LLMs) lokal auszuführen. Mit seiner einfachen Schnittstelle und Unterstützung für beliebte Open-Source-Modelle wie Llama 3, Mistral, Qwen2.5 und sogar „Denk“-Varianten wie qwen3 ist es einfach, KI-Funktionen direkt in Ihre Python-Projekte einzubetten – ohne auf externe Cloud-APIs angewiesen zu sein.
🧩 Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben:
pip install requests ollama
Bestätigen Sie, dass Ollama läuft, indem Sie ausführen:
ollama list
Sie sollten verfügbare Modelle wie llama3
, mistral
oder qwen3
sehen.
⚙️ Option 1: Verwendung der Ollama REST API
Die REST API ist ideal, wenn Sie maximale Kontrolle wünschen oder wenn Sie sie in 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": "Sie sind ein Python-Assistent."},
{"role": "user", "content": "Schreiben Sie eine Funktion, die eine Zeichenkette 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 Antworten zeilenweise (ähnlich wie die Streaming-API von OpenAI). Sie können den Inhalt ansammeln oder ihn in Echtzeit für Chatbots oder CLI-Tools anzeigen.
Beispiel 2: Generate API
Wenn Sie keinen Chat-Kontext oder Rollen benötigen, verwenden Sie das einfachere /api/generate
-Endpoint:
import requests
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama3.1",
"prompt": "Erklären Sie 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"))
Dieses Endpoint eignet sich hervorragend für Einmaltextgenerierungsaufgaben – Zusammenfassungen, Code-Snippets usw.
🐍 Option 2: Verwendung der Ollama Python-Bibliothek
Der Ollama Python-Client bietet eine sauberere Schnittstelle 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": "Sie sind ein Code-Assistent."},
{"role": "user", "content": "Generieren Sie ein Python-Skript, das alle Dateien in einem Verzeichnis auflistet."}
]
)
print(response['message']['content'])
Dies gibt die endgültige Nachricht als Dictionary zurück. Wenn Sie Streaming wünschen, können Sie über den Chat-Stream iterieren:
stream = ollama.chat(
model="llama3.1",
messages=[
{"role": "user", "content": "Schreiben Sie 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="Fassen Sie das Konzept von Dekoratoren in Python zusammen."
)
print(output['response'])
Oder streamen Sie das Ergebnis:
stream = ollama.generate(
model="llama3.1",
prompt="Listen Sie drei Vorteile der Verwendung von Python für KI-Projekte auf.",
stream=True
)
for chunk in stream:
print(chunk['response'], end='', flush=True)
🧠 Arbeit mit „Denkmodellen“
Ollama unterstützt „Denkmodelle“ wie qwen3, die dafür ausgelegt sind, ihre Zwischen-Schlussfolgerungsschritte anzuzeigen. Diese Modelle erzeugen strukturierte Ausgaben, oft in einem Format wie:
<think>
Denkschritte hier...
</think>
Endgültige Antwort hier.
Dadurch sind sie nützlich für:
- Debugging der Modell-Schlussfolgerung
- Forschung zur Interpretierbarkeit
- Bau von Tools, die Denken von Ausgabe trennen
Beispiel: Verwendung eines Denkmodells
import ollama
response = ollama.chat(
model="qwen3",
messages=[
{"role": "user", "content": "Was ist die Hauptstadt von Australien?"}
]
)
content = response['message']['content']
# Optional den „Denk“-Teil extrahieren
import re
thinking = re.findall(r"<think>(.*?)</think>", content, re.DOTALL)
answer = re.sub(r"<think>.*?</think>", "", content, flags=re.DOTALL)
print("🧠 Denkprozess:\n", thinking[0].strip() if thinking else "N/A")
print("\n✅ Endgültige Antwort:\n", answer.strip())
Wann Denkmodelle verwenden
Anwendungsfall | Empfohlenes Modell | Warum |
---|---|---|
Interpretierbarkeit / Debugging | qwen3 |
Anzeige von Denkspuren |
Leistungsempfindliche Anwendungen | qwen3 non-thinking mode |
Schneller, weniger ausführlich |
Bildungs- / Erklärungszwecke | qwen3 |
Zeigt schrittweise Logik |
✅ Zusammenfassung
Aufgabe | REST API | Python-Client |
---|---|---|
Einfache Textgenerierung | /api/generate |
ollama.generate() |
Konversationeller Chat | /api/chat |
ollama.chat() |
Streaming-Unterstützung | Ja | Ja |
Funktioniert mit Denkmodellen | Ja | Ja |
Ollama’s lokal-first-Design macht es ideal für sichere, offline oder datenschutzsensible KI-Anwendungen. Ob Sie einen interaktiven Chatbot oder einen Hintergrund-Datenanreicherungsdienst erstellen, Sie können LLMs nahtlos in Ihren Python-Workflow integrieren – mit voller Kontrolle über Modelle, Latenz und Daten.
Nützliche Links
- https://pypi.org/project/ollama/
- Ollama-Cheat-Sheet
- Python-Cheat-Sheet
- Installation und Konfiguration von Ollama
- Einschränkung von LLMs mit strukturierter Ausgabe: Ollama, Qwen3 & Python oder Go
- Vergleich der strukturierten Ausgabe über beliebte LLM-Anbieter - OpenAI, Gemini, Anthropic, Mistral und AWS Bedrock
- Ollama GPT-OSS-Strukturierte Ausgabe-Probleme
- Wie Ollama parallele Anfragen verarbeitet
- Test: Speicherzuweisung und Modellscheduling in der neuen Ollama-Version - v0.12.1