Anthropic Messages API (原生协议)
通过 Anthropic 原生 /v1/messages 接口调用 Claude 系列模型。
选择协议
Claude 模型同时支持两种协议:
- 本页面 — Anthropic 原生协议 (
/v1/messages),适合已有 Anthropic SDK 集成的项目 - OpenAI 协议 — 查看聊天补全 (OpenAI 协议),适合统一调用多厂商模型
请求
POST https://api.clawdrouter.com/v1/messages
请求头
| 名称 | 必填 | 类型 | 说明 |
|---|---|---|---|
x-api-key | 是 | string | 你的 API Key |
anthropic-version | 是 | string | API 版本,如 2023-06-01 |
Content-Type | 是 | string | application/json |
认证方式
Anthropic 原生协议使用 x-api-key 请求头进行认证(而非 Authorization: Bearer),与 Anthropic 官方 API 保持一致。
请求体
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
model | string | 是 | — | 模型标识,参考模型列表 |
messages | array | 是 | — | 对话消息列表 |
max_tokens | integer | 是 | — | 生成的最大 Token 数 |
system | string | 否 | — | 系统提示词 |
stream | boolean | 否 | false | 是否启用流式输出(SSE) |
temperature | number | 否 | 1 | 采样温度,取值 0~1 |
top_p | number | 否 | — | 核采样参数 |
top_k | integer | 否 | — | 仅采样概率最高的前 K 个 Token |
stop_sequences | array | 否 | — | 停止序列列表 |
tools | array | 否 | — | 工具定义列表 |
tool_choice | object | 否 | — | 工具调用控制 |
metadata | object | 否 | — | 请求元数据,如 user_id |
Messages 格式
[
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么可以帮助你的?"},
{"role": "user", "content": "介绍一下量子计算"}
]
content 支持字符串和数组两种格式:
{
"role": "user",
"content": [
{"type": "text", "text": "描述这张图片"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": "base64_encoded_data..."
}
}
]
}
请求示例
基础请求
curl https://api.clawdrouter.com/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "你好,请介绍一下你自己"}
]
}'
带系统提示词
curl https://api.clawdrouter.com/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"system": "你是一个专业的翻译助手,将中文翻译为英文。",
"messages": [
{"role": "user", "content": "今天天气真好"}
]
}'
流式请求
curl https://api.clawdrouter.com/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-N \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"stream": true,
"messages": [
{"role": "user", "content": "写一首关于春天的诗"}
]
}'
响应
非流式响应
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-6",
"content": [
{
"type": "text",
"text": "你好!我是 Claude,一个 AI 助手。很高兴认识你!有什么我可以帮助你的吗?"
}
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 58,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 消息唯一标识 |
type | string | 固定为 message |
role | string | 固定为 assistant |
model | string | 实际使用的模型 |
content | array | 回复内容列表,每项包含 type 和 text |
stop_reason | string | 停止原因:end_turn(正常结束)/ max_tokens(达到上限)/ stop_sequence(命中停止序列)/ tool_use(调用工具) |
usage | object | Token 用量统计 |
流式响应
流式模式下,响应以 SSE 格式返回多个事件:
event: message_start
data: {"type":"message_start","message":{"id":"msg_xxx","type":"message","role":"assistant","model":"claude-sonnet-4-6","content":[],"stop_reason":null,"usage":{"input_tokens":12,"output_tokens":0}}}
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: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":58}}
event: message_stop
data: {"type":"message_stop"}
使用 Anthropic Python SDK
pip install anthropic
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.clawdrouter.com",
)
# 基础调用
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "用简单的话解释量子计算"}
],
)
print(message.content[0].text)
流式调用
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)
带系统提示词
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system="你是一个专业的代码审查专家。",
messages=[
{"role": "user", "content": "请帮我审查这段 Python 代码的安全性"}
],
)
使用 Anthropic Node.js SDK
npm install @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.clawdrouter.com",
});
async function main() {
const message = await client.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [
{ role: "user", content: "你好,请介绍一下你自己" },
],
});
console.log(message.content[0].text);
}
main();
与 OpenAI 协议的对比
| 对比项 | OpenAI 协议 | Anthropic 原生协议 |
|---|---|---|
| 端点 | /v1/chat/completions | /v1/messages |
| 认证头 | Authorization: Bearer KEY | x-api-key: KEY |
| 系统提示词 | 放在 messages 中 role: "system" | 独立的 system 参数 |
| 响应格式 | choices[0].message.content (string) | content[0].text (array) |
| 停止原因 | finish_reason | stop_reason |
| Token 统计 | prompt_tokens / completion_tokens | input_tokens / output_tokens |
| 支持的模型 | 所有厂商 | 仅 Claude 系列 |