Claude 兼容接口

最后更新:2026-04-24 · 预计阅读 10 分钟

TTToken 完全兼容 Anthropic 官方的 Messages API。你可以直接使用 @anthropic-ai/sdkanthropic Python 包,只需把 baseURL 换为 TTToken 即可。

BASEhttps://tttoken.xyz

Messages

POST/v1/messages

请求头

x-api-key: sk-xxxxxxxxxxxxxxxxxxxx
anthropic-version: 2023-06-01
content-type: application/json

如果使用 Authorization: Bearer 也会被接受。

请求体

{
  "model": "claude-sonnet-4-5",
  "max_tokens": 1024,
  "system": "你是一位耐心的数学老师。",
  "messages": [
    {"role": "user", "content": "证明勾股定理"}
  ]
}

响应

{
  "id": "msg_01...",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-4-5",
  "content": [
    {"type": "text", "text": "设直角三角形..."}
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 18,
    "output_tokens": 256,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0
  }
}

流式 SSE

在请求体中加入 "stream": true。事件顺序与官方一致:

event: message_start
data: {"type":"message_start","message":{...}}

event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"设"}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"直"}}

...

event: message_stop
data: {"type":"message_stop"}

Extended Thinking

Claude 4 系列支持显式思考块。开启后响应 content 中会出现 thinking 类型:

{
  "model": "claude-opus-4-5",
  "max_tokens": 4096,
  "thinking": {"type": "enabled", "budget_tokens": 2048},
  "messages": [{"role":"user","content":"一道很难的代数题…"}]
}

响应示例:

"content": [
  {"type": "thinking", "thinking": "先设变量 x…", "signature": "..."},
  {"type": "text", "text": "解:x = 42"}
]

Thinking 块按 Anthropic 官方计费(output tokens)。

Prompt Caching

system / messages 中的某段加 cache_control,可节省大量费用:

{
  "model": "claude-sonnet-4-5",
  "max_tokens": 512,
  "system": [
    {
      "type": "text",
      "text": "<很长的规则手册,上万字...>",
      "cache_control": {"type": "ephemeral"}
    }
  ],
  "messages": [{"role":"user","content":"问题 1"}]
}

命中缓存时 usage.cache_read_input_tokens 有值,对应部分 token 计费为原价 10%。

工具调用

{
  "model": "claude-sonnet-4-5",
  "max_tokens": 1024,
  "tools": [{
    "name": "get_weather",
    "description": "查询城市天气",
    "input_schema": {
      "type": "object",
      "properties": {"city": {"type": "string"}},
      "required": ["city"]
    }
  }],
  "messages": [{"role":"user","content":"北京今天天气?"}]
}

返回会包含 {"type":"tool_use","id":"toolu_...","name":"get_weather","input":{"city":"北京"}},客户端执行后再以 tool_result 返回即可。

视觉输入

{
  "model": "claude-sonnet-4-5",
  "max_tokens": 1024,
  "messages": [{
    "role": "user",
    "content": [
      {"type": "image", "source": {
        "type": "base64",
        "media_type": "image/png",
        "data": "iVBORw0KGgo..."
      }},
      {"type": "text", "text": "这张图里有什么?"}
    ]
  }]
}

也支持 "source": {"type":"url","url":"https://..."}

官方 SDK

from anthropic import Anthropic

client = Anthropic(
    api_key="$TTT_KEY",
    base_url="https://tttoken.xyz",
)

msg = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "你好"}],
)
print(msg.content[0].text)
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: process.env.TTT_KEY,
  baseURL: "https://tttoken.xyz",
});

const msg = await client.messages.create({
  model: "claude-sonnet-4-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "你好" }],
});
console.log(msg.content[0].text);