Appearance
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 - 只做图片生成 / 改图;没有文本、对话、
countTokens、embedContent - 文生图、图生图(改图)走同一个接口,区别只在于请求里带不带参考图
官方参考:
- Gemini API Image generation
- Gemini API Reference: models.generateContent
- Gemini API Reference: models.list
接入线路
当前可用入口如下,接入时选择其中一个作为 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.cc、asian-acc.we-token.cc 和 sub2api.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-preview≡gemini-3-pro-image。 - 计费、日志按上面的调用名归类(别名归并到基础名)。
与 flow 香蕉生图的区别
两种 gemini 香蕉生图的核心差异就在生图模型名称上:
- Adobe(本页):模型名只有基础名
gemini-3.1-flash-image/gemini-3-pro-image,不带比例和清晰度后缀;比例、清晰度通过请求体的generationConfig.imageConfig(aspectRatio/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.imageSize | 否 | 512 / 1K / 2K / 4K(大小写不敏感);默认 2K。 |
generationConfig.responseModalities | 否 | 解析但忽略——本网关永远只回一张图。传 ["IMAGE"] 或不传都行。 |
支持的 aspectRatio:1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9。
实际输出像素由后端按「比例 + 分辨率档」决定,不等于 imageSize 的字面正方形。例如 2:3 / 2K 实测回 1696×2528,16:9 / 1K 回 1376×768。把 imageSize 理解成“清晰度档位”,把 aspectRatio 理解成“形状”,二者独立。
暂不支持(传了会被忽略,不报错):tools(含 googleSearch 接地)、responseModalities 里的 TEXT、temperature 等文本采样参数。
六、文生图请求示例
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/png、image/jpeg、image/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" } }| HTTP | status | 触发 |
|---|---|---|
| 400 | INVALID_ARGUMENT | 未知模型 / JSON 不合法 / 无 prompt / 参考图超限 / 内容被安全审核拒绝。 |
| 429 | RESOURCE_EXHAUSTED | 入口队列满、排队超时,或上游限流重试后仍失败。 |
| 504 | DEADLINE_EXCEEDED | 单次生成超时。 |
| 500 | INTERNAL | 其它上游 / 内部错误。 |
429 / 504 通常是瞬时的(Adobe 全局限流),客户端退避重试即可,换个时间点一般就过。
十一、限制速查
| 项 | 值 |
|---|---|
| 参考图数量 | ≤ 6 |
| 单张参考图大小 | ≤ 20 MB(base64 解码后) |
imageSize | 512 / 1K / 2K / 4K(默认 2K) |
aspectRatio | 见第五节(默认 1:1) |
| 默认模型 | gemini-3.1-flash-image |
| 并发 / 限流 | 全局共享上游,瞬时 429/504 退避重试即可。 |