Messages(Anthropic)
Token Factory 也能通过 Anthropic 的 Messages API 访问,为 Claude 开发的客户端,例如 Claude Code 和 anthropic SDK,只要换掉 base URL 和 API Key 就能使用。
这组接口由 Token Factory 的网关提供。实例上的模型服务是你自己的 vLLM 服务,那边能不能用 /v1/messages,取决于它运行的 vLLM 版本。
POST
/v1/messages
API Key(Bearer 或 x-api-key)
也可以通过 /api/v1/messages 访问。
| 参数 | 类型 | 说明 | |
|---|---|---|---|
model | string | 必填 | 要调用的模型,取自 Token Factory 的模型列表。 |
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)SDK 会自动加上 /v1/messages,所以 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
API Key(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." }}网关之前的 平台 拒绝的请求(例如 API Key 无效、准入控制)则放在 detail 里。见错误。
限流和 /v1/chat/completions 共用:两者使用同一份后端容量,也计入同样的按 API Key 的限制。见限流。