Appearance
Anthropic Messages
接口:
text
POST /v1/messages该接口用于 Anthropic Messages 兼容调用。Chat/Responses 客户端请优先使用 OpenAI-compatible 接口。
请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 使用 /v1/models 返回且可通过 Anthropic Messages 协议调用的模型 ID |
messages | array | 是 | Anthropic messages |
max_tokens | number | 否(建议传入) | 最大输出 token 数;网关允许省略或传 0,但部分客户端或上游要求正数 |
system | string/array | 否 | 系统指令 |
temperature | number | 否 | 采样温度 |
top_p | number | 否 | 核采样参数 |
top_k | integer | 否 | Top-K 采样 |
stop_sequences | array | 否 | 停止序列 |
stream | boolean | 否 | 是否流式输出 |
tools | array | 否 | Anthropic tools |
tool_choice | object | 否 | 工具选择,如 {"type":"auto"} / {"type":"any"} / {"type":"tool","name":"..."} |
metadata | object | 否 | 请求元数据,如 {"user_id":"..."} |
thinking | object | 否 | Claude Code/Anthropic extended thinking,如 {"type":"enabled","budget_tokens":1024} |
qwen_explicit_cache | string/null | 否 | 仅精确用于 qwen3.5-plus、qwen3.6-plus;缺省、null 或 "auto" 默认启用网关自适应显式缓存,"off" 关闭网关自动注入 |
qwen_explicit_cache 只控制网关自动添加的显式缓存断点,不会转发上游,也不会关闭百炼隐式缓存。自动模式要求当前渠道已明确声明支持显式缓存,并且稳定 system/tools 前缀的保守下界达到至少 1024 tokens;fallback 到非能力渠道时不会注入。客户端已提供块级 cache_control 时,网关不会重复添加,且只接受 type=ephemeral、最多四个 marker;没有兼容渠道时返回 cache_control_unsupported。
响应字段
返回 Anthropic Messages 风格响应。流式请求返回 Anthropic SSE 事件。
当上游使用 OpenAI Chat 协议时,标准工具调用转换为 tool_use,id、name、input 仍按标准结构交付。工具或其他返回对象中的附加字段不会因无对应位置而触发兼容性错误, 也不会混入工具参数:非流式在顶层 upstream_extensions 中保留,流式通过独立的 message.upstream_extensions 事件交付。没有附加字段时不增加该字段或事件。
json
{"protocol":"openai_chat","fields":[{"path":"/choices/0/message/tool_calls/0/function/future_field","value":false}]}这是网关扩展,不是 Anthropic 官方字段。path 为原始上游 JSON 的 RFC 6901 指针;真实 SSE 按每个上游帧解释路径,流式工具附加字段同时保留该帧工具的 index 和存在时的 id, 不要将帧内数组位置当作工具身份。模拟 SSE 的路径仍指向上游完整 Chat 响应中的 message。 value 保留原始 JSON 值(包括大整数、null、false、空集合);客户端需主动读取原始响应或 扩展事件,标准 SDK 的最终 Message 聚合对象不保证收集这些扩展。
标准文本、工具参数、usage 和结束事件不受扩展值控制;扩展不进入内部 IR JSON、计费或 指标,也不承诺断流续取或后续请求恢复。Anthropic 流式文档 要求客户端宽容处理未知事件;自定义客户端若拒绝所有未知事件,需要同步兼容上述网关事件。
Claude Code
Claude Code 可使用:
text
ANTHROPIC_BASE_URL=https://llm.xiaoyue9527.xyz
ANTHROPIC_API_KEY=sk-gtw-REPLACE_ME注意 ANTHROPIC_BASE_URL 使用网关根地址,不带 /v1。Claude Code 会自行请求 /v1/messages、/v1/models 等路径;OpenAI SDK 仍使用带 /v1 的 https://llm.xiaoyue9527.xyz/v1。ANTHROPIC_API_KEY 填控制台签发的网关 API Key,不是上游 Anthropic 官方 key。
如果客户端只支持 Bearer token,也可以继续使用:
text
ANTHROPIC_AUTH_TOKEN=sk-gtw-REPLACE_ME已支持 POST /v1/messages 和 POST /v1/messages/count_tokens。count_tokens 使用网关本地启发式估算,结果用于客户端预检,不作为最终计费口径。
Claude Code 工具调用会按 Anthropic tool_use/tool_result 协议处理。网关会兼容部分客户端产生的嵌套 arguments 文本,尽量还原为结构化 tool input,但业务侧仍建议按 Anthropic tools schema 传入对象。
边界
| 边界 | 说明 |
|---|---|
| SDK | 仅用于 Anthropic Messages 兼容客户端 |
| 模型名 | 使用 /v1/models 返回的 Anthropic/Claude 兼容模型 |
| thinking | 支持 bool 扩展和 Anthropic object;路由到 Anthropic 上游时 object 会透传,路由到 OpenAI-compatible 上游时仅作为启用思考信号 |
| 工具调用 | 使用 Anthropic tool_use/tool_result;不要和 OpenAI tool_calls 混用 |
| count_tokens | 本地估算,不请求上游;实际 token 以生成接口返回 usage 为准 |
| OpenAI 工具格式 | 基础转换的 Responses 只提供工具请求侧部分兼容;完整工具闭环需实际支持的原生 Responses 渠道,或改用 Chat Completions,详见其兼容边界 |
示例
bash
curl https://llm.xiaoyue9527.xyz/v1/messages \
-H 'Content-Type: application/json' \
-H 'x-api-key: sk-gtw-REPLACE_ME' \
--data-raw '{
"model": "qwen3.6-plus",
"max_tokens": 256,
"messages": [
{"role": "user", "content": "请只回复 OK"}
]
}'