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 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
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
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
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())
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
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
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