Create Chat Completion
最近更新:2026年9月1日
OpenAI Chat Completions 兼容端点,可用官方 SDK 调用任何支持该协议的模型。
这个端点兼容 OpenAI Chat Completions。继续使用官方 SDK,把 base_url 和密钥指向 Amux 即可。
下表列出全部主要请求参数,包括取值范围、跨协议时的处理方式,以及使用上的前置条件。未单列说明的字段通常会在同协议直连时按上游兼容行为透传;跨协议转换或平台主动过滤时可能不会保留。
https://gateway.amux.ai/v1/chat/completions鉴权
headerAuthorizationstring必填Bearer <你的 Amux 密钥> 控制台创建的 Amux 密钥。忘了可以回控制台的密钥页再看一次。
Content-Typestring必填默认 "application/json"固定为 application/json。
anthropic-betastringAnthropic 的 beta 功能开关。这条端点上不支持——即使这次请求最终转到 Anthropic 上游,它也不会被带过去。需要它请走 /v1/messages。
请求
application/jsonmodelstring必填规范 ID,形如 厂商/模型。冒号后缀有两种用法::供应商 锁定某一家(anthropic/claude-opus-5:anthropic,锁定后该供应商故障即失败 ,不会自动切换);:@策略 指定这一次的排序(:@price / :@latency / :@throughput / :@reliability / :@balanced)。两者不能同时写,取值含义见概览。
messagesarray<object>必填对话消息列表。system 与 developer 两个角色等价,后者是 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_biasobjecttoken 偏置表。仅 Chat 协议独有,跨协议时默认不传递。
logprobsboolean返回 token 概率。跨协议时默认不传递。
top_logprobsinteger每个位置返回几个候选的概率,需同时开 logprobs。跨协议时默认不传递。
response_formatobjectJSON 输出约束。Gemini 上游转成 responseMimeType + responseJsonSchema;Anthropic 没有对等物,那条链路 上不生效——Anthropic 的结构化输出要自己定义一个工具并强制调用。
›response_formatobject
type"text" | "json_object" | "json_schema"text 不约束;json_object 只保证是合法 JSON;json_schema 按你给的 schema 约束。
json_schemaobjecttype 为 json_schema 时的 schema 本体,{ name, schema, strict }。转到 Gemini 时写入 responseJsonSchema。
seedinteger采样种子。Gemini 有对等物,Anthropic 与 Responses 没有。
toolsarray<object>可调用的工具,{ type: "function", function: { name, description, parameters } }。四种协议的工具形状不同,跨 协议时自动改写。
tool_choicestringauto / 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_retention。 mode: 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。原样透传,不影响计价,跨协议时默认不传递。
predictionobjectPredicted Outputs,{ type: "content", content }。大段输出已知时(改一段代码里的几行)能显著降低延迟。原样透传, 跨协议时默认不传递。
web_search_optionsobject内置网络搜索工具,{ user_location, search_context_size }。原样透传给支持它的上游,跨协议时默认不传递—— 各家的内置工具形状完全不同,凑不出对应关系。
moderationobject内容审核配置,{ model, policy }。原样透传,跨协议时默认不传递。
响应
200response推理成功。model 返回的是规范 ID,与请求时写的是同一个值。
402response余额不足。这类错误不重试,也不影响任何供应商的健康度。
关于模型与协议
用这个端点可以调任何支持该协议的模型,不限于 OpenAI。模型详情页会列出每个模型实际开放的入口协议。
不支持的组合会明确报错,不会静默改走其他入口。
错误
错误按 OpenAI 的错误体形状返回,type 取值与重试语义见错误与重试。
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
}
}