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.
Nodes (3)
Google's Nano Banana, inside ComfyUI — no GPU required
Resolution control, thinking, and a peek at its thoughts
Google's flagship image model as a ComfyUI node
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_source 或 model_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只接受vapeur或aihubmix,缺省为vapeur。- 两条链路分别读取自己的密钥,优先 JSON,其次环境变量
VAPEUR_API_KEY/AIHUBMIX_API_KEY,不交叉回退。 - 已移除 Google 官方直连、Google 密钥配置和旧
configured链路。原 AIHubMix 用户将api_key改为aihubmix_api_key,并设置api_source为aihubmix。 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_source 和 model_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