
TONDAR API · CLAUDE
对接 Claude
Messages
Anthropic 官方 SDK · 基址写到域名根
Claude 走 POST /v1/messages,请求体是 Anthropic Messages,不是 Chat Completions。官方 SDK 的 base_url 写成 https://api.tondarai.com,不要再加 /v1。Key 仍是控制台密钥。
POST/v1
最小示例
Python SDK 的参数名是 base_url,Node SDK 是 baseURL。两者都不要带 /v1。
curl
curl https://api.tondarai.com/v1/messages \
-H "x-api-key: $TONDAR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "<模型广场中的 ID>",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "用一句话介绍你自己"}
]
}'python
from anthropic import Anthropic
client = Anthropic(
api_key="控制台创建的 Key",
base_url="https://api.tondarai.com",
)
msg = client.messages.create(
model="<模型广场中的 ID>",
max_tokens=1024,
messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(msg.content[0].text)node
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.TONDAR_API_KEY,
baseURL: "https://api.tondarai.com",
});
const msg = await client.messages.create({
model: "<模型广场中的 ID>",
max_tokens: 1024,
messages: [{ role: "user", content: "用一句话介绍你自己" }],
});
console.log(msg.content[0].text);请求
请求行
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 方法 | POST | 必填 | 创建一条 Messages 回复。 |
| 路径 | string | 必填 | /v1/messages,基址 https://api.tondarai.com。 |
| x-api-key | header | 必填 | 控制台 Key。也可以改用 Authorization: Bearer。两条头都认,官方 SDK 发送的是 x-api-key。 |
| anthropic-version | header | 必填 | 官方 SDK 会带 2023-06-01。curl 请一并写上。 |
| Content-Type | header | 必填 | application/json。 |
入参
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 必填 | 模型广场中已开通的 Claude ID。 |
| max_tokens | number | 必填 | 这次回复最多生成的 token 数。Messages 要求显式传入。 |
| messages | array | 必填 | 用户和助手交替的消息。role 为 user 或 assistant。content 可以是字符串,也可以是 text 等内容块数组。 |
| system | string | 可选 | 系统提示,放在请求体顶层,不放进 messages。 |
| stream | boolean | 可选 | true 时改为 SSE 事件流。默认一次返回完整 JSON。 |
| temperature | number | 可选 | 采样温度,沿用该模型的官方取值范围。 |
出参
response.json
{
"id": "msg_...",
"type": "message",
"role": "assistant",
"model": "<模型广场中的 ID>",
"content": [
{ "type": "text", "text": "……" }
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 14,
"output_tokens": 22
}
}成功响应
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 必填 | 这条消息的 ID。 |
| type | string | 必填 | 固定为 message。 |
| role | string | 必填 | 固定为 assistant。 |
| content[].type | string | 必填 | 文本块为 text。工具调用时会出现对应的块类型。 |
| content[].text | string | 必填 | type 为 text 时的正文。 |
| stop_reason | string | 必填 | end_turn 表示正常结束,max_tokens 表示碰到长度上限。 |
| usage.input_tokens | number | 必填 | 输入 token 数。 |
| usage.output_tokens | number | 必填 | 输出 token 数。 |
stream 为 true 时,按事件顺序读取。message_start 给出消息头,content_block_delta 的 delta.text 是增量文本,message_delta 带上 stop_reason 和输出 token,message_stop 表示结束。
和官方接口的差异
- Anthropic SDK 的 base_url / baseURL 写成 https://api.tondarai.com,不要加 /v1。SDK 自己会请求 /v1/messages。
- Key 用 Tondar 控制台的密钥。网关接受 x-api-key,也接受 Authorization: Bearer。
- 请求体保持 Messages 格式。不要把 Claude 的调用改写成 /v1/chat/completions。
- 不提供 /v1/messages/count_tokens。
错误
失败时正文里读 error.message。
error.json
{
"error": {
"type": "error",
"message": "具体原因"
}
}- 未带 Key,或 Key 无效:请求被拒绝。
- 漏了 max_tokens 或 messages:请求在转发前被拒绝。
- model 未开通:error.message 会说明模型不可用。