用 Nano Banana API 做一致的图像生成
生成一张好图已经接近解决了。生成第二十张、而它仍然跟前十九张是一伙的——项目就死在这里。
这道差距不是 prompt 功力的问题。是「一致性」这三个字底下压着三个不同的工程问题,而修好其中一个的手法,对另外两个毫无作用。我们在自己的 API 上跑 Nano Banana 模型,而这是人们最常做错的一类请求——不是因为模型做不到,而是因为参考图是没贴标签送进去的,模型只能自己猜每一张是干什么用的。

三个问题,不是一个
在写 prompt 之前先把它们分开。它们的失败方式不同,花的钱也不同。
角色一致性。 同一个人贯穿许多帧——同样的脸、体型和头发,不管是在第四帧里坐着还是在第十九帧里走着,都能被认出是同一个个体。这是身份问题:模型得把一张脸带进它从没见过的构图里。
产品还原度。 不是一个相似的瓶子。是那个瓶子。瓶盖比例、标签位置、绿色的色号,分毫不差。还原度比身份更严苛——一张脸有容错空间,一个客户的包装没有。
风格一致性。 整组图读起来像同一组——同样的调色、同样的镜头味、同样的光质、同样的颗粒。不需要任何物体重复出现;重复的是处理方式。
大多数 brief 同时需要其中两项,却把它们当成一条指令来提。「做得一致一点」不是一个 API 能执行的请求。「图 1 是人,图 2 是瓶子,图 3 只管调色」才是。
角色分离才是真正的那个特性
Nano Banana Pro 最多接受 14 张参考图。Nano Banana 2 也一样,价格几乎只有一半。数量不是差别所在。Pro 把这份预算按角色拆开:
| 角色 | 预算 | 它承载什么 |
|---|---|---|
| 角色 | 最多 5 张 | 一个人或人物形象的身份参考 |
| 物体 | 最多 6 张 | 高还原度的产品、道具、包装 |
| 风格 | 最多 3 张 | 只管调色、光线氛围、处理方式 |
一共十四张,但是被分配好的。分配这件事,才把一张参考图从一个建议变成一条指令。
想想没有它会发生什么。您递给模型十四张图和一句话,它就得从那段文字里推断哪张图是需要保留的脸、哪张是需要精确复现的产品、哪张只是来定氛围的。它经常推断错。破绽是:一个产品出来的样子是「按您包装的风格」的,而不是就是您的包装;或者一张脸披上了情绪板的调色。
有了角色分离,您就不是在请求了,您是在声明。五个槽位管「谁」,六个管「什么」,三个管「看起来怎样」。一张广告合成图,一次 request,而不是三轮合成。
按我们 2026 年 8 月 26 日的价格,Pro 每次 request $0.075,对应 $0.15 的市面价。还有一件值得知道的事:在 Pro 上 1K 和 2K 同价。做主视觉素材,请拿 2K。那是免费的。

在 prompt 里给参考图贴标签
角色分离干的是结构上的活。prompt 干的是语义上的活,而它必须明确到几乎显得没礼貌的程度。参考图是按顺序到达的,所以请按位置点名,并说清楚每一张是干什么用的,包括它不是干什么用的。最后这一点,正是大多数 prompt 漏水的地方。
图 1 和图 2 是同一个女人——完全保留她的脸、发长和体型。
图 3 是产品:精确复现瓶身形状、瓶盖比例和标签图案,
不要重新设计它的风格。图 4 只管调色和光线氛围——不要从中
复制任何物体、姿势或构图。
把图 1-2 里的女人放进画面,手里拿着图 3 里的瓶子,
坐在窗边的咖啡馆桌前,四分之三侧面,
温暖的午后光线,与图 4 的调色一致。
有四件事让这条 prompt 成立,而没有一件是第五个形容词:
- 每一张参考图都有交代。没有哪张图是不带明确任务就进去的。
- 风格参考带着一条明确的排除。没有它,一块情绪板会把它的家具漏进您的场景里。
- 身份的用词是具体的——脸、发长、体型——不是「看起来像她」。
- 产品指令写了「不要重新设计风格」,正是这句话把还原和借鉴分开。
这里不讲 prompt 的通用写法;那是prompt 指南的事。这一节专讲怎么告诉模型您的参考图是干什么用的。
那次 request
一致性的活儿是编辑,不是生成,所以它走 edit-image slug,带上 image_urls。
curl -X POST https://api.e2x.ai/v1/jobs/submit \
-H "Authorization: Bearer $E2X_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/nano-banana-pro/edit-image",
"input": {
"prompt": "图 1 和图 2 是同一个女人 - 完全保留她的脸、发长和体型。图 3 是产品:精确复现瓶身形状、瓶盖比例和标签图案,不要重新设计它的风格。图 4 只管调色和光线氛围,不要从中复制任何物体或构图。把这个女人放进画面,手里拿着那个瓶子,坐在窗边的咖啡馆桌前,四分之三侧面,温暖的午后光线。",
"image_urls": [
"https://cdn.example.com/refs/model-face-front.jpg",
"https://cdn.example.com/refs/model-face-three-quarter.jpg",
"https://cdn.example.com/refs/bottle-front.jpg",
"https://cdn.example.com/refs/grade-warm-afternoon.jpg"
],
"aspect_ratio": "4:5",
"resolution": "2K"
}
}'
提交会返回一个 job ID;对它做 polling,或者传一个 webhookUrl。Pro 大约要 30 秒,因为它在构图时会生成一些中间的「思考图像」——Google 不返回它们,我们也不为它们计费。请显式设置 aspect_ratio,因为 Pro 默认 9:16。完整的参数走查在 Nano Banana Pro API 教程里。
更便宜的档位落在哪里
比起为一件不需要 Pro 的活儿把 Pro 卖给您,我们宁愿把您劝下一档。
Nano Banana 2 以 $0.04 接受同样的 14 张参考图,只是没有角色分离。对风格一致性来说这真的够用,因为那里每一张参考图干的都是同一件事,没有什么需要消歧。六张共享一套配色和一种光线氛围的博客页头不需要 Pro。它们需要的是一张好的风格参考和一份冻住的 prompt 模板。Nano Banana 2 还能到 4K,而 Lite 完全够不着。
Nano Banana 2 Lite 是 $0.0238,为量而造,不是为还原度。当您需要四百张共享同一种质感、而其中没有一张承载客户的脸或包装时,去找它。它只有 1K,没有 resolution 参数——发一个过去是错误,不是空操作。
legacy 的 Nano Banana 上限是 3 张参考图,不足以在同一帧里同时处理角色和产品,而且 Google 会在 2026 年 10 月 2 日让它退役——那个模型的完整故事是另一篇文章。别在它上面开一个一致性项目。
粗略的规则:只讲风格的活儿交给 Nano Banana 2 或 Lite。任何需要一张具体的人脸或一件具体的实物完好存活下来的活儿,交给 Pro。当一个客户因为标签不对而退回一整批的那一刻,$0.04 和 $0.075 之间的价差就不再要紧了。
价格与产品条款可能随时间变化;在做出采购决定前,请核对各家提供商的当前价格。Google 的 Batch 或 Flex 价格在调度、可用容量和处理条件上均有所不同,因此与标准的按需 API request 并不直接等价,已从本对比中排除。这是一次限定范围的对比,并非声称 E2X 在任何配置下都是全球最便宜的选择。
一次性搭好一套标准参考集
这里回本最快的那个习惯,跟 API 一点关系都没有。
把参考集搭一次,认真地搭,然后永远复用。不是「手边刚好有的那些照片」——是一套固定的、带版本的、存好的集合,每一次 request 都从它里面取。对一个角色:中性光下同一张脸的多个角度,正面、四分之三、侧面,再加一张全身照定体型。对一个产品:正面、背面、一张标签的细节裁切。对风格:一到两张承载着调色、并且没有别的东西干扰的图。
然后把它冻住。把这些 URL 存在某个长久的地方——您自己的 bucket,不是一条临时链接——并在这个项目的整个生命周期里,每一次 request 都传同一个数组。
这件事比调 prompt 更要紧,因为漂移是累积的。从第 4 帧生成第 5 帧、从第 5 帧生成第 6 帧,小误差会滚雪球,直到第 20 帧变成另一个人。把每一帧都锚定在同一套标准集上,意味着每次生成距离原始只漂了一步,而不是二十步。是一把扇子,不是一条链子。
有个相关的习惯:如果这套集合里包含您自己生成的图像,请把源文件留着。任何图像 API 的交付 URL 都会过期,所以请下载并保存您自己的素材——如何自动运行生成里有完整的循环。
先做一张主图,再从它派生变体
每一美元能产出最多可用输出的工作流,不是「生成二十张图」。是「把一张图生成二十遍」。
在 Pro 上做一张主图,并且把它做对——构图、光线、脸、产品。烧掉几次尝试;$0.075 的探索很便宜。
然后停止生成,开始编辑。把通过评审的那张主图连同您的标准集一起送回去,提出您想要的改动:换个角度、换个背景、换个裁切、模特改成看向别处而不是看镜头。每一个变体都锚定在某个已经过审的东西上,而不是锚定在一次新的掷骰上。
编辑胜过重生成,理由很容易被忽略。一次重生成会把一切重新决定一遍;您本来满意的每一个参数都重新回到了赌桌上。而一次编辑会保住您没提到的东西。既然已经花了一个下午把一张脸弄对,最不想要的就是把它重新决定二十遍。
两点实务提醒。加回主图时留意参考图的数量——主图加一套五张的角色集再加一个产品,已经是十四张里的七张了。以及,把过审主图的 prompt 存在图像旁边;一个变体通常就是那条 prompt 换掉两个从句,而凭记忆重写它,会把您刚刚花钱消掉的漂移又请回来。

任何参考集都修不好的那部分
Google 会把 SynthID 烙进它的模型产出的每一张图像里。它是不可见的,它随文件一起走,而它不是任何人暴露出来的设置,因为它根本就不是一个设置。这件事在这篇里比在大多数文章里更要紧:一致性项目就是客户项目,而客户的合同里可能有一条关于 AI 生成素材的条款。请在拍那套参考集之前把那条条款定下来,而不是在二十张过审的画面已经躺进一份提案之后。
一致性的活儿几乎总是编辑,所以 image-to-image 模型是该先浏览的那一架,而如果 brief 变了方向,目录里还有视频那一侧。
常见问题
我怎么在多张 AI 生成的图像里保持同一个角色?
搭一套标准参考集——中性光下同一张脸的多个角度,再加一张定体型的全身照——把它永久存好,并且给每一次 request 都传同样的图像。用 Nano Banana Pro 的角色槽位,它最多容纳 5 张身份图像,并在 prompt 里说清楚哪几张是这个人。请把每一帧都锚定在原始集合上,而不是锚定在上一帧上,否则误差会累积,到第二十帧就成了另一个人。
Nano Banana API 能接受多少张参考图?
Nano Banana Pro 接受 14 张,按角色分离:最多 5 张角色图、最多 6 张物体图、最多 3 张风格参考。Nano Banana 2 也接受 14 张,但没有角色分离。Nano Banana 2 Lite 是为量而不是为重参考图的活儿造的,而 legacy 的 Nano Banana 上限是 3 张。
角色一致性和产品还原度有什么区别?
角色一致性是指一个人在许多图像里保持可辨认——同样的脸、头发和体型,容得下微小的变化。产品还原度是指那个物体被精确复现:标签图案、瓶盖比例和颜色分毫不差,不做风格改造。Pro 用不同的参考槽位来处理它们,因为它们需要的严格程度不同,而 prompt 应该说清楚哪些图是哪一类。
做一致的图像该用 Nano Banana Pro 还是 Nano Banana 2?
当需求是风格上的——图像共享一套配色、光线和处理方式,没有具体的脸或产品需要保住——用 $0.04 的 Nano Banana 2。当某一张具体的脸或某一件具体的实物必须完好存活下来时,用 $0.075 的 Nano Banana Pro,因为正是按角色分离的参考图预算在告诉模型哪张是哪张。跟被退回的一整批比起来,这点价差很小。
我该怎么在 Nano Banana 的 prompt 里给参考图贴标签?
按您在 image_urls 里传入的顺序、以位置来指称它们,并说明每一张是干什么用的。「图 1 和图 2 是同一个女人,保留她的脸和体型;图 3 是产品,精确复现它;图 4 只管调色,不要从中复制任何物体或构图。」那些排除项和那些指令一样要紧,因为一张不加限定的风格参考,会把它的物体和构图漏进您的场景里。
编辑一张现有图像和重新生成一张,哪个更好?
一旦您有了一张认可的图像,就编辑。一次重生成会把每一个元素重新决定一遍,包括那些您本来满意的;一次编辑会保住您没提到的一切。高效的工作流是:一张精心做出来的主图,然后通过 edit-image endpoint、带上您的标准参考图,从它派生出各个变体。
为什么我生成的图像会偏离原来的角色?
几乎总是因为每一张新图都是从上一张生成的,而不是从一套固定的参考集生成的。那会让误差变成累积的——第 3 帧里稍微方一点的下颌,成了第 4 帧的基线,到第 20 帧就是另一个人了。请把每一次 request 都锚定在同一批存好的标准图像上,这样每一次输出都只距离原始一步,而不是二十步。