Guides essentiels
Formats d’API
Choisir Chat Completions, Responses, Messages ou Gemini
Une clé TokenLab permet d’utiliser quatre formats d’API. Conservez le format déjà utilisé par votre application et consultez tokenlab.accepted_request_formats sur la page du modèle ou dans GET /v1/models/{model}. Tous les modèles ne prennent pas en charge les quatre formats.
Chat Completions
POST /v1/chat/completions · openai_chat_completions
Ce format convient aux clients de chat compatibles OpenAI, à l’historique, au streaming et aux appels de fonctions pris en charge par le modèle. Les champs propres à d’autres formats ne sont pas garantis.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["TOKENLAB_API_KEY"],
base_url="https://api.tokenlab.sh/v1",
)
response = client.chat.completions.create(
model="gpt-5.6-luna",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)Responses
POST /v1/responses · openai_responses
Utilisez ce format si accepted_request_formats contient openai_responses. Il permet la création, la lecture, la compaction, la suppression, le streaming, la création et la continuation par WebSocket, ainsi que les réponses en arrière-plan pour les modèles compatibles. Supprimer une réponse enregistrée n’annule pas une réponse active.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["TOKENLAB_API_KEY"],
base_url="https://api.tokenlab.sh/v1",
)
response = client.responses.create(
model="gpt-5.6-terra",
input="Explain why the sky is blue in two sentences.",
)
print(response.output_text)Anthropic Messages
POST /v1/messages · anthropic_messages
Pour le SDK Anthropic, utilisez l’hôte TokenLab sans ajouter /v1. Conservez les appels d’outils Claude, les blocs thinking et les champs de cache des prompts au format Messages.
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["TOKENLAB_API_KEY"],
base_url="https://api.tokenlab.sh",
)
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=512,
messages=[{"role": "user", "content": "Hello!"}],
)
print(message.content[0].text)Gemini
POST /v1beta/models/:model:generateContent · gemini_generate_content
Ce format convient aux applications utilisant contents, parts, fichiers, cache ou outils Gemini. Les noms ProtoJSON lowerCamelCase et les noms snake_case d’origine sont acceptés ; n’envoyez pas les deux variantes d’un même champ dans une requête.
curl "https://api.tokenlab.sh/v1beta/models/gemini-3.5-flash:generateContent" \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text": "Hello!"}]}]
}'Conserver le format de la conversation
Les formats représentent différemment l’état et les résultats des outils. Utilisez un seul format par conversation ; convertissez et validez l’historique dans votre application avant de le migrer.
Champs inconnus
La transmission d’un champ ne garantit pas sa prise en charge par le modèle. Utilisez les fonctions documentées pour le modèle choisi et traitez les erreurs de champs non pris en charge.