跳转到内容

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 访问。

参数类型说明
modelstring必填要调用的模型,取自 Token Factory 的模型列表。
messagesarray必填到目前为止的对话,用 Anthropic 的块格式。
max_tokensinteger必填生成的 token 上限。Anthropic 要求必填,网关也一样。
systemstring 或 array选填系统提示词,可以是字符串,也可以是一组 text 块。
temperaturenumber选填采样温度,0 到 1。这是 Anthropic 的取值范围,不是 OpenAI 的,填 1.5 会返回 400。
streamboolean选填以 server-sent events 流式返回。默认 false。
toolsarray选填工具定义,前提是模型支持工具调用。
thinkingobject选填扩展思考配置,会映射到后端支持的推理控制项。带 budget_tokens 的写法目前会被拒绝,见下文。
output_configobject选填effort 控制支持该能力的模型的自适应推理深度。取值因模型而异,已验证档位的模型都接受 low 和 medium。
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)

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 块。

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 的限制。见限流。