For the complete documentation index, see llms.txt. This page is also available as Markdown.

Connecter Curl et HTTP à Unsloth

Guide pour interroger l’API d’Unsloth avec curl (ou tout client HTTP), avec des exemples prêts à copier-coller pour chaque point de terminaison et fonctionnalité.

Unsloth expose trois formats de fil compatibles OpenAI/Anthropic à la même URL de base sur le port sur lequel Unsloth a démarré. Tous prennent un Authorization: Bearer sk-unsloth-… en-tête et renvoient soit du JSON soit du SSE, selon que vous définissez stream. Cette page regroupe les recettes par point de terminaison (/v1/chat/completions, /v1/messages, /v1/responses, /v1/models) et se termine par une section commune sur les outils côté serveur, qui fonctionnent sur tous les points de terminaison de chat.

Si vous ne savez pas quelle URL / clé / nom de modèle utiliser, lisez d'abord la vue d'ensemble de l'API. Elle vous guide pour démarrer Unsloth, charger un modèle et créer une sk-unsloth-… clé.

🔑 Authentification

Chaque requête a besoin d'un Authorization en-tête :

Authorization: Bearer sk-unsloth-xxxxxxxxxxxx

Pour éviter que les clés apparaissent dans l'historique de votre shell, exportez la clé une fois et référencez la variable d'environnement :

export UNSLOTH_STUDIO_AUTH_TOKEN=sk-unsloth-xxxxxxxxxxxx

Les extraits ci-dessous intègrent la clé en ligne sous la forme sk-unsloth-xxxxxxxxxxxx pour plus de clarté. En pratique, remplacez $UNSLOTH_STUDIO_AUTH_TOKEN.

📋 Lister les modèles chargés

curl http://localhost:8888/v1/models \
  -H "Authorization: Bearer sk-unsloth-xxxxxxxxxxxx"

Réponse:

{
  "object": "list",
  "data": [
    {"id": "unsloth/gemma-3-27b-it-GGUF", "object": "model", "owned_by": "local"}
  ]
}

Utilisez le id champ chaque fois qu'une requête a besoin d'une "model" valeur (ou lorsqu'un client comme opencode demande un ID du modèle).

💬 Complétions de chat (/v1/chat/completions)

Le dialecte OpenAI Chat Completions. La surface de compatibilité la plus large. Fonctionne avec le SDK OpenAI, opencode, Cursor, Continue, Cline, Open WebUI, SillyTavern et la plupart des outils compatibles OpenAI.

Requête de base

Flux en streaming

Ajoutez "stream": true et la réponse passe aux événements envoyés par le serveur (text/event-stream). Indiquez à curl de vider la sortie au fur et à mesure que les octets arrivent avec --no-buffer (-N):

Chaque ligne de la réponse ressemble à data: {"choices":[{"delta":{"content":"..."}}]}, et se terminant par data: [DONE].

Images (vision)

Joignez une image en tant que image_url partie de contenu dans le message utilisateur. L'URL peut être HTTPS ou une URI base64 data: URI :

Le modèle chargé doit être multimodal. Si vous chargez un modèle texte uniquement, la requête réussit structurellement mais le modèle ne traitera pas l'image.

Appel de fonctions (outils OpenAI)

Passez des tools et, éventuellement, tool_choice. Votre client exécute chaque appel d'outil et renvoie le résultat au tour suivant.

📨 Messages Anthropic (/v1/messages)

Le dialecte compatible Anthropic d'Unsloth utilisé par Claude Code, le SDK Anthropic, OpenClaw et tout client qui parle l'API Messages.

Requête de base

Flux en streaming

Les événements suivent la structure SSE d'Anthropic : message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stopainsi que l'événement personnalisé tool_result pour la sortie des outils côté serveur.

Images (vision)

Le contenu d'image au format Anthropic utilise un source bloc avec des données base64 :

Appel d'outils (outils Anthropic)

tool_choice les valeurs correspondent comme suit au dialecte OpenAI : Anthropic auto → OpenAI auto, Anthropic any → OpenAI required, Anthropic {type: "tool", name: "x"} → OpenAI {type: "function", function: {name: "x"}}, Anthropic none → OpenAI none.

🧬 Réponses (/v1/responses)

Unsloth parle aussi de la nouvelle API OpenAI Responses, le protocole vers lequel Codex et d'autres clients OpenAI récents ont migré.

Le streaming fonctionne de la même façon que pour Chat Completions. Ajoutez "stream": true et canalisez avec -N.

🧰 Outils côté serveur d'Unsloth (abrégé)

En plus de l'appel de fonctions côté client, Unsloth peut exécuter Python, bashainsi que la recherche web côté serveur et renvoyer les résultats sous forme d'événements personnalisés tool_result Cette fonctionnalité donne à Unsloth l'impression d'être un véritable agent dès le départ, sans faire transiter les appels d'outils par votre client.

Activez cette fonctionnalité en passant ces champs supplémentaires à soit /v1/chat/completions ou /v1/messages:

Champ
Type
Notes

enable_thinking

boolean

false pour désactiver le raisonnement. true par défaut

enable_tools

boolean

true pour activer l'exécution des outils côté serveur.

enabled_tools

array<string>

Quels outils le modèle peut appeler. Prend en charge python, bash, web_search.

session_id

string

Facultatif. Conserve l'état des outils (par ex. le noyau Python) d'un appel à l'autre.

Mode raisonnement

Le mode raisonnement est activé par défaut.

Le modèle réfléchira avant de fournir une réponse.

Pour désactiver le raisonnement, passez enable_thinking: false dans votre requête. Le modèle fournira une réponse sans réfléchir d'abord.

Exécution Python

Recherche web + Python (streaming)

Sur /v1/messages

Le même raccourci fonctionne également avec le point de terminaison Anthropic Messages :

Unsloth diffuse ses propres tool_result événements SSE en plus des types d'événements standard Anthropic / OpenAI ; le modèle voit la sortie de chaque outil à son tour suivant.

❔ Dépannage

401 Non autorisé - Le Authorization en-tête manque ou la clé est incorrecte. Vérifiez : Authorization: Bearer sk-unsloth-….

curl se bloque sur les requêtes en streaming - Ajoutez -N (même que --no-buffer). Sans lui, curl met en tampon le flux SSE et vous ne voyez rien avant la fin.

L'encodage base64 diffère selon les systèmes d'exploitation - Sur Linux, base64 a tendance à insérer des retours à la ligne par défaut, contrairement à macOS / BSD. Utilisez base64 -w 0 sur Linux, base64 sur macOS, ou envoyez la sortie à travers tr -d '\n'.

Échappement JSON dans les shells - Les heredocs (-d @file.json) sont plus propres que les chaînes en ligne lorsque le corps devient complexe. Exemple : curl ... -d @body.json.

max_tokens erreurs sur /v1/messages - Le dialecte Anthropic l'exige. Ajoutez "max_tokens": 1024 (ou toute autre limite souhaitée).

Pour les problèmes au niveau des points de terminaison (modèle qui ne se charge pas, connexion interrompue, mauvais port), consultez la page de vue d'ensemble de l'API.

Facultatif : ajuster les valeurs par défaut du serveur

Vous pouvez personnaliser le comportement par défaut au démarrage du serveur avec unsloth run.

Utilisez --reasoning off pour désactiver le raisonnement, ou --reasoning on pour l'activer sur les modèles qui prennent en charge le raisonnement.

Cela démarre le serveur sur 0.0.0.0:8888, permettant à d'autres appareils de votre réseau local de se connecter.

Remplacer les paramètres par requête

Vous pouvez également remplacer directement les paramètres de génération dans chaque requête API.

Les valeurs au niveau de la requête, comme temperature, top_p, max_tokensainsi que stream remplacent les valeurs par défaut du serveur pour cette requête.

Mis à jour

Ce contenu vous a-t-il été utile ?