跳转到内容

Messages(Anthropic)

Public Free Model APIs 也能通过 Anthropic 的 Messages API 访问,所以照着 Claude 写的客户端——Claude Code、anthropic SDK、任何讲这套协议的东西——改掉基础 URL 和密钥就能用。

这套接口属于共享模型前面那层网关。独占端点是你自己的 vLLM 或 SGLang,那两个都不讲 Anthropic 协议,所以 /v1/messages 在那边是 404

POST /v1/messages Bearer 密钥或 x-api-key

也可以通过 /api/v1/messages 访问。

参数类型说明
modelstring必填要跑的模型,取自共享目录。
messagesarray必填到目前为止的对话,用 Anthropic 的块格式。
max_tokensinteger必填生成的 token 上限。Anthropic 要求必填,网关也一样。
systemstring 或 array选填系统提示词,可以是字符串,也可以是一组 text 块。
temperaturenumber选填采样温度,01。是 Anthropic 的取值范围,不是 OpenAI 的——填 1.5 会被 400 拒掉。
streamboolean选填以 server-sent events 流式返回。默认 false
toolsarray选填工具定义,前提是模型支持工具调用。
thinkingobject选填扩展思考配置,会映射到后端认识的推理控制项上。budget_tokens 的写法目前会被拒绝,见下文。
output_configobject选填effort 控制支持该能力的模型的自适应推理深度。取值因模型而异,lowmedium 所有模型都收。
metadataobject选填user_id 用于粘性路由。Claude Code 把它的会话 id 放在这里。
Terminal window
curl https://developer.amd.com.cn/radeon/api/v1/messages \
-H "x-api-key: $RADEON_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash",
"max_tokens": 256,
"system": "You are a concise assistant.",
"messages": [
{"role": "user", "content": "What is ROCm?"}
]
}'
from anthropic import Anthropic
client = Anthropic(
base_url="https://developer.amd.com.cn/radeon/api",
api_key="rc-...",
)
message = client.messages.create(
model="DeepSeek-V4-Flash",
max_tokens=256,
messages=[{"role": "user", "content": "Explain ROCm in two sentences."}],
)
print(message.content[0].text)

/v1/messages 是 SDK 自己拼上去的,所以 base_url 写到 /api 就停。

{
"id": "msg_9f3b21d0-4c8a-4f2e-b7d1-2a6c38e5b190",
"type": "message",
"role": "assistant",
"model": "DeepSeek-V4-Flash",
"content": [
{ "type": "text", "text": "ROCm is AMD's open software platform for GPU computing..." }
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 24,
"output_tokens": 118,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}

stop_reasonend_turnmax_tokenstool_userefusal 四个之一。它由后端那边 OpenAI 风格的 finish_reason 换算而来,认不出来的一律归为 end_turnstop_sequence 恒为 null,因为停止序列压根就不会被转发。推理模型会在 content 里和 text 块一起给出 thinking 块。

POST /v1/messages/count_tokens Bearer 密钥或 x-api-key

Anthropic SDK 在发请求前会先调它估算大小。请求体和 /v1/messages 一样,返回:

{ "input_tokens": 24 }

systemtools 都算进去了,因为这两样都按输入计费。

两条路径的错误都用 Anthropic 的信封,SDK 的错误处理不用改:

{
"type": "error",
"error": {
"type": "authentication_error",
"message": "Unauthorized: No API key provided."
}
}

网关前面那层平台拒掉的请求——密钥无效、准入控制——则是包在 detail 里的。见错误

限流和 /v1/chat/completions 共用:两者落在同一份后端容量上,也计入同一批按密钥的关卡。见限流