Anthropic Messages
POST /v1/messages
Anthropic 原生协议。Claude 客户端、CC 等工具走这条路。
请求头
x-api-key: ***
anthropic-version: 2023-06-01
Content-Type: application/json
:::tip OpenAI 的 Bearer 也能用
服务端两种鉴权头都认,Authorization: Bearer *** 同样可以。
但 anthropic-version 建议带上——部分上游据此选择 API 版本行为。
:::
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型名 |
max_tokens | integer | 是 | Anthropic 协议要求必填 |
messages | array | 是 | 只允许 user / assistant |
system | string/array | 否 | 系统提示词(独立字段,不在 messages 里) |
stream | boolean | 否 | 流式 |
temperature | number | 否 | 0~1 |
top_p | number | 否 | |
stop_sequences | array | 否 | |
tools | array | 否 | 工具定义 |
thinking | object | 否 | 扩展思考 |
最小请求
curl https://187api.com/v1/messages \
-H "x-api-key: ***" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-M2.5",
"max_tokens": 128,
"system": "你是简洁的助手。",
"messages": [{"role": "user", "content": "你好"}]
}'
响应
{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"model": "MiniMax-M2.5",
"content": [
{"type": "text", "text": "你好!"}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 12,
"output_tokens": 5
}
}
缓存断点
这是我们与原生 Anthropic 行为差异最大的地方:我们会自动补 cache_control。
- 最多 4 个断点
- 你写的断点原样保留,我们只补空缺
- 补的位置:
tools末尾 →system末尾 → 最后一条消息的最后一个非 thinking 块 → 倒数第二个user - 新断点固定 5 分钟
想自己精确控制就显式写 cache_control,详见 提示词缓存。
与 OpenAI 协议的差异
| 项 | Anthropic | OpenAI |
|---|---|---|
| 系统提示词 | 顶层 system 字段 | messages[0] 的 role: system |
max_tokens | 必填 | 可选 |
| 输出位置 | content[].text | choices[0].message.content |
| 结束原因 | stop_reason | finish_reason |
| 用量字段 | input_tokens / output_tokens | prompt_tokens / completion_tokens |
流式事件
Anthropic 的 SSE 事件类型与 OpenAI 不同:
event: message_start
data: {"type":"message_start","message":{...}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"你"}}
event: message_stop
data: {"type":"message_stop"}
客户端要按 event: 行分流,不能只解析 data:。