Connecter le SDK Python à Unsloth
Guide pour appeler l'API locale d'Unsloth depuis Python à l'aide des SDK officiels OpenAI ou Anthropic, y compris le streaming, la vision, l'appel de fonctions et les outils côté serveur intégrés d'Unsloth.
Unsloth propose trois dialectes compatibles avec OpenAI à la même URL de base. Chat Completions, Responses et Anthropic Messages, donc tous les SDK Python grand public fonctionnent avec lui.
Vous ne modifiez que le base_url et api_key côté client ; tout le reste (streaming, appels d’outils, vision, sortie structurée) se comporte comme le documente le SDK. Cette page couvre les deux SDK vers lesquels la plupart des développeurs se tournent en premier : l’officiel SDK Python OpenAI et l’officiel SDK Python Anthropic.
🔑 Prérequis
Avant d’exécuter les extraits ci-dessous, vous aurez besoin de :
d’Unsloth exécuté localement avec un modèle chargé (notez le port : généralement
8000ou8888).Une
sk-unsloth-…clé API créée à partir de Paramètres → API.Un nom de modèle. Le nom du modèle GGUF dans Unsloth (par ex.
qwen-local,unsloth/Qwen3.6-27B-GGUF). Si vous l’oubliez, exécutez :curl http://localhost:8888/v1/models -H "Authorization: Bearer sk-unsloth-…"et copiez le
idchamp.
Définissez la clé comme variable d’environnement afin de ne jamais la coller dans le code :
export UNSLOTH_STUDIO_AUTH_TOKEN=sk-unsloth-xxxxxxxxxxxx🤖 SDK OpenAI
d'Unsloth /v1/chat/completions Le point de terminaison est un remplacement direct pour le SDK Python OpenAI. Le client traite Unsloth comme n’importe quel autre fournisseur compatible OpenAI.
1. Installez le SDK :
pip install openai2. Créez un client pointant vers Unsloth :
import os
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8888/v1", # votre port Unsloth + /v1
api_key=os.environ["UNSLOTH_STUDIO_AUTH_TOKEN"], # votre clé sk-unsloth-…
)Complétion de chat de base

Diffusion en continu
Définissez stream=True et itérez sur le générateur renvoyé :

Images (vision)
Attachez une image comme un image_url élément de contenu. Unsloth accepte soit une URL HTTP(S), soit une donnée : URI base64 :

Appel de fonctions (outils OpenAI)
Passez des outils et (éventuellement) tool_choice et Unsloth les transmet au backend. Votre client est responsable d’exécuter chaque appel d’outil et de renvoyer le résultat au tour suivant :

Outils côté serveur d’Unsloth (raccourci)
En plus des outils côté client au style OpenAI, Unsloth peut exécuter Python, bashet recherche web côté serveur et renvoyer automatiquement les résultats en flux. Activez cette option via le extra_body paramètre afin que les champs soient transmis tels quels à Unsloth :


Le session_id est facultatif. Utilisez-le pour conserver l’état des outils (par ex. un noyau Python) entre les appels.
Liste des modèles

🧠 SDK Anthropic
d'Unsloth /v1/messages Le point de terminaison est un remplacement direct pour le SDK Python Anthropic.
1. Installez le SDK :
2. Créez un client pointant vers Unsloth :
Message de base

Diffusion en continu
Le SDK expose un gestionnaire de contexte qui produit des deltas de texte :
Images (vision)
Le contenu d’image au style Anthropic utilise un code source bloc avec des données base64 :

Appel d’outils (outils Anthropic)
Passez du style Anthropic outils avec un input_schema et Unsloth les transmet nativement :

Outils côté serveur d’Unsloth (raccourci)
Le même enable_tools / enabled_tools / session_id raccourci fonctionne avec /v1/messages transmettez-le extra_body:


Unsloth émet des tool_result événements SSE personnalisés pour la vue qu’a le modèle de la sortie de chaque appel d’outil. Le SDK Anthropic les relaie tels quels dans son flux d’événements.
Décodage JSON (response_format)
Unsloth prend en charge les sorties structurées au style OpenAI via response_format. Passez un schéma JSON et le modèle est contraint de produire du JSON conforme.
Le strict : True indique à Unsloth d’imposer le schéma pendant le décodage plutôt que de compter sur le modèle pour s’y conformer de lui-même. additionalProperties : False et required fonctionnent comme dans le JSON Schema standard.
La sortie du terminal devrait ressembler à peu près à ceci :

🧪 Choisir un SDK
Les deux SDK fonctionnent avec Unsloth. Le bon choix dépend du reste de votre pile :
Utilisez le SDK OpenAI si votre code dépend déjà du package Python OpenAI, que vous souhaitez un style OpenAI
outils/tool_choice, ou que vous prévoyez d’appeler l’API Responses.Utilisez le SDK Anthropic si votre code dépend déjà du package Anthropic, que vous préférez le format d’outils
input_schemaAnthropic, ou que vous voulez les types d’événements de streaming natifs d’Anthropic.
Vous pouvez utiliser les deux dans le même projet. Unsloth les sert sur le même port, donc une seule sk-unsloth-… clé authentifie les deux.
❔ Dépannage
401 Non autorisé Le UNSLOTH_STUDIO_AUTH_TOKEN la variable d’environnement n’est pas définie, ou la clé est incorrecte. Réexportez-la et confirmez avec echo $UNSLOTH_STUDIO_AUTH_TOKEN.
404 Not Found du SDK OpenAI Vérifiez que base_url se termine /v1par. Le SDK OpenAI ajoute les chemins de point de terminaison à l’URL de base tels quels.
404 Not Found du SDK Anthropic Vérifiez que base_url se termine rend par /v1. Le SDK Anthropic ajoute /v1/messages lui-même.
extra_body les champs n’atteignent pas Unsloth Assurez-vous d’utiliser une version récente du SDK openai / anthropic . Les anciennes versions ignorent silencieusement les champs inconnus. Mettez à niveau avec pip install -U openai anthropic.
Le streaming « se bloque » puis affiche tout d’un coup Ce qui encapsule votre sortie la met en tampon. Dans un script, print(..., flush=True); dans un notebook, c’est généralement correct ; derrière un proxy, désactivez la mise en tampon des réponses sur le proxy.
Pour les problèmes au niveau du point de terminaison (mauvais port, modèle non chargé, connexion perdue, etc.), consultez la page d’aperçu de l’API.
Facultatif : définir les valeurs par défaut du serveur
Vous pouvez configurer le comportement par défaut du serveur avant de vous connecter avec le SDK Python, lorsque vous utilisez le unsloth run commande.
Utilisez --reasoning off pour désactiver le raisonnement, ou --reasoning on pour l'activer pour les modèles qui prennent en charge le raisonnement.
Cela démarre le serveur sur 0.0.0.0:8888, ce qui permet à d'autres appareils de votre réseau local de s'y connecter.
Ces paramètres deviennent les valeurs par défaut du serveur lorsque les requêtes ne spécifient pas leurs propres paramètres de génération.
Des valeurs au niveau de la requête comme temperature, top_p, max_tokenset stream peuvent toujours remplacer les valeurs par défaut pour cette requête.
Mis à jour
Ce contenu vous a-t-il été utile ?

