Amux
图像Gemini 格式

OpenAI 聊天格式

通过 OpenAI Chat Completions 格式调用 Gemini 图像生成模型 — 使用熟悉的 chat 接口生成图像

通过标准的 OpenAI Chat Completions 接口调用 Gemini 系列图像生成模型。amux-api 在网关层会自动识别图像模型并注入 responseModalities=["TEXT","IMAGE"],将上游返回的图像以 Markdown 内嵌 Base64 的形式回填到 message.content

项目
请求方法POST
请求路径/v1/chat/completions
完整 URLhttps://api.amux.ai/v1/chat/completions
认证方式Authorization: Bearer <API_TOKEN>
请求格式application/json
响应格式JSON 或 SSE(stream=true 时)

请求体的完整字段(messages、stream、temperature 等)请见 Chat Completions 完整参考。本页只关注 Gemini 图像生成相关的特殊行为。

支持的模型

amux-api 内置的 Gemini 图像生成模型:

模型别名 / 说明
gemini-2.5-flash-imageNano Banana
gemini-3-pro-image-previewNano Banana Pro
gemini-3.1-flash-image-previewNano Banana 2
gemini-2.0-flash-exp-image-generation早期实验版
gemini-2.0-flash-exp早期实验版

只要 model 字段命中以上列表,amux-api 即按图像生成路径处理。

关键请求字段

Prop

Type

自动注入:amux-api 检测到 model 是 Gemini 图像模型时,会自动将 responseModalities=["TEXT","IMAGE"] 注入到上游的 generationConfig,调用方无需关心。

extra_body 结构

通过 extra_body.google.image_config 透传 Gemini 图像生成的专属参数:

Prop

Type

字段命名陷阱:在 extra_body.google.image_config / thinking_config必须使用 snake_caseaspect_ratioimage_sizethinking_budget)。如果误用 camelCase,amux-api 会直接返回明确错误:

extra_body.google.image_config.aspectRatio is not supported, use extra_body.google.image_config.aspect_ratio instead

amux-api 会在内部把 snake_case 转换为 Gemini 上游所需的 camelCase。

请求示例

文本生图

curl https://api.amux.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -d '{
    "model": "gemini-2.5-flash-image",
    "messages": [
      { "role": "user", "content": "一只戴着贝雷帽的可爱海獭幼崽,水彩风格" }
    ],
    "extra_body": {
      "google": {
        "image_config": {
          "aspect_ratio": "1:1",
          "image_size": "1K"
        }
      }
    }
  }'
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.amux.ai/v1",
    api_key=os.environ["AMUX_API_KEY"],
)

response = client.chat.completions.create(
    model="gemini-2.5-flash-image",
    messages=[
        {"role": "user", "content": "一只戴着贝雷帽的可爱海獭幼崽,水彩风格"}
    ],
    extra_body={
        "google": {
            "image_config": {
                "aspect_ratio": "1:1",
                "image_size": "1K",
            }
        }
    },
)

# content 中包含 ![image](data:image/png;base64,...) 形式的内嵌图像
print(response.choices[0].message.content)
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://api.amux.ai/v1',
  apiKey: process.env.AMUX_API_KEY,
});

const response = await client.chat.completions.create({
  model: 'gemini-2.5-flash-image',
  messages: [
    { role: 'user', content: '一只戴着贝雷帽的可爱海獭幼崽,水彩风格' },
  ],
  // @ts-expect-error extra_body 由 amux-api 自定义透传
  extra_body: {
    google: {
      image_config: { aspect_ratio: '1:1', image_size: '1K' },
    },
  },
});

console.log(response.choices[0].message.content);

图像编辑(参考图 + 提示)

IMAGE_BASE64=$(base64 < cat.png | tr -d '\n')

curl https://api.amux.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -d "{
    \"model\": \"gemini-2.5-flash-image\",
    \"messages\": [{
      \"role\": \"user\",
      \"content\": [
        { \"type\": \"text\", \"text\": \"把这张图的背景换成樱花飘落的春日庭院\" },
        { \"type\": \"image_url\", \"image_url\": { \"url\": \"data:image/png;base64,$IMAGE_BASE64\" } }
      ]
    }]
  }"

响应格式

amux-api 把 Gemini 返回的图像 inlineData 转换为 Markdown 内嵌格式,写入 choices[0].message.content

{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1730000000,
  "model": "gemini-2.5-flash-image",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "这是一只戴着贝雷帽的海獭幼崽。\n\n![image](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...)"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 24,
    "completion_tokens": 1290,
    "total_tokens": 1314
  }
}

解析图像

message.content 中可使用正则提取 Base64 图像数据:

import re
import base64

content = response.choices[0].message.content
matches = re.findall(r'!\[.*?\]\(data:image/(\w+);base64,([^\)]+)\)', content)

for i, (mime_ext, b64) in enumerate(matches):
    with open(f"output_{i}.{mime_ext}", "wb") as f:
        f.write(base64.b64decode(b64))
const content = response.choices[0].message.content!;
const matches = [...content.matchAll(/!\[.*?\]\(data:image\/(\w+);base64,([^\)]+)\)/g)];

matches.forEach(([, ext, b64], i) => {
  const buffer = Buffer.from(b64, 'base64');
  require('node:fs').writeFileSync(`output_${i}.${ext}`, buffer);
});

流式响应

设置 stream=true 后按 SSE 增量返回。Markdown 形式的图像数据会拼接到 delta.content 中分块下发:

data: {"choices":[{"index":0,"delta":{"role":"assistant","content":""}}]}

data: {"choices":[{"index":0,"delta":{"content":"![image](data:image/png;base64,iVBOR"}}]}

data: {"choices":[{"index":0,"delta":{"content":"w0KGgoAAAANSUhEUg..."}}]}

data: {"choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

由于 Base64 字符串较长,建议在客户端把 delta.content 完整拼接后再做一次正则提取。

错误响应

错误响应结构与 Chat Completions 一致。Gemini 图像生成相关的特殊错误:

错误原因
extra_body.google.imageConfig is not supported, use extra_body.google.image_config instead顶层使用了 camelCase,应为 snake_case image_config
extra_body.google.image_config.aspectRatio is not supported, use ... aspect_ratio instead内层字段使用了 camelCase,应为 snake_case
not supported model for image generationmodel 不是 Gemini 图像模型

On this page