Amux

Create Message

最近更新:2026年8月31日

Anthropic Messages 协议的推理端点,兼容官方 SDK,可调任意支持该协议的模型。

这个端点兼容 Anthropic 的 Messages 接口,可直接配合官方 SDK 使用,只需把 base_url 指过来。

鉴权用 Anthropic 的原生方式:x-api-key: <你的 Amux 密钥>

下表列出主要请求参数,包含取值范围、跨协议调用时的处理方式,以及使用上的前置条件。Anthropic 原生字段在直连时会尽量保留,但计费相关字段和跨协议不兼容项仍可能被拦截、归一化或丢弃。

POSThttps://gateway.amux.ai/v1/messages

鉴权

header
Authorizationstring必填

控制台创建的 Amux 密钥。这是 Anthropic SDK 原生发送的鉴权头; Authorization: Bearer 同样接受。

Content-Typestring必填默认 "application/json"

固定为 application/json

请求

application/json
modelstring必填

规范 ID,形如 厂商/模型。冒号后缀可锁定供应商(:供应商)或指定路由策略(:@price 等),两者不能同时写。见概览

messagesarray<object>必填

对话消息列表。角色只有 userassistant系统提示词不在这里,走顶层 system

messagesarray<object>
role"user" | "assistant"必填

消息角色。Anthropic 的系统提示词不在这里,走顶层 system

contentstring必填

消息内容。多模态模型可传内容块数组,每项形如 { type: "text" | "image" }

max_tokensinteger必填

最大输出 token 数。这个端点要求它必须为正整数;缺失或非法时会在入口直接拒绝。 从别的协议转过来时若没给,我们按模型上限填入。

systemstring

顶层系统提示词。可以是字符串,也可以是带 cache_control 的文本块数组。

temperaturenumber

采样温度,0–1(不是 0–2)。从 Chat / Gemini 转过来时超过 1 的值会被压到 1。

⚠️ Anthropic 已把这三个采样参数标为废弃:Claude Opus 4.6 之后发布的模型上,temperature 只接受 1、 top_p 只接受 ≥0.99、top_k 直接拒收。我们不替上游拦(拦了就等于替你决定哪个模型算"新"), 所以打到新模型上时由上游报错。这条链路上真正可靠的做法是不发它们。

top_pnumber

核采样。开启 thinking 时会被移除——Anthropic 推理模式不接受它。新模型上的废弃情况见 temperature

top_kinteger

top-k 采样。OpenAI 系协议没有这个参数,转过去时丢弃。开启 thinking 时同样会被移除。

⚠️ Gemini → Anthropic 这条链路要留意:Gemini 的 topK 会被转成这里的 top_k,而 Opus 4.6 之后的模型 拒收 top_k,于是整个请求 400。不带 topK 可避免。

stop_sequencesarray<string>

停止词。转到 Chat 时最多 4 条、Gemini 最多 5 条,超出会截断并留说明。

streamboolean默认 false

以 SSE 流式返回。Anthropic 的事件序列要求严格配对,我们在收尾时会补齐未闭合的块。

toolsarray<object>

可调用的工具,{ name, description, input_schema }。注意 schema 字段叫 input_schema,不是 parameters

tool_choiceobject

{ type: "auto" | "any" | "none" | "tool" }any 对应 OpenAI 的 required。并行开关也挂在这里 :disable_parallel_tool_use

thinkingobject

扩展思考。从 OpenAI 系的 reasoning_effort 转过来时,档位会换算成这里的 token 预算。 预算会被自动调整到 max_tokens 之内;实在放不下时我们关闭思考,而不是让上游拒绝整个请求。

thinkingobject
type"enabled" | "disabled" | "adaptive"

enabled 要配 budget_tokensadaptive 让模型自己决定想多久;disabled 关掉。

budget_tokensinteger

思考的 token 预算,下限 1024,且计入 max_tokens。只在 type: enabled 时有意义。

display"summarized" | "omitted"

思考内容回摘要(summarized,默认)还是不回(omitted)。我们不建模,原样透传。

output_configobject

输出配置。effort档位式的推理强度,和 thinking.budget_tokens 的 token 预算是两种量纲;format 是结构化输出约束 ({ type: "json_schema", schema })。

原样透传,跨协议时不传递。注意它和 OpenAI 的 reasoning_effort 档位相近但我们目前不互转——从 OpenAI 系转过来的 reasoning_effort 仍然换算成 thinking.budget_tokens

output_configobject
effort"low" | "medium" | "high" | "xhigh" | "max"

档位式的推理强度。和 thinking.budget_tokens 的 token 预算是两种量纲,目前我们不在两者之间互转。

formatobject

结构化输出约束,{ type: "json_schema", schema }

cache_controlobject

顶层缓存断点,自动打在最后一个可缓存块上。ttl 会改变缓存写入的单价(5 分钟 1.25×、1 小时 2×), 但这一类我们不拦:用量回来时两种写入是分开计的(cache_creation.ephemeral_5m_input_tokens..._1h_...), 按实际发生的那一档计价就是对的。合并统计才会少收。

cache_controlobject
type"ephemeral"

目前只有 ephemeral 一种。

ttl"5m" | "1h"

缓存的存活时间。两档的写入单价不同(5 分钟 1.25×、1 小时 2×),用量里两者是分开计的,按实际发生的那一档计价。

containerobject

容器复用,可以是字符串 ID,也可以是 { id, skills: [{ skill_id, type, version }] }(最多 20 个 skill)。 Anthropic 独有,原样透传——它是上游侧的状态,只在锁定了供应商时可靠。

inference_geo"global" | "us"

推理运行的地域。不支持——我们不会把它转发给任何上游,两条路径都摘。 ⚠️ 有合规地域要求的话不要依赖这个参数:摘掉之后推理走 global 路由,而不是仅限美国基础设施。需要限定地域请锁定供应商(:供应商 后缀),并选一条本身就限定地域的渠道。摘了什么会告诉你:非流式在响应体的 amux.droppedParams,流式在 x-amux-dropped-params 响应头。

metadataobject

metadata.user_id 是终端用户标识,对应别家的 user

metadataobject
user_idstring

终端用户标识,对应别家的 user别放姓名、邮箱这类可识别信息——上游只拿它做滥用检测,用不透明 ID 就够。

service_tier"auto" | "standard_only"

服务档位。不支持——我们不会把它转发给任何上游,两条路径都摘。 实际影响很小:auto 本来就是 Anthropic 的默认值。摘了什么会告诉你:非流式在响应体的 amux.droppedParams,流式在 x-amux-dropped-params 响应头。

响应

200response

推理成功。model 返回的是规范 ID,与请求时写的是同一个值。

402response

余额不足。这类错误不重试,也不影响任何供应商的健康度。

三处和 OpenAI 协议不同

  • max_tokens 必填。 缺失或不是正整数时,这个端点会先拒绝请求。
  • 系统提示词在顶层 system,不是 messages 里的一条。
  • input_tokens 不含缓存读取部分,和 OpenAI 的 prompt_tokens 口径相反。按 OpenAI 的理解去加会重复计算。

错误

错误按 Anthropic 的错误体形状返回,type 取值与重试语义见错误与重试

cURL
curl https://gateway.amux.ai/v1/messages \
  -H "x-api-key: $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-opus-5",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'
{
  "id": "msg_01ABC",
  "type": "message",
  "role": "assistant",
  "model": "anthropic/claude-opus-5",
  "content": [
    {
      "type": "text",
      "text": "Hello!"
    }
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0,
    "cache_read_input_tokens": 0
  }
}