TokenLab

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.

Références

Sur cette page