跳到主要内容

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 版本行为。 :::

请求体​

字段类型必填说明
modelstring是模型名
max_tokensinteger是Anthropic 协议要求必填
messagesarray是只允许 user / assistant
systemstring/array否系统提示词(独立字段,不在 messages 里)
streamboolean否流式
temperaturenumber否0~1
top_pnumber否
stop_sequencesarray否
toolsarray否工具定义
thinkingobject否扩展思考

最小请求​

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 协议的差异​

项AnthropicOpenAI
系统提示词顶层 system 字段messages[0] 的 role: system
max_tokens必填可选
输出位置content[].textchoices[0].message.content
结束原因stop_reasonfinish_reason
用量字段input_tokens / output_tokensprompt_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:。