Amux

Generate Content

最近更新:2026年8月31日

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

这个端点兼容 Google Gemini 的 generateContent 接口,可直接配合官方 SDK 使用,只需将请求地址指向本站。

鉴权沿用 Gemini 的原生方式:x-goog-api-key: <你的 Amux 密钥>,或 URL 上的 ?key=

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

POSThttps://gateway.amux.ai/v1beta/models/{model}:generateContent

鉴权

header
Authorizationstring必填

控制台创建的 Amux 密钥。这是 Gemini SDK 原生发送的鉴权头; Authorization: Bearer 与 URL 上的 ?key= 同样接受。

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

固定为 application/json

请求

application/json
modelstring必填

规范 ID,写在路径里(Gemini 把模型名与动作拼进地址)。厂商/模型 中的斜杠不要转义。冒号后缀同样可用::供应商 锁定某一家,:@策略 指定排序,写 在动作之前(models/厂商/模型:@price:generateContent)。

contentsarray<object>必填

对话内容列表。助手一侧的角色叫 model,不是 assistant

contentsarray<object>
role"user" | "model"

角色。助手一侧叫 model,不是 assistant

partsarray<object>必填

内容片段。文本写 { text: "…" },多模态用 inlineData

partsarray<object>
textstring

文本片段。

systemInstructionobject

系统指令,形状同 contents 的一项。不是 contents 里的一条。

generationConfigobject

采样与输出配置。Gemini 把别家放在顶层的参数都收在这里——temperaturemaxOutputTokensstopSequences(最多 5 条)、thinkingConfig 等,逐个见下。

generationConfigobject
temperaturenumber

采样温度,0–2。转到 Anthropic 时会被压到 1。

topPnumber

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

topKinteger

top-k 采样。OpenAI 系协议没有对等物,转过去时丢弃。转到 Anthropic 要留意:Opus 4.6 之后的模型拒收 top_k, 整个请求会 400。

candidateCountinteger

生成几条候选,相当于 Chat 的 n。跨协议时默认不传递。计费按实际返回的总 token 数。

maxOutputTokensinteger

本次生成的最大 token 数。相当于 Chat 的 max_tokens

stopSequencesarray<string>

停止词,最多 5 条。转到 Chat 时压到 4 条并留说明。

presencePenaltynumber

存在惩罚。Anthropic 没有对等物,转过去时丢弃。

frequencyPenaltynumber

频率惩罚。同上。

seedinteger

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

responseMimeTypestring

输出的 MIME 类型,application/jsontext/plain。从别家的 JSON 约束转过来时写的就是这个。

responseSchemaobject

输出要满足的 schema,Gemini 自己那套子集。

responseJsonSchemaobject

输出要满足的标准 JSON Schema。从 Chat 的 response_format.json_schema 转过来时落在这里。

responseLogprobsboolean

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

logprobsinteger

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

thinkingConfigobject

思考配置。两种写法(token 预算 / 档位)互斥,见各自说明。

thinkingConfigobject
includeThoughtsboolean

是否把思考内容一起返回。只是开关,没有详略之分——所以 Responses 的 reasoning.summary 转过来时只能落实 「要不要」这一半。

thinkingBudgetinteger

思考的 token 预算。0 表示关闭思考,这是 Gemini 唯一的关闭方式(没有布尔开关)。

thinkingLevelstring

档位式的思考强度,Gemini 3 起推荐用它。不能和 thinkingBudget 同时给——两个都写上游直接返回 400。

responseModalitiesarray<"TEXT" | "IMAGE" | "AUDIO">

要模型返回哪些模态。填非 TEXT 的值会改变计价维度(上游按张、按秒计),而这个端点的价格表只有按 token 的档, 详见 generationConfig 的说明。

mediaResolution"LOW" | "MEDIUM" | "HIGH"

输入媒体的解析精度,决定一张图折算多少 token。用量如实回来,按实际计价。

speechConfigobject

语音输出配置。原样透传,跨协议时默认不传递。

imageConfigobject

图像输出配置。原样透传,跨协议时默认不传递。

labelsobject

自定义键值标签,Google 侧用来拆分它那边的账单。原样透传,不影响我们这边的计费。

toolsarray<object>

可调用的工具,{ functionDeclarations: [{ name, description, parameters }] }。注意外面多包了一层。

toolConfigobject

工具选择。functionCallingConfig.modeAUTO / ANY / NONE,对应别家的 tool_choice

toolConfigobject
functionCallingConfigobject

modeAUTO / ANY / NONE,对应别家的 tool_choiceallowedFunctionNames 可把可调用范围限定到几个。

safetySettingsarray<object>

安全策略阈值。Gemini 独有,原样透传。

cachedContentstring

显式缓存的内容句柄。Gemini 独有,原样透传——它是上游侧的状态,只在锁定了供应商时可靠。 命中缓存的部分会以更低的单价回到用量里,按实际发生的计价即可,我们不拦。

serviceTier"standard" | "flex" | "priority"

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

storeboolean

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

响应

200response

推理成功。

402response

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

路径与版本段

Gemini 会把模型名和动作写入 URL,这一点与其他兼容协议的固定路径形式不同:

POST /v1beta/models/anthropic/claude-opus-5:generateContent
  • 同时支持 v1betav1 Google 官方文档当前主要展示 v1beta
  • 流式是另一个动作:将末尾的 :generateContent 替换为 :streamGenerateContent。官方 SDK 通常还会配合 alt=sse;省略 alt 时返回持续增长的 JSON 数组,而不是 SSE。
  • 模型名里的斜杠不要转义

与其他兼容协议的三个差异

  • 系统提示词在顶层 systemInstruction,不是内容数组里的一条。
  • 助手一侧的角色叫 model,不是 assistant
  • candidatesTokenCount 不含思考 token,而站内账单里的输出 token 是含的。

错误

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

cURL
curl https://gateway.amux.ai/v1beta/models/google/gemini-3-pro:generateContent \
  -H "x-goog-api-key: $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {
            "text": "Hello!"
          }
        ]
      }
    ]
  }'
{
  "candidates": [
    {
      "content": {
        "role": "user",
        "parts": [
          {
            "text": "Hello!"
          }
        ]
      },
      "finishReason": "STOP"
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 0,
    "candidatesTokenCount": 0,
    "totalTokenCount": 0
  }
}