Amux

Create Chat Completion

最近更新:2026年9月1日

OpenAI Chat Completions 兼容端点,可用官方 SDK 调用任何支持该协议的模型。

这个端点兼容 OpenAI Chat Completions。继续使用官方 SDK,把 base_url 和密钥指向 Amux 即可。

下表列出全部主要请求参数,包括取值范围、跨协议时的处理方式,以及使用上的前置条件。未单列说明的字段通常会在同协议直连时按上游兼容行为透传;跨协议转换或平台主动过滤时可能不会保留。

POSThttps://gateway.amux.ai/v1/chat/completions

鉴权

header
Authorizationstring必填

Bearer <你的 Amux 密钥> 控制台创建的 Amux 密钥。忘了可以回控制台的密钥页再看一次。

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

固定为 application/json

anthropic-betastring

Anthropic 的 beta 功能开关。这条端点上不支持——即使这次请求最终转到 Anthropic 上游,它也不会被带过去。需要它请走 /v1/messages

请求

application/json
modelstring必填

规范 ID,形如 厂商/模型。冒号后缀有两种用法::供应商 锁定某一家(anthropic/claude-opus-5:anthropic,锁定后该供应商故障即失败 ,不会自动切换);:@策略 指定这一次的排序(:@price / :@latency / :@throughput / :@reliability / :@balanced)。两者不能同时写,取值含义见概览

messagesarray<object>必填

对话消息列表。systemdeveloper 两个角色等价,后者是 OpenAI 给推理模型引入的别名。

messagesarray<object>
role"system" | "developer" | "user" | "assistant" | "tool"必填

消息角色。

contentstring必填

消息内容。多模态模型可传数组,每项形如 { type: "text" | "image_url" }; 某个模型支持哪些模态,见该模型所属制造商的参数文档。

max_tokensinteger

本次生成的最大 token 数。超过模型上限时压到上限,并在日志里留一条转换说明。

max_completion_tokensinteger

max_tokens,新版 OpenAI 模型用的字段名。两个都给时以这个为准。

temperaturenumber

采样温度,0–2。转到 Anthropic 上游时压到 1(它的上限),压过会留一条转换说明。

top_pnumber

核采样。与 temperature 二选一,官方建议不要同时调。

ninteger

生成几条候选。跨协议时默认不传递——另外三家没有对等物。同协议直连时按上游行为。

streamboolean默认 false

以 SSE 流式返回。用量在最后一个数据块里给出。

stream_optionsobject

流式选项。设置 include_usage: true 时,客户端会收到最后那一块仅包含 usage 的结尾帧。include_obfuscation 给流式增量补随机填充字节,原样透传给支持它的上游。

stream_optionsobject
include_usageboolean

客户端是否需要收到最后那一块仅包含 usage 的结尾帧。平台可能为了内部计费向上游请求 usage,但不会把这类额外结尾帧暴露给未请求它的客户端。

include_obfuscationboolean

给流式增量补随机填充字节,用来削弱按包长做的旁路推断。原样透传给支持它的上游。

stopstring | array<string>

停止词,单条可以直接写字符串,多条用数组,最多 4 条。转到 Gemini 时最多 5 条、转到 Anthropic 无上限;反向超出时截断并留说明。 最新的推理模型(o3 / o4-mini 这类)不接受这个参数,那是上游的限制。

presence_penaltynumber

存在惩罚,-2 到 2。Anthropic 与 Responses 没有对等物,转过去时丢弃并留说明。

frequency_penaltynumber

频率惩罚,-2 到 2。同上。

logit_biasobject

token 偏置表。仅 Chat 协议独有,跨协议时默认不传递。

logprobsboolean

返回 token 概率。跨协议时默认不传递

top_logprobsinteger

每个位置返回几个候选的概率,需同时开 logprobs跨协议时默认不传递

response_formatobject

JSON 输出约束。Gemini 上游转成 responseMimeType + responseJsonSchemaAnthropic 没有对等物,那条链路 上不生效——Anthropic 的结构化输出要自己定义一个工具并强制调用。

response_formatobject
type"text" | "json_object" | "json_schema"

text 不约束;json_object 只保证是合法 JSON;json_schema 按你给的 schema 约束。

json_schemaobject

typejson_schema 时的 schema 本体,{ name, schema, strict }。转到 Gemini 时写入 responseJsonSchema

seedinteger

采样种子。Gemini 有对等物,Anthropic 与 Responses 没有。

toolsarray<object>

可调用的工具,{ type: "function", function: { name, description, parameters } }。四种协议的工具形状不同,跨 协议时自动改写。

tool_choicestring

auto / none / required,或 { type: "function", function: { name } } 指定某一个。四家的取值都能对 上,跨协议时自动映射。

parallel_tool_callsboolean

是否允许一次发起多个工具调用。转到 Anthropic 时取反后写入 tool_choice.disable_parallel_tool_use;Gemini 没有 这个开关。仅在带了 tools 时发送,否则上游会拒绝整个请求。

reasoning_effort"none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max"

推理强度档位。取值跟着模型世代走,这里列的是并集:minimal 属于 GPT-5.4 / 5.5,GPT-5.6 起不再提供;xhigh / max 反过来是 5.6 才有的;none 表示不要推理。填了这个模型不认的档位由上游报错,我们不替它拦。

none 会被翻成各家的「关掉思考」:Anthropic 不下发 thinking,Gemini 下发 thinkingBudget: 0。其余档位转到 Anthropic 时换算成 thinking.budget_tokens,转到 Gemini 时换算成 thinkingLevel

userstring

终端用户标识,上游拿它做滥用检测。转到 Anthropic 时写入 metadata.user_id也用作会话亲和的依据:带上它能让同一会话稳定落在同一供应商,提 示缓存才命中得了。

OpenAI 官方正在用 safety_identifier + prompt_cache_key 取代它。我们两个都认,user 不会失效;但如果你已经迁到 safety_identifier会话亲和要改用 prompt_cache_key——safety_identifier 是原样透传的,不参与路由。

prompt_cache_keystring

会话标识,比 user 优先。同一个值的请求会被路由到同一家供应商,让上游的提示缓存命中。不传时按系统提示词与首条消息推断。

metadataobject

自定义键值对,随请求透传给上游。

storeboolean

是否让上游留存本次对话。原样透传,我们自己不留存请求正文。

service_tier"auto" | "default" | "flex" | "scale" | "priority" | "fast"

服务档位。不支持——我们不会把它转发给任何上游,两条路径都摘。 带了它不会报错,摘了什么会告诉你:非流式在响应体的 amux.droppedParams,流式在 x-amux-dropped-params 响应头。

verbosity"low" | "medium" | "high"

输出详略,GPT-5 系列起提供。转到 Responses 时写入 text.verbosity位置不同,同一个东西);Anthropic 与 Gemini 没有对等物,转过去时丢弃并留说明。

safety_identifierstring

终端用户标识,OpenAI 用它取代 user 做滥用检测。原样透传,跨协议时默认不传递——另外两家没有对等字段。

注意它不参与会话亲和:只发它而不发 prompt_cache_key 的话,同一会话可能落到不同供应商,上游的提示缓存必然落空。

prompt_cache_optionsobject

显式提示缓存断点。仅 gpt-5.6 及以后的模型支持,更早的模型要用 prompt_cache_retentionmode: explicit 时断点由你用 prompt_cache_breakpoint 标记,implicit(默认)由上游自己选一个。原样透传,跨协议时默认不传递。

prompt_cache_optionsobject
ttl"30m"

缓存条目的存活时间,目前只接受 30m

mode"implicit" | "explicit"

implicit(默认)由上游自己选一个断点;explicit 时断点由你用 prompt_cache_breakpoint 标出来。

prompt_cache_retention"in_memory" | "24h"

提示缓存的保留时长。in_memory 是几分钟到一小时,24h 最长留一天。这是 gpt-5.6 之前的模型用的字段, 5.6 及以后改用 prompt_cache_options。原样透传,不影响计价,跨协议时默认不传递。

predictionobject

Predicted Outputs,{ type: "content", content }。大段输出已知时(改一段代码里的几行)能显著降低延迟。原样透传, 跨协议时默认不传递

web_search_optionsobject

内置网络搜索工具,{ user_location, search_context_size }。原样透传给支持它的上游,跨协议时默认不传递—— 各家的内置工具形状完全不同,凑不出对应关系。

moderationobject

内容审核配置,{ model, policy }。原样透传,跨协议时默认不传递。

响应

200response

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

402response

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

关于模型与协议

用这个端点可以调任何支持该协议的模型,不限于 OpenAI。模型详情页会列出每个模型实际开放的入口协议。

不支持的组合会明确报错,不会静默改走其他入口。

错误

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

cURL
curl https://gateway.amux.ai/v1/chat/completions \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "anthropic-beta: <value>" \
  -d '{
    "model": "anthropic/claude-opus-5",
    "messages": [
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'
{
  "id": "chatcmpl-8f3c1a",
  "object": "chat.completion",
  "model": "anthropic/claude-opus-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "user",
        "content": "Hello!"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 0,
    "completion_tokens": 0,
    "total_tokens": 0
  }
}