Published on

Ollama Python: Client lokal anbinden

Authors

TL;DR

Ollama Python ist die offizielle Bibliothek, nicht ein zweites Runtime. Voraussetzung laut README: Ollama ist installiert und läuft, ein Modell ist gezogen. Dann pip install ollama (PyPI, Stand dieses Laufs: Version 0.6.3, Python 3.8+). chat() spricht den lokalen Server auf http://localhost:11434 an. Streaming mit stream=True. Ein eigener Host geht über Client(host=...). Gelesen in README, PyPI und API-Doku am 2026-10-08.


Python-Client und Engine sind zwei Schichten

IT-Leiter suchen „ollama python“, wenn Fachanwendungen, Jobs oder Tests die bereits laufende API nutzen sollen — nicht, wenn die Binary fehlt. Die Engine kommt von Ollama Download oder Ollama unter Ubuntu. Dieser Text behandelt nur den Client.

Die API-Einführung nennt Python und JavaScript als offizielle Bibliotheken. Die Bibliothek ist um die REST-API gebaut. Lokal gilt der Server http://localhost:11434, Chat-Pfad /api/chat. Cloud-Aufrufe gegen https://ollama.com/api brauchen einen API-Schlüssel; lokal entfällt der Authorization-Header. Das ist keine Bewertung, nur die Tabelle aus der Doku.

SchichtWas die Doku beschreibtPrüfung
EngineInstaller, Linux-Skript oder Docker-Imageollama -v, Port 11434
Modellollama pull, Beispiel im README: gemma4ollama list bzw. ollama.list()
PythonPaket ollama, chat() / ClientAntwort message.content

Kein Weg ist ein Ranking. Derselbe Endpoint, nur aus Python.

Voraussetzung: Server und Modell

Das README:

  • Ollama ist installiert und läuft.
  • Ein Modell ist gezogen: ollama pull gemma4 (Beispiel der aktuellen README, kein Pflichtmodell für Ihr Haus).

Ohne laufenden Server liefert der Client einen Fehler, kein stilles Fallback. Port und Bind-Adresse bleiben OLLAMA_HOST, beschrieben in Ollama Port 11434. In Docker ist der Host die gemappte API, nicht automatisch localhost im Container-Netz — siehe Ollama Docker.

Installation: pip install ollama

PyPI, Paketname ollama, Lizenz MIT, Anforderung Python >=3.8. Abhängigkeiten laut Projektseite: httpx >=0.27 und pydantic >=2.9. Stand dieses Laufs ist die veröffentlichte Version 0.6.3.

pip install ollama

Das Paket holt nicht die Engine. Eine neuere Binary bleibt ein Ollama Update.

Chat: eine Nachricht, eine Antwort

README-Beispiel, Funktion chat und Typ ChatResponse:

from ollama import chat
from ollama import ChatResponse

response: ChatResponse = chat(
  model='gemma4',
  messages=[
    {
      'role': 'user',
      'content': 'Why is the sky blue?',
    },
  ],
)
print(response['message']['content'])
print(response.message.content)

Beide Zugriffe stehen so in der README: Dict-Key und Attribut. Die HTTP-Seite POST /api/chat zeigt denselben Ablauf mit curl gegen http://localhost:11434/api/chat und dem Modellnamen gemma4.

Streaming

stream=True liefert Chunks. Die README iteriert über den Stream und schreibt chunk['message']['content'] ohne Zeilenumbruch.

from ollama import chat

stream = chat(
  model='gemma4',
  messages=[{'role': 'user', 'content': 'Why is the sky blue?'}],
  stream=True,
)

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

Die Chat-API beschreibt dasselbe Verhalten auf HTTP-Ebene als application/x-ndjson. Der Client verpackt die Chunks.

Client mit eigenem Host

Default ist http://localhost:11434. Weicht der Port oder der Hostname ab, erzeugt die README einen Client:

from ollama import Client

client = Client(
  host='http://localhost:11434',
  headers={'x-some-header': 'some-value'},
)
response = client.chat(
  model='gemma4',
  messages=[{'role': 'user', 'content': 'Why is the sky blue?'}],
)

Zusätzliche Keyword-Argumente gehen laut README an httpx.Client. Für asynchrone Aufrufe gibt es AsyncClient mit denselben Feldern; stream=True wird dort zum asynchronen Generator.

Cloud gegen https://ollama.com setzt die README so: Host auf https://ollama.com, Header Authorization: Bearer plus Umgebungsvariable OLLAMA_API_KEY. Dieser Artikel bleibt beim lokalen Server. Schlüssel und Kontingente der Cloud stehen nicht in der gelesenen lokalen Chat-Doku und werden hier nicht ergänzt.

Weitere Aufrufe aus der README

Dieselben Funktionsnamen wie die REST-Pfade:

FunktionZweck laut README
ollama.chat(...)Chat-Nachrichten
ollama.generate(...)ein Prompt, eine Antwort
ollama.list()lokale Modelle
ollama.show('gemma4')Modelldetails
ollama.pull('gemma4')Modell holen
ollama.embed(...)Embeddings, auch als Liste
ollama.ps()laufende Modelle

create, copy, delete, push existieren ebenfalls. Sie ändern den Modellbestand auf dem Server, nicht nur den Prompt.

Fehler: ollama.ResponseError bei Fehlerstatus oder Stream-Fehler. Das README-Beispiel prüft e.status_code == 404 und ruft dann ollama.pull auf. 404 heißt hier: Modell fehlt lokal, nicht „Python ist falsch“.

Typische Brüche

Engine nicht gestartet. pip ist durch, chat() nicht. Zuerst ollama -v und curl http://localhost:11434/api/tags.

Anderer Port, alter Host. Nach OLLAMA_HOST muss Client(host=...) dieselbe URL nutzen wie Open WebUI und curl.

Docker-Netz. localhost im Python-Prozess ist nicht der Container. Host-Port oder Service-Name aus Compose, nicht raten.

Modellname. Das README-Beispiel gemma4 muss lokal liegen. ollama list oder ollama.list() vor dem ersten Chat.

Client-Update statt Engine-Update. pip install -U ollama aktualisiert die Bibliothek. Die Binary bleibt ein separates Update.

FAQ

Brauche ich Python, um Ollama zu betreiben?

Nein. CLI, Desktop-App und HTTP reichen. Python ist die Anbindung für Skripte und Fachanwendungen.

Ist pip install ollama die Engine?

Nein. Das Paket ist der Client. Die Engine kommt vom Installer, vom Linux-Skript oder vom Image ollama/ollama.

Welche Python-Version verlangt das Paket?

PyPI: Python >=3.8. Das README spricht von Python-3.8+-Projekten.

Kann ich die REST-API ohne die Bibliothek nutzen?

Ja. POST http://localhost:11434/api/chat steht in der Chat-Doku. Die Bibliothek ist Komfort um dieselbe API.

Wohin zeigt der Client nach einem Port-Wechsel?

Auf die neue Basis-URL, zum Beispiel http://127.0.0.1:11435. Ohne angepassten Client(host=...) bleibt der Default 11434.

Fazit

„Ollama Python“ ist der offizielle Client gegen die laufende API: Paket von PyPI, chat() oder Client, Streaming bei Bedarf, Host explizit wenn der Port nicht 11434 ist. Die Engine und das Modell bleiben eigene Schritte. Kein zweiter Hardware-Kauf, keine Anbieterliste.

📖 Verwandte Artikel

Weitere interessante Beiträge zu ähnlichen Themen