Claude 兼容接口
TTToken 完全兼容 Anthropic 官方的 Messages API。你可以直接使用 @anthropic-ai/sdk 或 anthropic Python 包,只需把 baseURL 换为 TTToken 即可。
BASE
https://tttoken.xyzMessages
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);