Ollama-Nutzung mit Python

Ollama bietet ein Python SDK, das es uns ermöglicht, mit lokal laufenden Modellen in einer Python-Umgebung zu interagieren.

Mit dem Python SDK von Ollama können Sie Aufgaben der natürlichen Sprachverarbeitung einfach in Python-Projekte integrieren und verschiedene Operationen wie Textgenerierung, Konversationsgenerierung und Modellverwaltung ausführen, ohne die Befehlszeile manuell aufrufen zu müssen.

Python SDK installieren

Zuerst müssen wir das Python SDK von Ollama installieren.

Sie können es mit pip installieren:

pip install ollama

Stellen Sie sicher, dass in Ihrer Umgebung Python 3.x installiert ist und dass Ihre Netzwerkumgebung auf den lokalen Ollama-Dienst zugreifen kann.

Lokalen Dienst starten

Bevor Sie das Python SDK verwenden, stellen Sie sicher, dass der lokale Ollama-Dienst gestartet wurde.

Sie können ihn mit dem Befehlszeilentool starten:

ollama serve

Nach dem Starten des lokalen Dienstes kommuniziert das Python SDK mit dem lokalen Dienst, um Aufgaben wie Modellinferenz auszuführen.

Verwenden des Python SDK von Ollama für die Inferenz

Nach der Installation des SDK und dem Starten des lokalen Dienstes können wir über Python-Code mit Ollama interagieren.

Zuerst importieren Sie chat und ChatResponse aus der ollama-Bibliothek:

from ollama import chat
from ollama import ChatResponse

Über das Python SDK können Sie Anfragen an ein angegebenes Modell senden, um Text oder Konversationen zu generieren:

Beispiel

from ollama import chat
from ollama import ChatResponse

response: ChatResponse = chat(model='qwen3.5', messages=[
  {
    'role': 'user',
    'content': 'Who are you?',
  },
])
# Antwortinhalt ausgeben
print(response['message']['content'])

# Oder direkt auf die Felder des Response-Objekts zugreifen
#print(response.message.content)

Wenn Sie den obigen Code ausführen, ist die Ausgabe:

你好!我是 Qwen3.5,是通义千问系列中最新推出的大语言模型。我具备强大的语言理解与生成能力,能协助你完成多种任务!

Das Ollama SDK unterstützt auch Streaming-Antworten. Beim Senden einer Anfrage können wirstream=Truesetzen, um Antwort-Streaming zu aktivieren.

Beispiel

from ollama import chat

stream = chat(
    model='qwen3.5',
    messages=[{'role': 'user', 'content': 'Who are you?'}],
    stream=True,
)

# Antwortinhalt Stück für Stück ausgeben
for chunk in stream:
    print(chunk['message']['content'], end='', flush=True)

Benutzerdefinierter Client

Sie können auch einen benutzerdefinierten Client erstellen, um die Anfragekonfiguration weiter zu steuern, z. B. das Festlegen benutzerdefinierter Header oder die Angabe der URL des lokalen Dienstes.

Benutzerdefinierten Client erstellen

Über Client können Sie Anfrageeinstellungen anpassen (z. B. Anfrage-Header, URL usw.) und Anfragen senden.

Beispiel

from ollama import Client

Client = Client(
    host='http://localhost:11434',
    headers={'x-some-header': 'some-value'}
)

response = client.chat(model='qwen3.5', messages=[
    {
        'role': 'user',
        'content': 'Who are you?',
    },
])
print(response['message']['content'])

Asynchroner Client

Wenn Sie Anfragen asynchron ausführen möchten, können Sie die Klasse AsyncClient verwenden, die für Szenarien geeignet ist, die Nebenläufigkeit erfordern.

Beispiel

import asyncio
from ollama import AsyncClient

async def chat():
    message = {'role': 'user', 'content': 'Wer sind Sie?'}
    response = await AsyncClient().chat(model='qwen3.5', messages=[message])
    print(response['message']['content'])

asyncio.run(chat())
anders

Der asynchrone Client unterstützt dieselbe Funktionalität wie traditionelle synchrone Anfragen; der einzige Unterschied besteht darin, dass Anfragen asynchron ausgeführt werden, was die Leistung verbessern kann, insbesondere in Szenarien mit hoher Nebenläufigkeit.

Asynchrone Streaming-Antwort

Wenn Sie Streaming-Antworten asynchron verarbeiten müssen, können Siestream=Truesetzen, um dies mit einem asynchronen Generator umzusetzen.

Beispiel

import asyncio
from ollama import AsyncClient

async def chat():
    message = {'role': 'user', 'content': 'Wer sind Sie?'}
    async for part in await AsyncClient().chat(model='qwen3.5', messages=[message], stream=True):
        print(part['message']['content'], end='', flush=True)

asyncio.run(chat())

Hier wird die Antwort asynchron in Teilen zurückgegeben, und jeder Teil kann sofort verarbeitet werden.


Gängige API-Methoden

Das Ollama Python SDK bietet einige gängige API-Methoden zum Betreiben und Verwalten von Modellen.

1. chat-Methode

Führt die Konversationsgenerierung mit dem Modell durch, sendet Benutzernachrichten und ruft Modellantworten ab:

ollama.chat(model='llama3.2', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}])

2. generate-Methode

Wird für Textgenerierungsaufgaben verwendet. Ähnlich wie die chat-Methode, erfordert jedoch nur einen prompt-Parameter:

ollama.generate(model='llama3.2', prompt='Why is the sky blue?')

3. list-Methode

Listet alle verfügbaren Modelle auf:

ollama.list()

4. show-Methode

Zeigt detaillierte Informationen zum angegebenen Modell an:

ollama.show('llama3.2')

5. create-Methode

Erstellt ein neues Modell aus einem vorhandenen Modell:

ollama.create(model='example', from_='llama3.2', system="You are Mario from Super Mario Bros.")

6. copy-Methode

Kopiert ein Modell an einen anderen Ort:

ollama.copy('llama3.2', 'user/llama3.2')

7. delete-Methode

Löscht das angegebene Modell:

ollama.delete('llama3.2')

8. pull-Methode

Holt ein Modell aus einem Remote-Repository:

ollama.pull('llama3.2')

9. push-Methode

Überträgt ein lokales Modell in ein Remote-Repository:

ollama.push('user/llama3.2')

10. embed-Methode

Erzeugt Text-Embeddings:

ollama.embed(model='llama3.2', input='The sky is blue because of rayleigh scattering')

11. ps-Methode

Zeigt die Liste der laufenden Modelle an:

ollama.ps()

Fehlerbehandlung

Das Ollama SDK löst Fehler aus, wenn eine Anfrage fehlschlägt oder wenn während des Response-Streamings Probleme auftreten.

Wir können try-except-Anweisungen verwenden, um diese Fehler abzufangen und sie nach Bedarf zu behandeln.

Beispiel

model = 'does-not-yet-exist'

try:
    response = ollama.chat(model)
except ollama.ResponseError as e:
    print('Error:', e.error)
    if e.status_code == 404:
        ollama.pull(model)

Im obigen Beispiel wird, wenn das Modell does-not-yet-exist nicht existiert, ein ResponseError ausgelöst. Nachdem Sie ihn abgefangen haben, können Sie wählen, das Modell zu pullen oder andere Verarbeitungen durchzuführen.

Andere Erweiterungen