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 访问。
| 参数 | 类型 | 说明 | |
|---|---|---|---|
model | string | 必填 | 要跑的模型,取自共享目录。 |
messages | array | 必填 | 到目前为止的对话,用 Anthropic 的块格式。 |
max_tokens | integer | 必填 | 生成的 token 上限。Anthropic 要求必填,网关也一样。 |
system | string 或 array | 选填 | 系统提示词,可以是字符串,也可以是一组 text 块。 |
temperature | number | 选填 | 采样温度,0 到 1。是 Anthropic 的取值范围,不是 OpenAI 的——填 1.5 会被 400 拒掉。 |
stream | boolean | 选填 | 以 server-sent events 流式返回。默认 false。 |
tools | array | 选填 | 工具定义,前提是模型支持工具调用。 |
thinking | object | 选填 | 扩展思考配置,会映射到后端认识的推理控制项上。带 budget_tokens 的写法目前会被拒绝,见下文。 |
output_config | object | 选填 | effort 控制支持该能力的模型的自适应推理深度。取值因模型而异,low 和 medium 所有模型都收。 |
metadata | object | 选填 | user_id 用于粘性路由。Claude Code 把它的会话 id 放在这里。 |
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_reason 是 end_turn、max_tokens、tool_use、refusal 四个之一。它由后端那边 OpenAI 风格的 finish_reason 换算而来,认不出来的一律归为 end_turn。stop_sequence 恒为 null,因为停止序列压根就不会被转发。推理模型会在 content 里和 text 块一起给出 thinking 块。
计算 token
Section titled “计算 token”
POST
/v1/messages/count_tokens
Bearer 密钥或 x-api-key
Anthropic SDK 在发请求前会先调它估算大小。请求体和 /v1/messages 一样,返回:
{ "input_tokens": 24 }system 和 tools 都算进去了,因为这两样都按输入计费。
两条路径的错误都用 Anthropic 的信封,SDK 的错误处理不用改:
{ "type": "error", "error": { "type": "authentication_error", "message": "Unauthorized: No API key provided." }}网关前面那层平台拒掉的请求——密钥无效、准入控制——则是包在 detail 里的。见错误。
限流和 /v1/chat/completions 共用:两者落在同一份后端容量上,也计入同一批按密钥的关卡。见限流。