Ollama mit Python integrieren: REST-API- und Python-Client-Beispiele

+ Konkrete Beispiele mit dem Einsatz von Think-LLMs

Inhaltsverzeichnis

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 und python

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:

  • Ollama installiert und lokal ausgeführt (ollama serve)
  • Python 3.9+
  • Erforderliche Abhängigkeiten:
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>

(.*?)