核心指南
API 格式
選擇 Chat Completions、Responses、Messages 或 Gemini
一把 TokenLab API Key 可用於四種 API 格式。優先保留應用程式現有的格式,並在模型頁或 GET /v1/models/{model} 檢查 tokenlab.accepted_request_formats;並非每個模型都支援四種格式。
Chat Completions
POST /v1/chat/completions · openai_chat_completions
適合既有 OpenAI 相容聊天客戶端、訊息歷史、串流和模型支援的函式呼叫。其他格式的專用欄位不保證可用。
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
僅在模型的 accepted_request_formats 包含 openai_responses 時使用。Responses 提供建立、讀取、壓縮、刪除、串流、WebSocket 建立與延續,以及受支援模型的背景回應。刪除已儲存回應不會取消進行中的回應。
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
Anthropic SDK 的 base URL 使用 TokenLab 主機,不加 /v1。Claude 的工具呼叫、thinking 區塊和提示快取欄位應保留在 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
適合既有 Gemini contents、parts、檔案、快取和工具。支援 ProtoJSON lowerCamelCase 與原始 snake_case 欄位名稱,但不要在同一請求中同時傳送同一欄位的兩種拼寫。
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!"}]}]
}'保持對話格式一致
四種格式對對話狀態和工具結果的表示不同。完整對話應使用同一格式;遷移歷史時,先在應用程式中轉換並驗證。
未知欄位
傳送成功或欄位被轉交不代表模型支援它。只依賴所選模型明確列出的功能,並處理不支援欄位的錯誤。