# Nano Banana 2 思考级别怎么选：Minimal、High 与 API 设置

> Nano Banana 2 默认使用 Minimal，当前 API 支持 Minimal 和 High 两档。本文区分 Interactions、generateContent 与 ComfyUI 的设置，说明怎样确认成图，并比较可用结果、等待时间与推理费用。

- Source: https://www.aifreeapi.com/zh/posts/nano-banana-2-thinking-level
- Language: zh
- Published: 2026-09-08
- Updated: 2026-09-12
- Publisher: AI Free API (https://www.aifreeapi.com)

Nano Banana 2 的当前稳定模型 ID 是 **`gemini-3.1-flash-image`**。它的思考级别只有 **`minimal` 和 `high` 两档，默认是 `minimal`**。如果你只是想让请求正常出图，可以先保留默认值；如果画面有多个人物关系、文字排版或复杂布局，再用同一任务比较 High 是否减少返工。

需要分清的是：**Minimal 不等于完全关闭思考，High 也不等于每张图必然更好。** Google 的模型文档确认了档位与设置方式，但不能据此推算你这次请求要多等几秒、会多花多少费用，或能提高多少成功率。以下参数与价格按 2026 年 9 月 8 日的官方文档核对；文中的比较方法是操作建议，没有附带 API 实测成绩。[模型说明](https://ai.google.dev/gemini-api/docs/models/gemini-3.1-flash-image)、[思考级别说明](https://ai.google.dev/gemini-api/docs/image-generation#controlling_thinking_levels)

## 先确认你调的是哪个模型、哪一种接口

“思考模式”“思考级别”和“Thinking”可能出现在不同界面里。真正要落到代码时，先确认模型 ID，再看请求发往哪个接口。把其他 Gemini 文本模型的参数直接复制过来，或者只看界面上有没有 Thinking 按钮，都不足以确定 Nano Banana 2 的实际设置。

| 使用入口 | 设置位置 | 使用时要分清什么 |
| --- | --- | --- |
| Gemini Interactions API | `generation_config.thinking_level` | 当前图片指南给出的写法，支持 `minimal`、`high` |
| Gemini `generateContent` REST | `generationConfig.thinkingConfig.thinkingLevel` | 字段层级与 Interactions 不同，返回结构也不同 |
| Python SDK 的 `generate_content` | `config.thinking_config.thinking_level` | 属于 `generateContent` 的配置，不能放进 Interactions 的请求体 |
| ComfyUI 的 Nano Banana 2 合作伙伴节点 | 节点中的思考级别选项 | 根据该节点提供的选项操作；界面名称不代表所有 API 都有同名枚举 |
| Gemini 消费者应用或第三方生图平台 | 由产品界面决定 | 不能仅凭模式名称判断它对应哪个 API 档位 |

Google 发布介绍和 ComfyUI 文档中可以看到 **High/Dynamic** 的表述；当前模型专属 API 指南列出的可选值仍是 `minimal` 与 `high`。因此，写请求时不要自行增加 `dynamic`，也不要借用其他模型的 `low`、`medium`、`off` 或 `thinkingBudget=0` 来当作 Nano Banana 2 的选档方式。[Google 发布说明](https://blog.google/innovation-and-ai/technology/developers-tools/build-with-nano-banana-2/)、[generateContent 图片指南](https://ai.google.dev/gemini-api/docs/generate-content/image-generation#controlling_thinking_levels)

## Minimal 和 High 应该怎样选

最实用的起点是看**画面中需要同时满足多少关系和约束**，而不是单看提示词长短。

| 你的当前任务 | 建议起点 | 下一步看什么 |
| --- | --- | --- |
| 尝试产品背景、配色或构图方向 | Minimal | 能否快速拿到值得继续修改的方案 |
| 修改一个清楚、局部的元素 | Minimal | 修改是否到位，其他部分是否保持可用 |
| 多主体有明确位置、动作或对应关系 | 比较 Minimal 与 High | 是否减少对象遗漏、关系混乱和重复修改 |
| 同时包含文字、分区和复杂布局要求 | 比较 Minimal 与 High | 文字与布局是否达到你的交付条件 |
| 批量生成某类固定素材 | 先建立 Minimal 基线 | High 能否降低每张可用素材的综合成本 |

这张表是选档建议，不是质量排名。ComfyUI 官方文档也把 Minimal 用于探索、High/Dynamic 用于复杂布局；是否适合你的素材仍要看实际结果。[ComfyUI 中文文档](https://docs.comfy.org/zh/tutorials/partner-nodes/google/nano-banana-2)

例如，你要做一张包含“三种包装、各自标签、统一光线”的商品说明图。如果 Minimal 反复把标签放错位置，High 值得加入对照。若问题只是“背景还不够蓝”，先把颜色要求写清楚往往更方便判断。不要同时换提示词、尺寸和档位，否则很难知道结果变化来自哪里。

## 用 Interactions API 设置 High，并取出最终图片

当前官方图片指南使用 Interactions API。下面把响应先保存到文件，便于检查是否真的返回图片。运行前需要已有的 Gemini API Key，并将其保存在环境变量 `GEMINI_API_KEY` 中。执行请求会产生相应 API 用量。

```bash
curl --fail-with-body \
  'https://generativelanguage.googleapis.com/v1beta/interactions' \
  -H "x-goog-api-key: ${GEMINI_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.1-flash-image",
    "input": "生成一张商品说明图：白色桌面上并排放置三个不同颜色的茶叶罐，每个罐子下方保留独立的标签区域，整体采用柔和的自然光。",
    "generation_config": {
      "thinking_level": "high"
    }
  }' \
  -o response.json
```

换成 `"thinking_level": "minimal"` 就能用同一请求测试另一档。这里没有额外设置分辨率，模型默认输出为 1K；正式对照时，应明确固定自己实际使用的分辨率、画幅和参考图。[官方 Interactions 示例](https://ai.google.dev/gemini-api/docs/image-generation#controlling_thinking_levels)

官方 SDK 示例通过 `interaction.output_image.data` 取得最后一张图片，但 `output_image` 是 SDK 提供的便利属性。直接读取 REST JSON 时，应遍历 `steps` 中 `model_output` 的 `content`，取出 `type` 为 `image` 的内容块，再按 MIME 类型保存。不要把思考步骤中的中间图片当成最终结果。[官方返回结构](https://ai.google.dev/api/interactions-api)、[图片输出遍历示例](https://ai.google.dev/gemini-api/docs/image-generation#interleaved_text_and_image_generation)

```python
import base64
import json
from pathlib import Path

response = json.loads(Path("response.json").read_text(encoding="utf-8"))
if response.get("status") != "completed":
    raise SystemExit("请求未完成，请查看 response.json 中的状态或错误。")
images = [
    block
    for step in response.get("steps", [])
    if step.get("type") == "model_output"
    for block in step.get("content", [])
    if block.get("type") == "image"
]
if not images:
    raise SystemExit("未找到最终图片，请查看 response.json 中的返回内容。")
image = images[-1]

extensions = {
    "image/png": ".png",
    "image/jpeg": ".jpg",
    "image/webp": ".webp",
}
mime_type = image.get("mime_type")
data = image.get("data")
if mime_type not in extensions or not isinstance(data, str) or not data:
    raise SystemExit("图片 MIME 类型或 Base64 数据不符合预期，请检查原始响应。")

try:
    image_bytes = base64.b64decode(data, validate=True)
except (ValueError, base64.binascii.Error) as exc:
    raise SystemExit("图片数据无法解码。") from exc
if not image_bytes:
    raise SystemExit("图片数据为空。")

output = Path("nano-banana-2" + extensions[mime_type])
output.write_bytes(image_bytes)
print(f"已保存 {output}，请打开图片确认能否使用。")
```

HTTP 请求成功只是第一步。还要确认响应中有最终图片、Base64 能解码、文件能够打开，并检查画面是否完成了你的任务。如果没有图片，先读返回内容和错误信息；单纯把 Minimal 改成 High 不是通用的报错修复办法。

![Interactions 与 generateContent 的参数位置和图片返回流程示意](https://www.aifreeapi.com/posts/zh/nano-banana-2-thinking-level/img/api-image-flow.webp)

## 已经在用 generateContent，应该改哪里

现有项目不一定需要为了选档立即更换接口。如果调用的是 `generateContent`，应修改它自己的 `thinkingConfig`。下面是该接口的 REST 请求体片段，**不能放进上面的 Interactions 请求**：

```json
{
  "generationConfig": {
    "thinkingConfig": {
      "thinkingLevel": "high"
    },
    "responseModalities": ["IMAGE"]
  }
}
```

在 Python SDK 中，对应配置是 `types.GenerateContentConfig` 内的 `thinking_config=types.ThinkingConfig(thinking_level="High")`；JavaScript 则使用 `config.thinkingConfig.thinkingLevel`。具体调用仍保留原本的模型和内容参数。[generateContent 的官方配置示例](https://ai.google.dev/gemini-api/docs/generate-content/image-generation#controlling_thinking_levels)

返回图片时也别混用解析器：`generateContent` 从返回的候选内容及 parts 中处理图片，官方示例会跳过标记为 `thought` 的部分，再保存最终图片；Interactions 的 SDK 示例使用 `output_image` 便利属性，原始 REST 响应则需要遍历 `steps`。因此，从旧代码迁移时不能只改 URL 和字段名，仍用原来的图片提取逻辑。

另一个常见误解是把 `includeThoughts` 当作思考开关。它控制的是是否返回思考内容，并不代表关闭思考，也不能决定是否收取相关 token 费用。没有看到思考摘要，不足以证明模型没有思考。[思考内容与签名说明](https://ai.google.dev/gemini-api/docs/generate-content/image-generation#thought_signatures)

## ComfyUI 里怎么操作，第三方平台又该怎么判断

在 ComfyUI 中，按官方教程使用 Nano Banana 2 合作伙伴节点或对应模板，先设置提示词、参考图、分辨率与画幅，再选择节点提供的思考级别。先用 Minimal 探索方案，需要复杂布局时再比较 High/Dynamic。界面以实际安装版本为准，节点里的显示名称不能直接作为 REST 请求值。[ComfyUI 操作说明](https://docs.comfy.org/zh/tutorials/partner-nodes/google/nano-banana-2)

如果你用的是第三方 API 或代理平台，应确认两件事：它是否提供 `gemini-3.1-flash-image`，以及文档是否明确说明支持并传递思考级别参数。有的平台使用自己的请求格式，照搬 Google 原生字段未必生效。请求被接受，也不自动证明参数传到了模型；这需要平台说明或可核验的调用记录支持。

同样，Gemini 应用里的模式按钮不能直接替代 API 配置说明。如果你的目标是稳定复用某一档位，应以能够明确提交该模型参数的入口为准。

## High 多花多少钱：不要把单张图像价格当总价

Google 标准 Gemini API 的 Nano Banana 2 价格包含不同部分。按当前价表，文本与图像输入为每百万 token **0.50 美元**，文本和思考输出为每百万 token **3 美元**，图像输出为每百万 token **60 美元**；价表列出的 **1K 图像输出约 0.067 美元**只是图像输出部分。[Google 官方价格表](https://ai.google.dev/gemini-api/docs/pricing#gemini-3.1-flash-image)

你可以这样理解一次请求的费用：

> 输入费用 + 文本与思考输出费用 + 图像输出费用 + 适用时的工具费用。

假设某次 High 请求比 Minimal **多用了 1,000 个计费思考 token**，仅这部分增量就是：

> 1,000 ÷ 1,000,000 × 3 美元 = 0.003 美元。

这是说明计价方法的算例，**不是 High 每次固定多收 0.003 美元**。实际思考用量、文本输出及重试次数可能不同；换用第三方服务时，还要看它自己的结算规则。需要比较更多分辨率和接入费用，可继续看 [Nano Banana 2 API 价格说明](/zh/posts/gemini-flash-image-generation-pricing)。

对于批量任务，单次价格还不够。更有意义的是“获得一张最终可用图片，共花了多少请求费用、等待时间和人工修改时间”。如果 High 单次更贵，但减少了重试，它仍可能更合算；如果两档结果都能直接使用，就没有必要仅因为名字叫 High 而默认升级。

![固定输入条件并比较 Minimal 与 High 的任务完成情况、等待时间和实际费用](https://www.aifreeapi.com/posts/zh/nano-banana-2-thinking-level/img/task-comparison.webp)

## 用一组固定任务决定是否长期开启 High

挑选你日常确实会交付的提示词，先写好验收条件。例如，上面的商品图可以要求：三个茶叶罐均出现、颜色能区分、每个标签区域与罐子一一对应、整体光线一致。验收条件应在看结果之前确定。

随后固定模型、提示词、参考图、分辨率、画幅和搜索设置，只改变思考级别。每档保留多次结果，避免把单次随机表现当成稳定结论。建议记录以下几项：

| 记录项 | 用途 |
| --- | --- |
| 最终图片能否正常打开 | 区分请求完成与实际交付成功 |
| 是否满足预先写好的画面条件 | 判断哪一档减少了关键缺陷 |
| 从发出请求到结果可用的时间 | 比较你的真实等待成本 |
| 返回用量与实际结算费用 | 比较包含思考在内的成本 |
| 重试次数与人工修改时间 | 判断哪一档更接近直接交付 |

如果 High 主要改善了你最难满足的条件，就把它留给这类任务；如果差异不稳定，继续使用 Minimal，优先整理提示词和参考图。你最终需要的是适合自己素材的默认设置，而不是一个脱离任务的“最高档”。
