核心指南

选择 API 格式

Chat Completions、Responses、Messages 和 Gemini 应该怎么选

一个 TokenLab API 密钥可以使用四种常见格式。现有应用已经使用哪一种,通常继续沿用即可;只有需要模型专属功能时才需要更换。

格式API适合
Chat Completions/v1/chat/completions已有 OpenAI 兼容聊天客户端,或希望兼容更多模型
Responses/v1/responses应用依赖 Responses 事件、后台响应或 Responses 工具
Anthropic Messages/v1/messages需要 Claude thinking、工具调用等 Messages 字段
Gemini/v1beta/models/:model:generateContent已在使用 Gemini 的 contents、parts、文件、缓存或工具

模型页面和 GET /v1/models/{model} 中的 tokenlab.accepted_request_formats 会列出可用格式。不是每个模型都支持全部四种。

Chat Completions

已有 OpenAI 兼容客户端,或想让同一套聊天代码适配更多模型时,可以使用 Chat Completions。

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)

这个格式适合:

  • 已有的 OpenAI 兼容聊天功能
  • 标准消息历史和流式输出
  • 模型支持的函数调用

其他 API 独有的字段不保证能在 Chat Completions 中使用。

Responses

只有模型的 accepted_request_formats 包含 openai_responses 时,才能使用 Responses API。

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)

Responses 支持创建、读取、压缩、删除、流式输出、WebSocket 创建与续接;所选模型支持时也可以使用后台响应。删除用于移除已经保存的响应,不等于取消正在生成的内容。

Anthropic Messages

使用 Anthropic SDK 时,TokenLab 地址末尾不要加 /v1。

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)

需要 Claude 专属字段时使用 Messages。Claude 的工具调用、thinking blocks 和 prompt cache 字段都应保留在这个格式中。

Gemini

Gemini 请求使用 TokenLab 主域名和 Gemini REST 路径。

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!"}]}]
  }'

应用依赖 Gemini content parts、函数声明、文件、缓存或其他 Gemini 字段时,请使用这个格式。lowerCamelCase ProtoJSON 和原始 snake_case proto 名都能识别,但同一字段不要在一个请求里同时使用两种拼写。

一段对话只用一种格式

Messages、Responses、Chat Completions 和 Gemini 表示消息历史与工具调用的方式不同。不要在同一段对话中混用。需要迁移已有历史时,请在自己的应用里完成转换和校验,再发送下一条请求。

未知字段

TokenLab 可能会保留未识别的字段,但这不代表每个模型都能接受。只有模型文档明确支持、并且应用能处理“不支持字段”错误时,才能把某个功能作为稳定依赖。

相关文档

本页内容