外观
Anthropic 兼容格式
AI通道同时兼容 Anthropic 官方 Messages API。Anthropic 官方 Python / Node.js SDK、Claude Code 客户端都可以直接指向我们的地址使用。
接口地址
https://ai.aitongdao.com注意 Anthropic 协议不带 /v1 后缀,SDK 会自动拼接 /v1/messages 到 base_url 上。
认证方式
支持两种 header,任选其一。
方式一:x-api-key(推荐)
x-api-key: sk-xxxxxxxxxxxxxxxxxxxxxxxx
anthropic-version: 2023-06-01这是 Anthropic 官方 SDK 默认使用的方式。
方式二:Authorization
Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx
anthropic-version: 2023-06-01某些工具只能传 Authorization 头,这时也能正常工作。
Messages API
接口说明
Anthropic 对话接口,用于和 Claude 系列模型交互。
请求地址
POST https://ai.aitongdao.com/v1/messages请求示例
bash
curl https://ai.aitongdao.com/v1/messages \
-H "x-api-key: sk-xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "介绍一下 Claude 模型"}
]
}'请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型名,如 claude-opus-4-6 |
messages | array | 是 | 对话消息 |
max_tokens | integer | 是 | 最大输出 token 数 |
system | string | 否 | 系统提示词 |
temperature | number | 否 | 采样温度,0-1 |
top_p | number | 否 | 核采样阈值 |
top_k | integer | 否 | top-k 采样 |
stream | boolean | 否 | 是否流式输出 |
Messages 格式
json
[
{"role": "user", "content": "第一条用户消息"},
{"role": "assistant", "content": "模型回复"},
{"role": "user", "content": "后续消息"}
]与 OpenAI 不同,Anthropic 的 system 提示词是独立字段,不放在 messages 里。
响应格式
json
{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"content": [
{"type": "text", "text": "模型生成的文本"}
],
"model": "claude-sonnet-4-6",
"stop_reason": "end_turn",
"usage": {"input_tokens": 25, "output_tokens": 120}
}流式输出
把 stream 设为 true,服务端会用 SSE 推送一串事件,事件类型包括 message_start、content_block_delta、message_delta、message_stop 等。
支持的模型
| 模型 | 说明 | 上下文 | 最大输出 |
|---|---|---|---|
claude-opus-4-6 | 旗舰推理模型 | 超长 | 按模型规格 |
claude-sonnet-4-6 | 平衡型 | 超长 | 按模型规格 |
完整模型列表以后台"可用模型"页面为准。
多模态支持
Claude 支持在消息里附带图片输入。
图片格式
- 支持格式:JPEG、PNG、GIF、WebP
- 单张大小上限:5MB
使用 base64 内联:
json
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "<base64 编码>"
}
},
{"type": "text", "text": "描述这张图片"}
]
}代码示例
Python(官方 SDK)
python
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://ai.aitongdao.com",
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "什么是大语言模型"}],
)
print(message.content[0].text)Python(流式)
python
import anthropic
client = anthropic.Anthropic(api_key="YOUR_API_KEY", base_url="https://ai.aitongdao.com")
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "写一首关于秋天的短诗"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)Node.js(官方 SDK)
javascript
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://ai.aitongdao.com",
});
const msg = await client.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [{ role: "user", content: "你好" }],
});
console.log(msg.content[0].text);cURL
bash
curl https://ai.aitongdao.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-6",
"max_tokens": 512,
"messages": [{"role": "user", "content": "你好"}]
}'错误处理
错误响应格式
json
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "具体错误描述"
}
}常见错误类型
| 错误类型 | 说明 |
|---|---|
authentication_error | API Key 无效 |
permission_error | 分组不允许调用该模型 |
invalid_request_error | 请求参数不合法 |
not_found_error | 模型不存在 |
rate_limit_error | 触发限流 |
api_error | 服务端内部错误 |
带重试的调用
python
from tenacity import retry, stop_after_attempt, wait_exponential
import anthropic
client = anthropic.Anthropic(api_key="YOUR_API_KEY", base_url="https://ai.aitongdao.com")
@retry(stop=stop_after_attempt(3), wait=wait_exponential(min=1, max=10))
def call_claude(prompt: str):
return client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": prompt}],
)高级功能
1. 系统提示词
python
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system="你是一个专业的技术文档翻译助手,把英文翻译成自然的中文。",
messages=[{"role": "user", "content": "Hello, world!"}],
)2. 多轮对话
把历史按顺序放进 messages 数组,user 和 assistant 交替出现。
3. 图片分析
参考上面"多模态支持"一节,把 image 和 text 块组合进单条 user 消息。
最佳实践
- 显式设置
max_tokens:Anthropic 要求必填,建议根据任务合理估计。 - 善用
system:把人设、风格、格式要求放到 system,避免在每轮 user 消息里重复。 - 长对话注意上下文:超长对话可以让客户端只保留最近 N 轮,或定期总结前文。
- 重试用退避:5xx 和 429 错误适合重试,4xx 类参数错误不要重试。
与 OpenAI 格式对比
| 维度 | Anthropic | OpenAI |
|---|---|---|
| Base URL | https://ai.aitongdao.com | https://ai.aitongdao.com/v1 |
| 认证 header | x-api-key | Authorization: Bearer |
| 系统提示 | 独立的 system 字段 | messages 数组里的 system 消息 |
max_tokens | 必填 | 可选 |
| 响应结构 | content 是数组 | choices[0].message.content 是字符串 |
| GPT 流式要求 | 不适用 | GPT 系列必须流式 |
速率限制
| 维度 | 默认值 |
|---|---|
| 每分钟请求 | 受分组和账户等级限制 |
| 每小时请求 | 受分组和账户等级限制 |
| 并发 | 受分组和账户等级限制 |
触发限流会返回 rate_limit_error,请在客户端做退避重试。