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/messages

最小示例

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-keyheader必填控制台 Key。也可以改用 Authorization: Bearer。两条头都认,官方 SDK 发送的是 x-api-key。
anthropic-versionheader必填官方 SDK 会带 2023-06-01。curl 请一并写上。
Content-Typeheader必填application/json。

入参

请求体

字段类型必填说明
modelstring必填模型广场中已开通的 Claude ID。
max_tokensnumber必填这次回复最多生成的 token 数。Messages 要求显式传入。
messagesarray必填用户和助手交替的消息。role 为 user 或 assistant。content 可以是字符串,也可以是 text 等内容块数组。
systemstring可选系统提示,放在请求体顶层,不放进 messages。
streamboolean可选true 时改为 SSE 事件流。默认一次返回完整 JSON。
temperaturenumber可选采样温度,沿用该模型的官方取值范围。

出参

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
  }
}

成功响应

字段类型必填说明
idstring必填这条消息的 ID。
typestring必填固定为 message。
rolestring必填固定为 assistant。
content[].typestring必填文本块为 text。工具调用时会出现对应的块类型。
content[].textstring必填type 为 text 时的正文。
stop_reasonstring必填end_turn 表示正常结束,max_tokens 表示碰到长度上限。
usage.input_tokensnumber必填输入 token 数。
usage.output_tokensnumber必填输出 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 会说明模型不可用。