Nano Banana Pro API 调用期间出现的临时图片并非 Bug,而是 Google 内置思考过程的一部分。Gemini 3 Pro Image 模型(gemini-3-pro-image-preview)在生成最终输出之前,最多会生成 2 张中间图片来测试构图和逻辑。这些思考图片不会被计费。然而,很多开发者会把这种正常行为和真正的 Bug 混淆——而 Nano Banana 确实存在一些需要修复的真实问题。本指南涵盖了所有内容:思考过程的原理解析、每种主要错误的解决方案、经过验证的定价数据,以及生产级的错误处理代码。
要点速览
Nano Banana 的"临时图片"是一个特性,而非 Bug——模型的思考过程在最终渲染之前会生成最多 2 张中间图片,而且你不需要为它们付费。如果你遇到的是真正的 Bug,最常见的有 429 RESOURCE_EXHAUSTED(约占所有错误的 70%)、IMAGE_SAFETY 误报、空白输出和图片尺寸不一致。本指南提供了每种问题的经过验证的修复方案,附带代码示例和截至 2026 年 2 月的官方定价数据。
快速诊断:是 Bug 还是正常行为?

在深入修复之前,你需要先识别实际遇到的是哪种问题。Nano Banana 生态系统中既有看起来像 Bug 的预期行为,也有需要处理的真正问题。正确诊断能避免你浪费时间使用错误的解决方案,而这恰恰是开发者遇到 Gemini 图片生成 API 意外行为时最常犯的错误之一。
如果你在最终结果出现之前看到额外的图片,你几乎可以确定看到的是思考过程在运作。这对于 Nano Banana Pro(gemini-3-pro-image-preview)来说是完全正常的行为,并不代表你的 API 调用、提示词或账户有任何问题。模型在设计上就会在推理管线中生成中间构图,并且在大多数 SDK 实现中,这些图片在最终结果交付之前就会被过滤掉。
如果你收到 HTTP 错误码,例如 429、400、403、500 或 502,你面对的是真正的 API 错误,每种都有特定的原因和解决方案。仅 429 RESOURCE_EXHAUSTED 错误就约占所有 Nano Banana API 错误的 70%(Google AI 开发者论坛,2026),如果你的集成出了故障,这很可能就是罪魁祸首。每种错误码都对应不同的根本原因,限流错误的修复方法与安全过滤器拦截的修复方法完全不同。
如果你的 API 调用成功完成但没有返回图片,或者生成的图片尺寸不正确,你面对的是另一类问题:静默失败和渲染 Bug。这些问题更难诊断,因为 API 并不总是返回清晰的错误信息,根本原因从提示词复杂度到 Google 端的临时基础设施限制都有可能。
本指南的其余部分按问题类型组织。可以直接跳转到与你的诊断匹配的章节,也可以通读全文以全面了解目前已知的每种 Nano Banana 问题。
为什么 Nano Banana API 调用中会出现临时图片

Nano Banana Pro API 调用期间出现的临时图片,是 Google 图片生成架构中被误解最多的方面之一。这些中间图片并非 Bug 或低效的表现,而是一个有意为之的设计选择,能够显著提升复杂提示词的输出质量。理解这个系统的工作原理将帮助你构建更好的集成方案,并避免将正常行为错误地报告为 Bug。
思考过程架构
Nano Banana Pro(gemini-3-pro-image-preview)使用 Google 所称的"思考模型"方式来生成图片。与一次性渲染提示词的简单模型不同,Gemini 3 Pro Image 模型采用多步推理策略。根据 Google 官方文档(2026 年 2 月验证),模型在生成最终渲染图片之前,最多会生成 2 张中间图片来测试构图和逻辑。思考过程中的最后一张图片同时也是最终输出,这意味着模型在每一步中都在优化其方法,而非推倒重来。
这种思考模式默认启用,且无法通过 API 禁用。Google 如此设计是因为多步推理带来的质量提升非常显著,尤其是对于涉及复杂多元素构图、精确文字渲染或细致空间关系的提示词。像"白色背景上的一个红苹果"这样的简单提示词可能只需要一步推理,而像"复古书店内部,三个人在阅读,温暖的午后阳光透过彩色玻璃窗照射进来,柜台上一只猫在睡觉"这样的复杂构图通常会使用完整的 2 步思考过程。
如何在代码中处理临时图片
关键的技术细节是:临时图片在 API 响应中会标记 thought: true 标志,而最终图片则包含一个 thought_signature 字段,在多轮对话中必须保留该字段。以下是用 Python 正确过滤临时图片、仅提取最终结果的方法:
pythonfrom google import genai client = genai.Client() response = client.models.generate_content( model="gemini-3-pro-image-preview", contents="A professional product photo of wireless headphones on marble" ) final_images = [] for part in response.candidates[0].content.parts: if hasattr(part, 'thought') and part.thought: continue # Skip temporary thinking images if hasattr(part, 'inline_data') and part.inline_data: final_images.append(part.inline_data)
thought_signature 字段
很多开发者忽略的一个关键细节是:API 响应在非思考部分上包含 thought_signature 字段。如果你正在构建多轮图片编辑对话,必须在后续请求中将这些签名传回。未能将思考签名循环传回模型可能导致错误或后续轮次的输出质量下降。官方文档明确指出"不循环传递思考签名可能导致响应失败",因此这是一个强制性的实现细节,而非可选的优化。
性能影响与计费
思考过程会为每次生成增加大约 5 到 15 秒的延迟,具体取决于提示词的复杂度(Google AI for Developers 文档,2026)。简单提示词延迟较短,复杂的多元素提示词延迟较长。关键的计费细节:临时思考图片不会被收费。你只需为最终渲染的图片付费。按照当前定价(2026 年 2 月从 ai.google.dev/pricing 验证),Nano Banana Pro 的 1K/2K 分辨率图片每张 $0.134,4K 分辨率图片每张 $0.24。中间的思考图片不计入这些费用,所以你看到的临时图片不会导致账单膨胀。
修复 IMAGE_SAFETY 和内容过滤器错误
IMAGE_SAFETY 错误是 Nano Banana 最令人沮丧的问题之一,因为它会拦截完全合法的图片生成请求。Google 已公开承认他们的安全过滤器"变得比我们预期的要谨慎得多"(Google AI 开发者论坛,2025),导致对产品摄影、教育插图等无害内容产生误报,甚至连"一个人在睡觉"或"一只狗在公园玩耍"这样的简单请求也会被拦截。
为什么会产生误报
安全过滤器在生成管线的多个层级运作。它会同时评估你的输入提示词和生成的输出,并且可以在任一阶段触发。这意味着通过了输入过滤器的提示词,如果模型生成的图片触发了输出过滤器,仍然可能产生 IMAGE_SAFETY 错误。过滤器使用宽泛的模式匹配,有时会标记无害内容,因为某些视觉元素或组合看起来类似于过滤器被训练要拦截的类别。Google 在 2026 年 1 月发布了一项策略更新,调整了 IMAGE_SAFETY 过滤和知名 IP 限制,但误报仍然时有发生。
行之有效的解决方案
解决 IMAGE_SAFETY 误报最有效的方法是重新构造提示词。与其用原始措辞与过滤器对抗,不如重新组织提示词以提供更清晰的上下文,帮助安全系统理解合法意图。添加"professional"(专业)、"editorial"(编辑级)、"educational"(教育性)或"studio photography"(影棚摄影)等上下文词汇可以向过滤器传达内容是合适的信号。例如,不要用"a woman in a dress"(穿裙子的女人),而是尝试"a professional fashion editorial photo of a model wearing a formal evening dress, studio lighting, fashion magazine style"(专业时尚编辑照片,模特身着正式晚礼服,影棚灯光,时尚杂志风格)。额外的上下文为安全系统提供了更多参考信号,显著降低了误报率。
如果重新构造提示词无法解决问题,可以尝试将多元素构图拆分为更简单的请求来降低提示词复杂度。安全过滤器更容易标记复杂提示词,因为多个元素的交互会给模式匹配系统带来更多歧义。你也可以尝试先以较低分辨率生成(1K 而非 4K),因为过滤器行为可能因分辨率设置而异。
对于特定内容类别的持续问题,可以考虑使用 Nano Banana 模型(gemini-2.5-flash-image)代替 Nano Banana Pro。Flash Image 模型使用不同的安全过滤器配置,有时可以处理 Pro 模型拦截的提示词,尽管输出质量较低。如果你的应用需要持续稳定地访问 AI 图片生成服务而不被安全过滤器中断,laozhang.ai 等 API 代理服务提供替代路由,可以更稳定地访问这些模型。
解决 429 RESOURCE_EXHAUSTED 和限流错误
429 RESOURCE_EXHAUSTED 错误是迄今为止最常见的 Nano Banana API 错误,约占开发者遇到的所有问题的 70%。当你的 API 请求超过账户层级设定的速率限制时,就会出现这个错误,理解层级系统对于有效管理限流至关重要。
Nano Banana 的限流机制
Nano Banana 的速率限制从三个维度衡量:每分钟请求数(RPM)、每分钟令牌数(TPM)和每日请求数(RPD)。超过任何一个限制都会触发 429 错误,即使其他两个维度都在范围内也是如此。速率限制是按项目(而非按 API 密钥)应用的,每日配额在太平洋时间午夜重置。针对图片生成模型,Google 还会追踪每分钟图片数(IPM),其功能类似于 TPM 但专门针对 Nano Banana 的输出。
各层级的速率限制差异很大。Google 的层级系统(2026 年 2 月从 ai.google.dev/gemini-api/docs/rate-limits 验证)有四个级别:免费层(在符合条件的地区可用)、Tier 1(需要项目关联付费账户)、Tier 2(需要累计消费 $250 以上且首次付款后满 30 天)和 Tier 3(需要累计消费 $1,000 以上且满 30 天)。每次升级都会大幅提高速率限制,像 Nano Banana Pro 这样的预览模型比稳定版模型有更严格的限制。
关于各层级 Gemini API 速率限制的详细分解,包括每个模型的具体 RPM 和 RPD 数值,请参阅我们的 Gemini API 速率限制完整参考。如果你专门在处理 Nano Banana 的 RESOURCE_EXHAUSTED 错误,我们的 Nano Banana RESOURCE_EXHAUSTED 错误修复详细指南 提供了逐步解决流程。
实现指数退避
在生产环境中处理 429 错误的正确方式是带随机抖动的指数退避。以下是一个经过实战检验的 Python 实现,能够处理最常见的故障模式:
pythonimport time import random def generate_with_retry(client, prompt, max_retries=5): base_delay = 2 for attempt in range(max_retries): try: response = client.models.generate_content( model="gemini-3-pro-image-preview", contents=prompt ) return response except Exception as e: if "429" in str(e) or "RESOURCE_EXHAUSTED" in str(e): delay = base_delay * (2 ** attempt) + random.uniform(0, 1) print(f"Rate limited. Retrying in {delay:.1f}s (attempt {attempt + 1})") time.sleep(delay) else: raise # Re-raise non-rate-limit errors raise Exception("Max retries exceeded for rate limit errors")
抖动组件(随机添加的部分)很重要,因为它可以防止"惊群效应"——即多个同时被限流的客户端在完全相同的时刻重试,导致新一轮限流。429 错误的典型恢复时间为 1 到 5 分钟,因此使用 5 次重试和指数退避,这个实现能覆盖大多数短暂的限流情况。
修复生成失败、空白输出和尺寸 Bug

除了限流和安全过滤器之外,Nano Banana 还有几种其他故障模式,会产生不同的症状。这些问题通常更难诊断,因为 API 可能返回成功响应但不包含任何图片数据,或者返回尺寸不正确的图片。理解每种故障类型有助于你在集成中构建适当的处理机制。
空白输出和静默失败
当 Nano Banana 返回成功的 HTTP 响应但响应中不包含图片数据时,你遇到的是静默失败。这通常由三种原因之一导致。第一,提示词可能过于复杂,超出了模型的处理能力,特别是当提示词包含很多相互冲突的具体元素时。第二,模型内部的安全检查可能在初始提示词检查通过后标记了生成的输出,导致 API 调用成功但输出被抑制。第三,Google 的临时基础设施容量问题可能导致生成静默失败,尤其是 4K 分辨率请求会消耗显著更多的计算资源。
空白输出的诊断方法从简化提示词开始。去掉具体细节,用最小化版本的请求尝试生成。如果简化后的提示词可以工作,逐步添加复杂度,直到找出触发失败的元素。对于所有提示词都持续返回空白输出的情况,请查看 Google AI 开发者论坛和 Gemini 服务状态页面是否有任何报告的故障。2026 年 1 月曾发生一起事件,专门影响了 4K 分辨率的生成,原因是 TPU v7 的容量限制加上 Gemini 3.0 训练会话占用了推理资源。
图片尺寸和维度 Bug
Adobe 社区论坛上多位用户报告了一个持续存在的 Bug,涉及 Nano Banana 生成尺寸不正确的图片。当用户请求修改现有图片(例如更改发色或调整灯光)时,输出图片的尺寸经常与输入不同。图片可能相对于原始版本出现轻微拉伸、压缩、放大或空间位移。这个 Bug 影响了使用 Nano Banana 作为后端的应用程序(如 Photoshop Beta)中的生成式填充和生成工具。
目前,Google 方面还没有针对尺寸 Bug 的确定性修复。最有效的变通方案是在提示词和 API 参数中明确指定输出尺寸。直接使用 API 时,始终包含 image_size 参数并设置明确的分辨率值(1K、2K 或 4K)。对于工具端使用(Photoshop、Figma),尝试使用支持列表中的标准宽高比:1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9 或 21:9。非标准尺寸会增加触发尺寸 Bug 的可能性。
500/502 服务器错误
Nano Banana API 返回的服务器错误表明问题出在 Google 的基础设施端,而非你的请求有问题。这些错误通常在 5 到 15 分钟内自行恢复,无需你采取任何操作。如果服务器错误持续超过 15 分钟,请查看 Gemini API 状态页面,并考虑切换到 Nano Banana Flash 模型(gemini-2.5-flash-image)作为临时降级方案,因为不同的模型运行在不同的基础设施上,可能不受同一故障的影响。对于不能容忍停机的应用程序,如果你正在将 Nano Banana Pro 与 Flux 2 等替代方案进行对比,配置降级模型是推荐的生产实践。
Nano Banana 定价详解:临时图片会被计费吗?
开发者遇到临时图片时最常问的问题之一就是是否需要为这些中间输出付费。从 2026 年 2 月直接在 Google AI for Developers 定价页面验证的明确答案是:不会。临时思考图片不计费,你只需为最终渲染的图片付费。
官方定价明细
以下是两款 Nano Banana 模型的完整定价结构,于 2026 年 2 月 9 日从 ai.google.dev/pricing 验证:
| 模型 | 输入成本 | 输出成本(文本+思考) | 输出成本(图片) | 单张图片(1K/2K) | 单张图片(4K) |
|---|---|---|---|---|---|
| Nano Banana Pro (gemini-3-pro-image-preview) | $2.00/M tokens | $12.00/M tokens | $120.00/M tokens | $0.134 | $0.24 |
| Nano Banana (gemini-2.5-flash-image) | $0.30/M tokens | — | $30.00/M tokens | $0.039 | N/A(最高 1K) |
图片输出定价按令牌计费。对于 Nano Banana Pro,一张 1K 或 2K 图片消耗 1,120 个令牌,按 $120/M 的费率计算,每张图片等于 $0.134。一张 4K 图片消耗 2,000 个令牌,等于每张 $0.24。对于 Nano Banana Flash,最大分辨率为 1K(1024x1024),消耗 1,290 个令牌,按 $30/M 的费率计算,每张图片等于 $0.039。图片输入的定价为每张图片 560 个令牌(Pro 模型大约每张输入图片 $0.0011)。
两款模型目前都不提供图片生成的免费层。 都需要付费账户。不过,与这些模型的纯文本交互可能仍然适用其母模型(分别为 Gemini 3 Pro 和 Gemini 2.5 Flash)的免费层定价。
成本优化策略
对于大批量图片生成工作负载,有几种策略可以显著降低成本。对于不需要 2K/4K 分辨率或复杂推理的任务,使用 Nano Banana Flash($0.039/张)代替 Pro($0.134/张),每张图片可节省约 71%。对于需要 Pro 级输出质量但希望降低成本的应用,laozhang.ai 等 API 代理服务以约 $0.05 每张的价格提供 Nano Banana Pro 访问(相比直接 API 定价节省约 63%),使大批量生产使用更具经济性。
关于更详细的定价对比(包括速度基准测试),请参阅我们的 Gemini 3 Pro Image API 定价与速度基准测试 和 Gemini API 免费层指南。
构建稳健的 Nano Banana API 错误处理
依赖 Nano Banana 进行图片生成的生产应用需要全面的错误处理机制,以应对本指南中讨论的每种故障模式。以下模式基于真实的生产经验,为构建在问题出现时能够优雅降级的可靠集成提供了基础。
全面的错误处理器
以下是一个覆盖所有主要 Nano Banana 故障模式的生产级错误处理模式:
pythonimport time import random from enum import Enum class NanaBananaError(Enum): RATE_LIMIT = "429" SAFETY = "IMAGE_SAFETY" SERVER = "500" BAD_GATEWAY = "502" BLANK_OUTPUT = "BLANK" UNKNOWN = "UNKNOWN" def classify_error(error): error_str = str(error) if "429" in error_str or "RESOURCE_EXHAUSTED" in error_str: return NanaBananaError.RATE_LIMIT elif "IMAGE_SAFETY" in error_str or "safety" in error_str.lower(): return NanaBananaError.SAFETY elif "500" in error_str: return NanaBananaError.SERVER elif "502" in error_str: return NanaBananaError.BAD_GATEWAY return NanaBananaError.UNKNOWN def generate_image(client, prompt, model="gemini-3-pro-image-preview", max_retries=5, fallback_model="gemini-2.5-flash-image"): for attempt in range(max_retries): try: response = client.models.generate_content( model=model, contents=prompt ) # Check for blank output images = [p for p in response.candidates[0].content.parts if hasattr(p, 'inline_data') and p.inline_data and not getattr(p, 'thought', False)] if not images: if attempt < max_retries - 1: time.sleep(2) continue raise Exception("Blank output after all retries") return images except Exception as e: error_type = classify_error(e) if error_type == NanaBananaError.RATE_LIMIT: delay = 2 * (2 ** attempt) + random.uniform(0, 1) time.sleep(delay) elif error_type == NanaBananaError.SAFETY: raise # Cannot retry safety errors with same prompt elif error_type in (NanaBananaError.SERVER, NanaBananaError.BAD_GATEWAY): if attempt == max_retries - 2: model = fallback_model # Switch to fallback on last retry time.sleep(5 * (attempt + 1)) else: raise raise Exception(f"Failed after {max_retries} attempts")
这个实现覆盖了完整的错误谱系:限流错误使用指数退避,安全错误立即失败(因为用相同的提示词重试会产生相同的结果),服务器错误使用渐进延迟并自动降级到 Flash 模型,以及空白输出检测与重试逻辑。在倒数第二次重试时切换降级模型,提供了一条最后的备用路径,即使 Pro 正在经历基础设施问题,也能让你的应用继续生成图片。
监控与告警建议
对于生产部署,应追踪以下指标:按类型分类的错误率(429 vs SAFETY vs 500)、平均生成延迟(包含思考时间)、空白输出频率,以及每次成功生成的成本。当 429 错误率超过总请求的 10%(表明你正在接近层级限制)或服务器错误率超过 5%(表明 Google 端可能存在故障)时设置告警。Google 建议在 AI Studio 使用面板 中查看你的有效速率限制,该面板显示实时配额消耗和剩余容量。
常见问题解答
为什么 Nano Banana 在显示最终结果之前会生成 2 张额外的图片?
这些是 Gemini 3 Pro Image 模型思考过程生成的"思考图片"。模型使用多步推理来测试构图并优化质量,然后才生成最终输出。这是预期行为,不是 Bug,并且临时图片不会被计费。
临时/思考图片会在账单中收费吗?
不会。根据 Google AI 官方定价页面(2026 年 2 月验证),只有最终渲染的图片会被计费。推理过程中生成的思考图片不收费。Nano Banana Pro 的价格为 1K/2K 图片每张 $0.134,4K 图片每张 $0.24。
我可以禁用思考过程来获得更快的结果吗?
不可以。思考模式默认启用且无法通过 API 禁用。Google 如此设计是因为质量提升足以证明 5-15 秒延迟增加的合理性。如果你需要不带思考过程的更快生成,请使用 Nano Banana Flash 模型(gemini-2.5-flash-image),它不使用相同的多步推理。
什么原因导致完全安全的提示词触发 IMAGE_SAFETY 错误?
Google 的安全过滤器使用宽泛的模式匹配,可能产生误报。Google 已承认过滤器"变得比预期更加谨慎"。尝试用专业上下文词汇重新构造提示词、降低复杂度或使用较低分辨率。
为什么生成的图片尺寸与输入不同?
这是一个已知的尺寸 Bug,影响了 Photoshop Beta 和 Figma 等应用中的 Nano Banana。变通方案是在 API 调用中使用支持的宽高比(1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9)和分辨率参数(1K、2K、4K)明确指定尺寸。
