Extensions/ComfyUI-Nanobanana
ComfyUI Extension

ComfyUI-Nanobanana

Gemini native generateContent custom nodes for ComfyUI with Nano Banana, Nano Banana 2, and Nano Banana Pro, supporting both Google direct access and Gemini-compatible native relay endpoints.

By magicwang1111·Created 5 months ago·Updated about 8 hours ago· 0
magicwang1111/ComfyUI-Nanobanana
Nodes3
On cloudLocal install
CategoryComfyUI-Nanobanana
Stars0
Updatedabout 8 hours ago
Readme

ComfyUI-Nanobanana

通过 Vapeur 或 AIHubMix 的 Gemini 原生图像接口生成图片,支持参考图、并行请求与标准 ComfyUI IMAGE 输出。

节点

| 节点 | 内置模型 | | --- | --- | | Nano Banana | gemini-2.5-flash-image | | Nano Banana 2 | gemini-3.1-flash-image-preview | | Nano Banana Pro | gemini-3-pro-image-preview |

三个节点保留 prompt、seed、aspect_ratio、response_mode、system_prompt、parallel_requests 和可选参考图。2 / Pro 提供 resolution、thinking_level;2 另有 include_thoughts 和 thought_image 输出。

前端不显示 api_sourcemodel_override。服务商与模型别名统一由后端配置决定。

配置

安装 requirements.txt 中的依赖,将 config.example.json 复制为 config.local.json

{
  "api_source": "vapeur",
  "vapeur_api_key": "",
  "aihubmix_api_key": "",
  "request_timeout": 60,
  "vapeur_base_url": "https://api.vapeur.ai",
  "aihubmix_base_url": "https://aihubmix.com/gemini",
  "send_seed": true,
  "vapeur_model_overrides": {},
  "aihubmix_model_overrides": {}
}
  • api_source 只接受 vapeuraihubmix,缺省为 vapeur
  • 两条链路分别读取自己的密钥,优先 JSON,其次环境变量 VAPEUR_API_KEY / AIHUBMIX_API_KEY,不交叉回退。
  • 已移除 Google 官方直连、Google 密钥配置和旧 configured 链路。原 AIHubMix 用户将 api_key 改为 aihubmix_api_key,并设置 api_sourceaihubmix
  • request_timeout 单位为秒,最小 5,默认 60。
  • send_seed=false 时不发送 generationConfig.seed
  • config.local.json 已加入 .gitignore,每次执行重新读取。修改配置无需重启;更新节点代码后需重启 ComfyUI 并刷新页面。

若服务商模型 ID 与内置名称不同,在对应服务商的 *_model_overrides 中添加映射。例如:

{
  "vapeur_model_overrides": {
    "gemini-3-pro-image-preview": "服务商实际模型ID"
  }
}

参数校验仍按节点内置模型规格执行。旧工作流加载时会移除原 api_sourcemodel_override 的控件值,保留其他参数位置。

请求链路

| 服务商 | 图像生成地址 | 鉴权 | | --- | --- | --- | | Vapeur | https://api.vapeur.ai/gemini/v1beta/models/{model}:generateContent | Authorization: Bearer ... | | AIHubMix | https://aihubmix.com/gemini/v1beta/models/{model}:generateContent | x-goog-api-key |

同步与异步客户端均支持 list_models(),以 Bearer 鉴权访问服务商根路径 GET /v1/models,返回 object / data 原始结构。不会在启动或生成时自动拉取模型列表,也不会把列表显示到前端。

AIHubMix 的 Nano Banana Pro 自动移除显式 thinkingLevel,Nano Banana 2 保持原样。AIHubMix 协议参见其 Gemini 指南

输出与限制

  • 标准 IMAGE 输出可接 PreviewImage / SaveImage;另有 text 和 response_json。
  • response_json 隐去 base64 图像数据,保留响应其余结构。
  • 支持 inlineData / inline_data 图像响应。Nano Banana 2 未返回 thought 图时输出占位黑图。
  • Nano Banana 最多 3 张参考图,2 / Pro 最多 14 张。
  • 只支持单次 Gemini 原生请求,不保存会话或 thought signatures,不支持 grounding 或 Chat Completions 格式。
  • 示例工作流见 examples/README.md

测试

python -m unittest discover -s tests -v
node tests/test_workflow_migration.mjs