Python-SDK mit Unsloth verbinden
Anleitung zum Aufrufen der lokalen API von Unsloth aus Python mit den offiziellen OpenAI- oder Anthropic-SDKs, einschließlich Streaming, Vision, Funktionsaufrufen und den integrierten serverseitigen Tools von Unsloth.
Unsloth stellt drei OpenAI-kompatible Dialekte unter derselben Basis-URL bereit. Chat Completions, Responses und Anthropic Messages, sodass jedes gängige Python-SDK damit funktioniert.
Du änderst nur die base_url und api_key am Client; alles andere (Streaming, Tool-Aufrufe, Vision, strukturierte Ausgabe) verhält sich so, wie es die SDK-Dokumentation beschreibt. Diese Seite behandelt die zwei SDKs, zu denen die meisten Entwickler zuerst greifen: das offizielle OpenAI Python SDK und das offizielle Anthropic Python SDK.
🔑 Voraussetzungen
Bevor du die folgenden Snippets ausführst, benötigst du:
Unsloth lokal ausgeführt mit geladenem Modell (achte auf den Port: typischerweise
8000oder8888).Einen
sk-unsloth-…API-Schlüssel erstellt aus Einstellungen → API.Ein Modellname. Der Name des GGUF-Modells in Unsloth (z. B.
qwen-local,unsloth/Qwen3.6-27B-GGUF). Falls du ihn vergessen hast, führe Folgendes aus:curl http://localhost:8888/v1/models -H "Authorization: Bearer sk-unsloth-…"und kopiere das
idFeld.
Setze den Schlüssel als Umgebungsvariable, damit du ihn nie in Code einfügst:
export UNSLOTH_STUDIO_AUTH_TOKEN=sk-unsloth-xxxxxxxxxxxx🤖 OpenAI SDK
Unsloths /v1/chat/completions Endpunkt ist ein Drop-in für das OpenAI Python SDK. Der Client behandelt Unsloth wie jeden anderen OpenAI-kompatiblen Anbieter.
1. Installiere das SDK:
pip install openai2. Erstelle einen Client mit Verweis auf Unsloth:
import os
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8888/v1", # dein unsloth-Port + /v1
api_key=os.environ["UNSLOTH_STUDIO_AUTH_TOKEN"], # dein sk-unsloth-…-Schlüssel
)Einfache Chat Completion

Streaming
Setze stream=True und iteriere über den zurückgegebenen Generator:

Bilder (Vision)
Hänge ein Bild als image_url Inhaltsteil an. Unsloth akzeptiert entweder eine HTTP(S)-URL oder eine data: Base64-URI:

Funktionsaufrufe (OpenAI-Tools)
Übergib OpenAI-ähnliche tools und (optional) tool_choice und Unsloth leitet sie an das Backend weiter. Dein Client ist dafür verantwortlich, jeden Tool-Aufruf auszuführen und das Ergebnis im nächsten Durchlauf zurückzugeben:

Unsloth-Server-Tools (Kurzform)
Zusätzlich zu OpenAI-artigen Tools auf Client-Seite kann Unsloth Python, bashund Websuche serverseitig ausführen und die Ergebnisse automatisch zurückstreamen. Aktiviere dies über den extra_body Parameter, damit die Felder direkt an Unsloth durchgereicht werden:


Die session_id ist optional. Verwende sie, um den Tool-Status (z. B. einen Python-Kernel) über Aufrufe hinweg beizubehalten.
Modelle auflisten

🧠 Anthropic SDK
Unsloths /v1/messages Endpunkt ist ein Drop-in für das Anthropic Python SDK.
1. Installiere das SDK:
2. Erstelle einen Client mit Verweis auf Unsloth:
Einfache Nachricht

Streaming
Das SDK stellt einen Kontextmanager bereit, der Text-Deltas liefert:
Bilder (Vision)
Anthropic-artiger Bildinhalt verwendet einen source Block mit Base64-Daten:

Tool-Aufrufe (Anthropic-Tools)
Übergib Anthropic-ähnliche tools mit einem input_schema und Unsloth leitet sie nativ weiter:

Unsloth-Server-Tools (Kurzform)
Die gleiche enable_tools / enabled_tools / session_id Kurzform funktioniert auch bei /v1/messages gib es einfach weiter extra_body:


Unsloth gibt benutzerdefinierte tool_result SSE-Ereignisse für die Sicht des Modells auf die Ausgabe jedes Tool-Aufrufs aus. Das Anthropic SDK reicht diese unverändert über seinen Ereignisstrom weiter.
JSON-Dekodierung (response_format)
Unsloth unterstützt OpenAI-artige strukturierte Ausgaben über response_format. Übergib ein JSON-Schema, und das Modell wird darauf beschränkt, JSON auszugeben, das diesem entspricht.
Die strict: True Flag weist Unsloth an, das Schema während der Dekodierung durchzusetzen, statt sich darauf zu verlassen, dass das Modell sich von selbst daran hält. additionalProperties: False und required funktionieren wie in standardmäßigem JSON Schema.
Die Terminalausgabe sollte ungefähr so aussehen:

🧪 Ein SDK auswählen
Beide SDKs funktionieren mit Unsloth. Die richtige Wahl hängt von deinem restlichen Stack ab:
Verwende das OpenAI SDK wenn dein Code bereits vom OpenAI-Python-Paket abhängt, du OpenAI-ähnliche
tools/tool_choicemöchtest oder du die Responses API aufrufen willst.Verwende das Anthropic SDK wenn dein Code bereits vom Anthropic-Paket abhängt, du Anthropics
input_schemaTool-Format bevorzugst oder du die nativen Streaming-Ereignistypen von Anthropic möchtest.
Du kannst beide im selben Projekt verwenden. Unsloth stellt sie über denselben Port bereit, sodass ein einzelner sk-unsloth-… Schlüssel beide authentifiziert.
❔ Fehlerbehebung
401 Unauthorized Die UNSLOTH_STUDIO_AUTH_TOKEN Umgebungsvariable ist nicht gesetzt oder der Schlüssel ist falsch. Setze sie erneut und prüfe mit echo $UNSLOTH_STUDIO_AUTH_TOKEN.
404 Not Found aus dem OpenAI SDK Prüfe, dass base_url endet mit /v1. Das OpenAI SDK hängt Endpunktpfade unverändert an die Basis-URL an.
404 Not Found aus dem Anthropic SDK Prüfe, dass base_url endet nicht mit /v1. Das Anthropic SDK fügt /v1/messages selbst hinzu.
extra_body Felder gelangen nicht zu Unsloth Stelle sicher, dass du eine aktuelle openai / anthropic SDK-Version verwendest. Ältere Versionen verwerfen unbekannte Felder stillschweigend. Aktualisiere mit pip install -U openai anthropic.
Streaming „hängt“ und gibt dann alles auf einmal aus Alles, was deine Ausgabe umhüllt, puffert. In einem Skript print(..., flush=True); in einem Notebook ist es normalerweise in Ordnung; hinter einem Proxy musst du das Response-Buffering auf dem Proxy deaktivieren.
Bei Problemen auf Endpunkt-Ebene (falscher Port, Modell wird nicht geladen, Verbindung verloren usw.) siehe die API-Übersichtsseite.
Optional: Server-Standardwerte setzen
Du kannst das Standardverhalten des Servers vor der Verbindung mit dem Python SDK konfigurieren, wenn du den unsloth run Befehl verwendest.
Verwende --reasoning off um das Denken auszuschalten, oder --reasoning on um es für Modelle zu aktivieren, die Reasoning unterstützen.
Dadurch wird der Server auf 0.0.0.0:8888gestartet, sodass andere Geräte in deinem lokalen Netzwerk sich verbinden können.
Diese Einstellungen werden zu den Server-Standardeinstellungen, wenn Anfragen keine eigenen Generierungsparameter angeben.
Werte auf Anfrageebene wie temperature, top_p, max_tokensund stream können die Standardwerte für diese Anfrage weiterhin überschreiben.
Zuletzt aktualisiert
War das hilfreich?

