Skip to content

Adobe Gemini 香蕉生图文档

本页说明如何使用 We-AI 提供的 Adobe Gemini 香蕉生图接口。该网关用 Google Generative Language v1beta 协议对外提供 Adobe Firefly 的 Gemini 图片模型(俗称 Nano Banana),标准 Google 协议的客户端(官方 google-genai SDK、各类 Gemini 兼容工具)只要把 Base URL 指到网关即可直接出图 / 改图。

核心结论:

  • 生成图片使用同步接口:POST /v1beta/models/{model}:generateContent
  • 查看可用模型使用:GET /v1beta/models
  • 只做图片生成 / 改图;没有文本、对话、countTokensembedContent
  • 文生图、图生图(改图)走同一个接口,区别只在于请求里带不带参考图

官方参考:

接入线路

当前可用入口如下,接入时选择其中一个作为 BASE_URL 即可:

  • https://us-la.we-token.cc/:国际加速路线。
  • https://asian-acc.we-token.cc/:亚太加速路线。
  • https://sub2api.we-token.cc/:国内加速路线。
  • https://sub2api.aitu.art/:Aitu 独立站点入口;它是早先单独的独立站点,与 we-token.cc 的用户体系不打通。

us-la.we-token.ccasian-acc.we-token.ccsub2api.we-token.cc 都是 We-AI 的 we-token.cc 站点,用户体系相同,区别只是加速区域不同。sub2api.aitu.art 是早先单独的独立站点,与 we-token.cc 的用户体系不打通,API Key、余额和账号信息请以对应站点后台为准。

一、接口概览

Adobe Gemini 香蕉生图当前使用两个主要接口。

用途方法路径说明
查看模型列表GET/v1beta/models用于确认当前可用模型、模型 ID 和平台返回字段。
同步生成图片POST/v1beta/models/{model}:generateContent用于文生图、图生图、改图。

协议路径还包含流式 :streamGenerateContent,但本网关一次性出整图,不推荐使用流式接口(见后文)。

示例中的 BASE_URL 请替换成你的平台入口,例如:

txt
https://us-la.we-token.cc
https://asian-acc.we-token.cc
https://sub2api.we-token.cc
https://sub2api.aitu.art

二、鉴权方式

鉴权使用 We-AI 的 API Key,请求头格式如下:

http
Authorization: Bearer sk-xxxx
Content-Type: application/json

后续所有请求示例都使用 Authorization: Bearer ${API_KEY}。请不要把真实 API Key 写进前端代码、公开仓库或聊天截图。

三、查看模型列表

建议接入前先请求模型列表,确认当前可用模型:

bash
curl "${BASE_URL%/}/v1beta/models" \
  -H "Authorization: Bearer ${API_KEY}" \
  -H "Content-Type: application/json"

Windows PowerShell 中建议使用 curl.exe

powershell
curl.exe "$($env:BASE_URL.TrimEnd('/'))/v1beta/models" `
  -H "Authorization: Bearer $($env:API_KEY)" `
  -H "Content-Type: application/json"

如果模型列表返回为空、401 或 404,请优先检查:

  • BASE_URL 是否正确。
  • API_KEY 是否有效。
  • 是否把 /v1beta 重复写进了 BASE_URL
  • 当前账号是否开通了 Adobe Gemini 香蕉生图模型。

四、支持的模型

调用名({model}说明参考图上限
gemini-3.1-flash-image快、便宜,默认模型6
gemini-3-pro-image质量更高,贵6

说明:

  • 末尾 -preview 会被当别名剥掉:gemini-3-pro-image-previewgemini-3-pro-image
  • 计费、日志按上面的调用名归类(别名归并到基础名)。

与 flow 香蕉生图的区别

两种 gemini 香蕉生图的核心差异就在生图模型名称上:

  • Adobe(本页):模型名只有基础名 gemini-3.1-flash-image / gemini-3-pro-image不带比例和清晰度后缀;比例、清晰度通过请求体的 generationConfig.imageConfigaspectRatio / imageSize)控制。
  • flow:模型名采用 {模型前缀}_{比例}_{清晰度} 格式,例如 gemini-3.0-pro-image_16-9_2k,比例和清晰度直接写进模型名

两者不要混用模型名。详见 flow gemini 香蕉生图

五、请求体结构

jsonc
{
  "contents": [{
    "parts": [
      { "text": "把所有 text part 拼成最终 prompt" },
      { "inlineData": { "mimeType": "image/png", "data": "<base64>" } }  // 可选,参考图(改图)
    ]
  }],
  "generationConfig": {
    "responseModalities": ["IMAGE"],          // 可选,见下
    "imageConfig": {
      "aspectRatio": "16:9",                  // 可选,默认 1:1
      "imageSize": "2K"                        // 可选,默认 2K
    }
  }
}

字段说明:

字段必填说明
contents[].parts[].text所有 text part 用空格拼成一个 prompt。至少要有一个非空 text,否则返回 400 INVALID_ARGUMENT: request contains no text prompt
contents[].parts[].inlineData参考图,纯 base64。有它 = 改图(image2image),最多 6 张,单张 ≤ 20 MB,支持 png/jpeg/webp。
generationConfig.imageConfig.aspectRatio见下方支持列表;默认 1:1
generationConfig.imageConfig.imageSize512 / 1K / 2K / 4K(大小写不敏感);默认 2K
generationConfig.responseModalities解析但忽略——本网关永远只回一张图。传 ["IMAGE"] 或不传都行。

支持的 aspectRatio1:12:33:23:44:34:55:49:1616:921:9

实际输出像素由后端按「比例 + 分辨率档」决定,不等于 imageSize 的字面正方形。例如 2:3 / 2K 实测回 1696×252816:9 / 1K1376×768。把 imageSize 理解成“清晰度档位”,把 aspectRatio 理解成“形状”,二者独立。

暂不支持(传了会被忽略,不报错):tools(含 googleSearch 接地)、responseModalities 里的 TEXTtemperature 等文本采样参数。

六、文生图请求示例

curl 示例:

bash
curl -s "${BASE_URL%/}/v1beta/models/gemini-3.1-flash-image:generateContent" \
  -H "Authorization: Bearer ${API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "a lone red maple tree on a misty hill, watercolor"}]}],
    "generationConfig": {"imageConfig": {"aspectRatio": "2:3", "imageSize": "2K"}}
  }' \
| python3 -c 'import sys,json,base64; d=json.load(sys.stdin); open("out.png","wb").write(base64.b64decode(d["candidates"][0]["content"]["parts"][0]["inlineData"]["data"])); print("saved out.png")'

Windows PowerShell 示例:

powershell
curl.exe "$($env:BASE_URL.TrimEnd('/'))/v1beta/models/gemini-3.1-flash-image:generateContent" `
  -H "Authorization: Bearer $($env:API_KEY)" `
  -H "Content-Type: application/json" `
  -d "{`"contents`":[{`"parts`":[{`"text`":`"a lone red maple tree on a misty hill, watercolor`"}]}],`"generationConfig`":{`"imageConfig`":{`"aspectRatio`":`"2:3`",`"imageSize`":`"2K`"}}}"

七、响应结构和图片保存

jsonc
{
  "candidates": [{
    "content": {
      "role": "model",
      "parts": [
        { "inlineData": { "mimeType": "image/png", "data": "<base64 PNG>" } }
      ]
    },
    "finishReason": "STOP",
    "index": 0
  }],
  "usageMetadata": { "promptTokenCount": 0, "candidatesTokenCount": 0, "totalTokenCount": 0 },
  "modelVersion": "gemini-3.1-flash-image"
}
  • 图片在 candidates[0].content.parts[0].inlineData.data,base64,通常是 PNG。
  • inlineData.data 按 base64 解码写入本地文件即可,格式可参考 inlineData.mimeType
  • usageMetadata 目前恒为 0(Adobe 后端不返回 token 计数)。

八、图生图 / 改图

把参考图作为 inlineData 放进 parts(最多 6 张)。base64 太长,建议用脚本拼请求体:

bash
python3 - <<'PY'
import json, base64
b64 = base64.b64encode(open("car.png","rb").read()).decode()
req = {
  "contents": [{"parts": [
    {"text": "turn this into a nighttime scene with stars and headlights on"},
    {"inlineData": {"mimeType": "image/png", "data": b64}}
  ]}],
  "generationConfig": {"imageConfig": {"aspectRatio": "16:9", "imageSize": "1K"}}
}
json.dump(req, open("req.json","w"))
PY

curl -s "${BASE_URL%/}/v1beta/models/gemini-3.1-flash-image:generateContent" \
  -H "Authorization: Bearer ${API_KEY}" \
  -H "Content-Type: application/json" \
  --data-binary @req.json \
| python3 -c 'import sys,json,base64; d=json.load(sys.stdin); open("edit.png","wb").write(base64.b64decode(d["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]))'

注意:

  • data 只放纯 base64,不要带 data:image/png;base64, 前缀。
  • mimeType 要和原图格式一致,常见值是 image/pngimage/jpegimage/webp
  • 最多 6 张参考图,单张 ≤ 20 MB。

九、同步生成,不推荐流生成

本网关一次性出整图,所以“流”里只有一个 chunk:

  • 默认:返回一个 JSON 数组 [ {…同上的响应…} ]
  • ?alt=sse:返回 SSE,一行 data: {…}\n\n

行为和数据结构与 :generateContent 一致,只是外层包装不同。但高分辨率图片生成本身耗时较长,流式并不能明显降低最终等待时间,因此优先使用同步接口,避免使用:

txt
POST /v1beta/models/{model}:streamGenerateContent

十、错误格式

Google 风格错误:

json
{ "error": { "code": 400, "message": "unknown model: foo", "status": "INVALID_ARGUMENT" } }
HTTPstatus触发
400INVALID_ARGUMENT未知模型 / JSON 不合法 / 无 prompt / 参考图超限 / 内容被安全审核拒绝。
429RESOURCE_EXHAUSTED入口队列满、排队超时,或上游限流重试后仍失败。
504DEADLINE_EXCEEDED单次生成超时。
500INTERNAL其它上游 / 内部错误。

429 / 504 通常是瞬时的(Adobe 全局限流),客户端退避重试即可,换个时间点一般就过。

十一、限制速查

参考图数量≤ 6
单张参考图大小≤ 20 MB(base64 解码后)
imageSize512 / 1K / 2K / 4K(默认 2K
aspectRatio见第五节(默认 1:1
默认模型gemini-3.1-flash-image
并发 / 限流全局共享上游,瞬时 429/504 退避重试即可。