Nano Banana 2 是社区给谷歌 Gemini 3.1 Flash Image 起的名字。它在 Router One 目录里的模型 ID 是 gemini-3.1-flash-image-preview,归在 image 类别,旁边就是同系列的 Nano Banana Pro(gemini-3-pro-image-preview)。调用方式和网关上其他生图模型一样:同一个 OpenAI 兼容 Images API、同一把 Key、同一个钱包,每次请求都有成本 trace,国内免翻墙直连。
这篇只讲实操:文生图的完整请求、带参考图改图的完整请求、这个模型收什么参数不收什么参数、怎么计费,以及 Nano Banana 2 和 Nano Banana Pro 到底怎么选。
名字、模型 ID 和单价
目录里有两个谷歌生图模型,外号很容易搞混:
| 社区常用名 | Router One 模型 ID | 单价(2026 年 8 月) |
|---|---|---|
| Nano Banana 2 | gemini-3.1-flash-image-preview | $0.50 每张 |
| Nano Banana Pro | gemini-3-pro-image-preview | $0.50 每张 |
两者都按张计价:一张图一个固定美元单价,输出不算 token。写这篇时两者在 Router One 上同价——实时价格以模型页为准——所以选哪个看出图效果,不看预算,下面细说。
准备工作
在 Router One 控制台创建 API Key,给钱包充值。大陆直连不用 VPN,托管收银台支持支付宝——见支付宝充值说明。然后把客户端指向网关:
export ROUTER_ONE_KEY=sk-your-router-one-key
export OPENAI_BASE_URL=https://api.router.one/v1
如果这把 Key 已经在调聊天模型,什么都不用改——生图端点用的是同一把 Key。
文生图:POST /v1/images/generations
请求就是 OpenAI Images API 的格式:JSON body 里给 model 和 prompt。想一次出多张候选图,加 n。
curl -X POST https://api.router.one/v1/images/generations \
-H "Authorization: Bearer $ROUTER_ONE_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gemini-3.1-flash-image-preview",
"prompt": "等距视角的夜市插画,暖色灯笼光,画面里不要文字",
"n": 2}'
针对这个模型有两点要知道:
- **
size、quality、response_format对它不生效。**传了也会被忽略,出图完全由 prompt 决定。构图、比例、景别这些要求直接写进 prompt。 - **响应里的图可能是
data[].b64_json,也可能是data[].url。**多数情况是内联 base64,但也可能拿到一个 URL。两种分支都要处理,拿到就立刻落盘,别假定只有一种形态。
用官方 OpenAI Python SDK:
import base64, httpx
from openai import OpenAI
client = OpenAI(base_url="https://api.router.one/v1", api_key="sk-your-router-one-key")
result = client.images.generate(
model="gemini-3.1-flash-image-preview",
prompt="等距视角的夜市插画,暖色灯笼光,画面里不要文字",
n=2,
)
for i, item in enumerate(result.data):
png = base64.b64decode(item.b64_json) if item.b64_json else httpx.get(item.url).content
with open(f"night-market-{i}.png", "wb") as f:
f.write(png)
返回几张图就按几张计费——n: 2 就是两张、两个单位。完整字段见 Images API 文档。
带参考图改图:POST /v1/images/edits
Nano Banana 2 在目录里支持图像输入,所以可以给它一张图、描述你要的改动。这走的是 edits 端点,格式是 multipart/form-data 而不是 JSON:参考图放 image 字段,改图指令放 prompt。
curl -X POST https://api.router.one/v1/images/edits \
-H "Authorization: Bearer $ROUTER_ONE_KEY" \
-F model=gemini-3.1-flash-image-preview \
-F image=@teapot.png \
-F prompt="把这个茶壶放到大理石台面上,柔和晨光,标签文字保持可读"
多张参考图就重复 -F image=@...——比如一张产品图加一张风格参考。SDK 写法是 client.images.edit(model=..., image=open("teapot.png", "rb"), prompt=...),响应和 generations 一样是 data[],上面那段两种分支都存的代码可以直接复用。每个参考文件上限 25 MB。
常见用法:产品图换风格、换背景、草图渲染成成品场景、用一张主图出一整套风格一致的素材。
Nano Banana 2 还是 Nano Banana Pro?
两个模型在 Router One 上每张同价、请求格式相同,所以最实在的答案是:拿你自己的 prompt 两边都跑一遍。在网关上这就是改一行——同一把 Key、同一个端点、换 model 字符串——每次请求都进 Dashboard → Logs,带模型、单价、延迟、状态,对比是一个筛选条件,不是一张表。
从这种 A/B 里得出的实操建议:
- 走量的活先用 Nano Banana 2——缩略图、多版本变体、反复调 prompt 直到构图对。
- 把筛出来的 prompt 再丢给 Nano Banana Pro,留下评审更喜欢的那版。如果 Pro 的结果在你的场景里没有肉眼可见的提升,就没有成本上的理由用它。
- 参考图改图两边流程一样,都支持 edits。
让账单可预期
生图流水线是用量最容易失控的地方,n 会悄悄放大。网关的标准管控照常生效:
- **Per-key 预算。**给生图流水线单独发一把带上限的 Key,失控的批量任务在上限处停下,不会掏空钱包。
- **每请求 trace。**每次生成的单价和聊天流量记在同一份日志里,财务能看清一次活动的素材到底花了多少。
- **固定单价。**成本预测就是张数 × 单价,不用估 token。
常见问题
Nano Banana 2 就是 gemini-3.1-flash-image-preview 吗?
是。Nano Banana 2 是社区常用名,gemini-3.1-flash-image-preview 是请求里要填的模型 ID。Nano Banana Pro 是同一系列的 Pro 档,模型 ID 是 gemini-3-pro-image-preview。
Nano Banana 2 在 Router One 上比 Nano Banana Pro 便宜吗? 不。2026 年 8 月两者在 Router One 上都是 $0.50 每张。实时价格看目录;按你 prompt 的出图效果选,不按价格选。
能指定尺寸或画质吗?
这个模型不行。size、quality、response_format 会被接受但不生效——想要的构图和比例写进 prompt。
怎么用自己的图当起点?
走 POST /v1/images/edits,multipart/form-data:参考图放 image 字段,指令放 prompt。generations 是 JSON,只收文字。
响应给的是 URL 还是 base64?
都有可能。同一个循环里同时处理 data[].b64_json 和 data[].url,拿到字节就存。
国内能直接用吗? 能。端点大陆可直连不用 VPN,钱包可以在同一个托管收银台用支付宝或银行卡充值,也支持 USDT/USDC(6 条链)。
结论
对已经在网关上的人,Nano Banana 2 就是改一行的事:model 填 gemini-3.1-flash-image-preview,发 prompt,b64_json 或 url 回来哪个存哪个。带参考图改图是一次 multipart 调用,按张计费,跑聊天模型的那把 Key 直接就能用。
端点全貌看生图 API 页,实时价格看模型页,到 router.one 创建 Key 发第一个请求。