1388 lines
25 KiB
Markdown
1388 lines
25 KiB
Markdown
# 图片生成节点调用说明
|
||
|
||
本文档说明 ComfyUI 自定义节点中“生成图片 / 图生图”相关节点的使用方式,以及这些节点背后的后端调用链路。
|
||
|
||
文档绝对路径:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/image-generation-node-usage.md
|
||
```
|
||
|
||
## 1. 推荐使用方式
|
||
|
||
日常业务优先使用下面两类节点:
|
||
|
||
```text
|
||
知衣/图生图:
|
||
知衣-图生图
|
||
知衣-图生图-combo
|
||
知衣-AiStudio图生图-combo
|
||
|
||
GPT Image:
|
||
FD GPT Multi Image
|
||
FD GPT Image Combo
|
||
```
|
||
|
||
如果只是“1 组图片 + 1 条 prompt 生成多张图”,使用:
|
||
|
||
```text
|
||
知衣-图生图
|
||
```
|
||
|
||
如果有多组图片和多条 prompt,需要批量并发生成,使用:
|
||
|
||
```text
|
||
fd-输入参数组合 -> 知衣-图生图-combo
|
||
```
|
||
|
||
如果要走 AiStudio publish 渠道,使用:
|
||
|
||
```text
|
||
fd-输入参数组合 -> 知衣-AiStudio图生图-combo
|
||
```
|
||
|
||
如果明确要走 GPT Image edits 接口,使用:
|
||
|
||
```text
|
||
FD GPT Multi Image
|
||
```
|
||
|
||
或批量组合:
|
||
|
||
```text
|
||
fd-输入参数组合 -> FD GPT Image Combo
|
||
```
|
||
|
||
## 2. 关键文件绝对路径
|
||
|
||
节点注册入口:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/nodes.py
|
||
```
|
||
|
||
知衣图生图节点:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/zhiyi_image_to_image_node.py
|
||
```
|
||
|
||
知衣图生图 combo 节点:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/zhiyi_image_to_image_combo_node.py
|
||
```
|
||
|
||
图片组合节点:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/zhiyi_image_combo_node.py
|
||
```
|
||
|
||
AiStudio 图生图 combo 节点:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/aistudio_image_combo_node.py
|
||
```
|
||
|
||
Gemini 图片服务封装:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/utils/gemini_service.py
|
||
```
|
||
|
||
LiteLLM Gemini 图片调用:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/utils/litellm_gemini_image.py
|
||
```
|
||
|
||
GPT Image 节点:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/gpt_image_node.py
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/gpt_multi_image_node.py
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/gpt_image_combo_node.py
|
||
```
|
||
|
||
GPT Image 请求封装:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/utils/gpt_image_request.py
|
||
```
|
||
|
||
旧 Gemini 节点:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/old_gemini_api_node.py
|
||
```
|
||
|
||
配置文件:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/config.py
|
||
```
|
||
|
||
## 3. 节点选择
|
||
|
||
### 3.1 知衣-图生图
|
||
|
||
节点类:
|
||
|
||
```text
|
||
ZhiYiImageToImageNode
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
知衣-图生图
|
||
```
|
||
|
||
分类:
|
||
|
||
```text
|
||
知衣/图生图
|
||
```
|
||
|
||
适合场景:
|
||
|
||
```text
|
||
最多 6 张输入图 + 1 条 prompt 或 prompt_list,生成一批图片。
|
||
```
|
||
|
||
主要输入:
|
||
|
||
```text
|
||
image_1 必填,主输入图
|
||
prompt 必填,默认提示词
|
||
model 必填,模型/渠道
|
||
aspect_ratio 必填,输出比例
|
||
image_size 必填,输出尺寸
|
||
batch_size 必填,每条 prompt 生成几张
|
||
seed_mode 必填,随机种子 / 固定种子
|
||
seed 必填,固定种子模式下使用
|
||
node_switch 可选,1 表示跳过节点
|
||
out_request_id 可选,透传给后端的请求 ID
|
||
prompt_list 可选,LIST,每条 prompt 都会生成 batch_size 张
|
||
image_2 - image_6 可选,额外参考图
|
||
system_prompt 可选,会拼到 prompt 前面
|
||
```
|
||
|
||
输出:
|
||
|
||
```text
|
||
image IMAGE,成功图片会 cat 成 batch 输出
|
||
seed INT,本次使用的基础 seed
|
||
```
|
||
|
||
调用链路:
|
||
|
||
```text
|
||
ComfyUI IMAGE tensor
|
||
-> 选择模型渠道
|
||
-> 如果是 LiteLLM Gemini 渠道:图片转 base64,直接请求 LiteLLM chat/completions
|
||
-> 否则:图片上传 OSS,拿到 image_url_list
|
||
-> 调用 Gemini 图片服务
|
||
-> 下载 result_image_url
|
||
-> 转成 ComfyUI IMAGE tensor
|
||
```
|
||
|
||
### 3.2 fd-输入参数组合
|
||
|
||
节点类:
|
||
|
||
```text
|
||
ZhiYiImageComboNode
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
fd-输入参数组合
|
||
```
|
||
|
||
分类:
|
||
|
||
```text
|
||
知衣/工具
|
||
```
|
||
|
||
作用:
|
||
|
||
```text
|
||
把最多 6 张图片和一组 prompt 打包成 ZHIYI_COMBO,供 combo 生成节点批量使用。
|
||
```
|
||
|
||
主要输入:
|
||
|
||
```text
|
||
image_1 必填
|
||
prompt 必填
|
||
image_2 - image_6 可选
|
||
prompt_list 可选,LIST
|
||
```
|
||
|
||
输出结构:
|
||
|
||
```json
|
||
{
|
||
"images": ["ComfyUI IMAGE tensor 列表"],
|
||
"prompt": "原始 prompt",
|
||
"prompts": ["有效 prompt 列表"]
|
||
}
|
||
```
|
||
|
||
### 3.3 知衣-图生图-combo
|
||
|
||
节点类:
|
||
|
||
```text
|
||
ZhiYiImageToImageComboNode
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
知衣-图生图-combo
|
||
```
|
||
|
||
分类:
|
||
|
||
```text
|
||
知衣/图生图
|
||
```
|
||
|
||
适合场景:
|
||
|
||
```text
|
||
多个 ZHIYI_COMBO 并发生成,每个 combo 可以有多张图和多条 prompt。
|
||
```
|
||
|
||
主要输入:
|
||
|
||
```text
|
||
model 必填
|
||
aspect_ratio 必填
|
||
image_size 必填
|
||
batch_size 必填,每条 prompt 生成几张
|
||
max_concurrency 必填,同时请求数上限
|
||
seed_mode 必填
|
||
seed 必填
|
||
out_request_id 可选
|
||
combo_1 - combo_8 可选,至少连接一个
|
||
system_prompt 可选
|
||
```
|
||
|
||
输出:
|
||
|
||
```text
|
||
image IMAGE list,OUTPUT_IS_LIST=True,每个成功请求输出一张
|
||
seed INT
|
||
log STRING,包含成功/失败统计和后端 URL
|
||
```
|
||
|
||
调用链路:
|
||
|
||
```text
|
||
ZHIYI_COMBO
|
||
-> 展开 combo.images 中的 batch 图片
|
||
-> 对 combo.prompts 逐条生成任务
|
||
-> 每条 prompt 乘以 batch_size
|
||
-> 根据 model 判断走 LiteLLM 还是 Gemini 图片服务
|
||
-> 并发请求
|
||
-> 输出成功图片列表和日志
|
||
```
|
||
|
||
### 3.4 知衣-AiStudio图生图-combo
|
||
|
||
节点类:
|
||
|
||
```text
|
||
ZhiYiAiStudioImageComboNode
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
知衣-AiStudio图生图-combo
|
||
```
|
||
|
||
分类:
|
||
|
||
```text
|
||
知衣/图生图
|
||
```
|
||
|
||
适合场景:
|
||
|
||
```text
|
||
需要走内部 AiStudio publish 测试渠道生成图片。
|
||
```
|
||
|
||
调用链路:
|
||
|
||
```text
|
||
ZHIYI_COMBO
|
||
-> 展开图片
|
||
-> 图片上传 OSS
|
||
-> 组装 publish payload
|
||
-> POST FD_AISTUDIO_PUBLISH_URL
|
||
-> 从响应 data.url 读取结果图 URL
|
||
-> 下载结果图
|
||
-> 输出 IMAGE list、seed、log
|
||
```
|
||
|
||
请求体形状:
|
||
|
||
```json
|
||
{
|
||
"type": "AiStudio",
|
||
"payload": {
|
||
"prompt": "system_prompt 和 prompt 拼接后的文本",
|
||
"image": ["https://oss/path/input.png"],
|
||
"image_size": "4K",
|
||
"aspect_ratio": "1:1"
|
||
},
|
||
"timeout": 300000
|
||
}
|
||
```
|
||
|
||
注意:
|
||
|
||
```text
|
||
model、seed、out_request_id 目前只是为了兼容旧 UI,AiStudio publish 接口当前不传这些字段。
|
||
```
|
||
|
||
更详细说明见:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/aistudio-node-usage.md
|
||
```
|
||
|
||
### 3.5 FD GPT Multi Image
|
||
|
||
节点类:
|
||
|
||
```text
|
||
FD_GPTMultiImage
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
FD GPT Multi Image
|
||
```
|
||
|
||
分类:
|
||
|
||
```text
|
||
GPT Image
|
||
```
|
||
|
||
适合场景:
|
||
|
||
```text
|
||
最多 6 张图片,直接调用 GPT Image edits API 进行图生图。
|
||
```
|
||
|
||
调用链路:
|
||
|
||
```text
|
||
ComfyUI IMAGE tensor
|
||
-> 图片压缩到不超过 4096 * 4096 总像素
|
||
-> multipart/form-data 上传到 {FD_LITELLM_BASE_URL}/v1/images/edits
|
||
-> 解析返回的 url 或 b64_json
|
||
-> 转成 ComfyUI IMAGE
|
||
```
|
||
|
||
请求地址:
|
||
|
||
```text
|
||
{FD_LITELLM_BASE_URL}/v1/images/edits
|
||
```
|
||
|
||
请求方式:
|
||
|
||
```text
|
||
POST multipart/form-data
|
||
Authorization: Bearer {FD_LITELLM_API_KEY}
|
||
```
|
||
|
||
表单字段:
|
||
|
||
```text
|
||
model gpt-image-2
|
||
prompt prompt 文本
|
||
size 根据 image_size + aspect_ratio 映射出的尺寸,例如 2048x2048
|
||
user out_request_id
|
||
quality medium
|
||
image 多个 multipart 文件字段
|
||
```
|
||
|
||
### 3.6 FD GPT Image Combo
|
||
|
||
节点类:
|
||
|
||
```text
|
||
FD_GPTImageComboNode
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
FD GPT Image Combo
|
||
```
|
||
|
||
分类:
|
||
|
||
```text
|
||
GPT Image
|
||
```
|
||
|
||
适合场景:
|
||
|
||
```text
|
||
用 ZHIYI_COMBO 批量调用 GPT Image edits API。
|
||
```
|
||
|
||
调用链路和 `FD GPT Multi Image` 一致,只是输入来自 `fd-输入参数组合`,并支持:
|
||
|
||
```text
|
||
combo_1 - combo_8
|
||
batch_size
|
||
max_concurrency
|
||
system_prompt
|
||
```
|
||
|
||
输出:
|
||
|
||
```text
|
||
image IMAGE list
|
||
seed INT
|
||
log STRING
|
||
```
|
||
|
||
### 3.7 FD GTP Image
|
||
|
||
节点类:
|
||
|
||
```text
|
||
FD_GTPImage
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
FD GTP Image
|
||
```
|
||
|
||
分类:
|
||
|
||
```text
|
||
image/generation
|
||
```
|
||
|
||
这是底层 GPT Image edits API 节点,适合简单直接调用,不支持 combo。
|
||
|
||
主要输入:
|
||
|
||
```text
|
||
out_request_id
|
||
prompt
|
||
model=gpt-image-2
|
||
resolution=1K/2K/4K
|
||
images
|
||
aspect_ratio
|
||
```
|
||
|
||
输出:
|
||
|
||
```text
|
||
IMAGE
|
||
STRING revised_prompt 或 message
|
||
STRING result_url
|
||
```
|
||
|
||
### 3.8 FD Gemini Image
|
||
|
||
节点类:
|
||
|
||
```text
|
||
FD_GeminiImage
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
FD Gemini Image
|
||
```
|
||
|
||
分类:
|
||
|
||
```text
|
||
image/generation
|
||
```
|
||
|
||
这是旧 Gemini 图片节点,直接调用 `FD_GEMINI_URL`。
|
||
|
||
调用链路:
|
||
|
||
```text
|
||
ComfyUI IMAGE tensor
|
||
-> 图片压缩到不超过 3072 * 3072 总像素
|
||
-> 上传到 OSS
|
||
-> POST FD_GEMINI_URL
|
||
-> 后端返回 result_image_url
|
||
-> 下载结果图
|
||
```
|
||
|
||
请求体形状:
|
||
|
||
```json
|
||
{
|
||
"out_request_id": "default",
|
||
"prompt": "生成提示词",
|
||
"model": "google/gemini-3-pro-image-preview",
|
||
"aspect_ratio": "1:1",
|
||
"resolution": "2K",
|
||
"image_url_list": ["https://oss/path/input.png"]
|
||
}
|
||
```
|
||
|
||
返回体期望:
|
||
|
||
```json
|
||
{
|
||
"result_image_url": "https://oss/path/output.png",
|
||
"message": "文本消息",
|
||
"cost_time": 12.3
|
||
}
|
||
```
|
||
|
||
## 4. 模型和渠道
|
||
|
||
知衣图生图节点支持的常见 model:
|
||
|
||
```text
|
||
google/gemini-3-pro-image-preview
|
||
google/gemini-3.1-flash-image-preview
|
||
google/gemini-2.5-flash-image-preview
|
||
google/gemini-3-pro-image-preview-official
|
||
gemini-3-pro-image-preview
|
||
batch/gemini-3-pro-image-preview
|
||
gemini-3.1-flash-image-preview
|
||
gemini-2.5-flash-image-preview
|
||
gemini-3-pro-image-preview-official
|
||
gemini-3-pro-image-preview-aistudio
|
||
gemini-3-pro-image-preview-siphonlab
|
||
gemini-nano-banana-2.1
|
||
gemini-nano-banana-2.1-siphonlab
|
||
gemini-nano-banana-2.1-wdcloud
|
||
gemini-nano-banana-2.1-vip
|
||
```
|
||
|
||
模型名归一化规则在:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/utils/gemini_service.py
|
||
```
|
||
|
||
部分模型会走 LiteLLM Gemini 图片调用,判断逻辑在:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/utils/litellm_gemini_image.py
|
||
```
|
||
|
||
当前 LiteLLM Gemini 渠道模型包括:
|
||
|
||
```text
|
||
gemini-3-pro-image-preview-siphonlab
|
||
```
|
||
|
||
新模型 `gemini-nano-banana-2.1` 走非 LiteLLM 的 Gemini image-server。它支持 `1K`、`2K`、`4K`;节点中的 `720P` 会映射为 `1K`,`1080P` 会映射为 `2K`。编辑场景默认开启色彩偏移修正,关闭时会显式传 `enable_color_bias_correction: false`。显式渠道模型 `-siphonlab` / `-wdcloud` / `-vip` 锁定服务端渠道(逆向渠道稳定性弱于官方,建议仅测试或容量兜底使用);裸名按上游公共入口权重分流,带 `google/` 前缀的变体原样透传。
|
||
|
||
这类 LiteLLM 模型不上传 OSS 给 Gemini 图片服务,而是把图片转 base64,组装成多模态 messages 后请求:
|
||
|
||
```text
|
||
{FD_LITELLM_BASE_URL}/v1/chat/completions
|
||
```
|
||
|
||
非 LiteLLM Gemini 渠道会走:
|
||
|
||
```text
|
||
FD_GEMINI_URL
|
||
```
|
||
|
||
并使用 `image_url_list` 传 OSS 图片 URL。
|
||
|
||
## 5. 环境变量
|
||
|
||
### 5.1 Gemini 图片服务
|
||
|
||
```text
|
||
FD_GEMINI_URL
|
||
```
|
||
|
||
用途:
|
||
|
||
```text
|
||
旧 Gemini 节点、知衣图生图非 LiteLLM Gemini 渠道的服务地址。
|
||
```
|
||
|
||
### 5.2 LiteLLM / OpenAI 兼容服务
|
||
|
||
```text
|
||
FD_LITELLM_BASE_URL
|
||
FD_LITELLM_API_KEY
|
||
```
|
||
|
||
用途:
|
||
|
||
```text
|
||
GPT Image edits API
|
||
Seedream images/generations API
|
||
LiteLLM Gemini chat/completions 图片生成渠道
|
||
```
|
||
|
||
### 5.3 OSS 上传
|
||
|
||
```text
|
||
FD_OSS_ACCESS_KEY_ID
|
||
FD_OSS_ACCESS_KEY_SECRET
|
||
FD_OSS_BUCKET_NAME
|
||
FD_OSS_ENDPOINT
|
||
FD_OSS_URL_PREFIX
|
||
```
|
||
|
||
用途:
|
||
|
||
```text
|
||
Gemini 图片服务、AiStudio、Flux2Klein、Z-Image-Turbo、Seedream 需要先把输入图片上传 OSS。
|
||
```
|
||
|
||
不同节点使用的 OSS 路径前缀:
|
||
|
||
```text
|
||
FD_OSS_URL_PATH_PREFIX_GEMINI 默认 devops/comfyui/segment_img
|
||
FD_OSS_URL_PATH_PREFIX_BEFORE_GEN 默认 devops/comfyui/segment_img
|
||
FD_OSS_URL_PATH_PREFIX_FLUX 默认 devops/comfyui/segment_img
|
||
```
|
||
|
||
### 5.4 AiStudio publish
|
||
|
||
```text
|
||
FD_AISTUDIO_PUBLISH_URL
|
||
```
|
||
|
||
默认值:
|
||
|
||
```text
|
||
http://121.40.67.98:2003/api/tasks/publish
|
||
```
|
||
|
||
### 5.5 Flux2Klein
|
||
|
||
```text
|
||
FD_FLUX2KLEIN_URL
|
||
FD_FLUX2KLEIN_USERNAME
|
||
FD_FLUX2KLEIN_PASSWORD
|
||
```
|
||
|
||
### 5.6 Z-Image-Turbo
|
||
|
||
```text
|
||
FD_Z_IMAGE_TURBO_URL
|
||
FD_Z_IMAGE_TURBO_USERNAME
|
||
FD_Z_IMAGE_TURBO_PASSWORD
|
||
```
|
||
|
||
### 5.7 Webhook
|
||
|
||
```text
|
||
FD_GEN_IMAGE_NOTIFICATION_WEBHOOK_URL
|
||
FD_GEMINI_WEBHOOK_URL
|
||
```
|
||
|
||
用途:
|
||
|
||
```text
|
||
发送请求摘要、完整响应摘要等通知。未配置时不会发送。
|
||
```
|
||
|
||
## 6. 后端调用方式汇总
|
||
|
||
### 6.1 知衣图生图非 LiteLLM Gemini 渠道
|
||
|
||
请求地址:
|
||
|
||
```text
|
||
FD_GEMINI_URL
|
||
```
|
||
|
||
请求方式:
|
||
|
||
```text
|
||
POST application/json
|
||
```
|
||
|
||
请求体:
|
||
|
||
```json
|
||
{
|
||
"out_request_id": "req-001",
|
||
"prompt": "生成提示词",
|
||
"model": "google/gemini-3-pro-image-preview",
|
||
"aspect_ratio": "1:1",
|
||
"resolution": "4K",
|
||
"image_url_list": [
|
||
"https://oss/path/input-1.png",
|
||
"https://oss/path/input-2.png"
|
||
]
|
||
}
|
||
```
|
||
|
||
响应体:
|
||
|
||
```json
|
||
{
|
||
"result_image_url": "https://oss/path/result.png",
|
||
"message": "生成说明",
|
||
"cost_time": 20.5
|
||
}
|
||
```
|
||
|
||
节点随后会下载 `result_image_url`,转成 ComfyUI `IMAGE` 输出。
|
||
|
||
### 6.2 LiteLLM Gemini 图片渠道
|
||
|
||
请求地址:
|
||
|
||
```text
|
||
{FD_LITELLM_BASE_URL}/v1/chat/completions
|
||
```
|
||
|
||
请求方式:
|
||
|
||
```text
|
||
POST application/json
|
||
Authorization: Bearer {FD_LITELLM_API_KEY}
|
||
```
|
||
|
||
请求特点:
|
||
|
||
```text
|
||
输入图不会先传 OSS,而是转 base64 放进 messages。
|
||
model 使用节点选择的 aistudio / siphonlab 渠道模型。
|
||
aspect_ratio、image_size、seed、out_request_id 会一起传入调用封装。
|
||
```
|
||
|
||
实现文件:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/utils/litellm_gemini_image.py
|
||
```
|
||
|
||
### 6.3 GPT Image edits
|
||
|
||
请求地址:
|
||
|
||
```text
|
||
{FD_LITELLM_BASE_URL}/v1/images/edits
|
||
```
|
||
|
||
请求方式:
|
||
|
||
```text
|
||
POST multipart/form-data
|
||
Authorization: Bearer {FD_LITELLM_API_KEY}
|
||
```
|
||
|
||
表单字段:
|
||
|
||
```text
|
||
model gpt-image-2
|
||
prompt 生成提示词
|
||
size 1024x1024 / 2048x2048 / 2880x2880 等
|
||
quality medium
|
||
user out_request_id,可选
|
||
image 一个或多个 PNG 文件
|
||
```
|
||
|
||
响应支持两种图片形式:
|
||
|
||
```text
|
||
data[0].url
|
||
data[0].b64_json
|
||
```
|
||
|
||
节点优先下载 `data[0].url`;如果没有 URL,则解码 `b64_json`。
|
||
|
||
超时/失败策略:
|
||
|
||
```text
|
||
主模型 gpt-image-2 最多尝试 3 次。
|
||
如果发生 TIMEOUT,或主模型多次失败,会 fallback 到 gpt-image-2-azure。
|
||
fallback 请求会额外带 n 字段。
|
||
```
|
||
|
||
### 6.4 AiStudio publish
|
||
|
||
请求地址:
|
||
|
||
```text
|
||
FD_AISTUDIO_PUBLISH_URL
|
||
```
|
||
|
||
请求方式:
|
||
|
||
```text
|
||
POST application/json
|
||
```
|
||
|
||
请求体:
|
||
|
||
```json
|
||
{
|
||
"type": "AiStudio",
|
||
"payload": {
|
||
"prompt": "生成提示词",
|
||
"image": ["https://oss/path/input.png"],
|
||
"image_size": "4K",
|
||
"aspect_ratio": "1:1"
|
||
},
|
||
"timeout": 300000
|
||
}
|
||
```
|
||
|
||
响应体要求:
|
||
|
||
```json
|
||
{
|
||
"success": true,
|
||
"taskId": "task-id",
|
||
"data": {
|
||
"url": "https://oss/path/result.png"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 6.5 Flux2Klein
|
||
|
||
节点类:
|
||
|
||
```text
|
||
FD_Flux2KleinGenImage
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
FD Flux2Klein Gen Image
|
||
```
|
||
|
||
请求地址:
|
||
|
||
```text
|
||
service_url 输入项,默认 FD_FLUX2KLEIN_URL
|
||
```
|
||
|
||
认证:
|
||
|
||
```text
|
||
HTTP Basic Auth:
|
||
FD_FLUX2KLEIN_USERNAME
|
||
FD_FLUX2KLEIN_PASSWORD
|
||
```
|
||
|
||
请求体:
|
||
|
||
```json
|
||
{
|
||
"out_request_id": "req-001",
|
||
"prompt": "生成提示词",
|
||
"seed": 0,
|
||
"ratio": "1:1",
|
||
"size": "2K",
|
||
"images": ["https://oss/path/input.png"]
|
||
}
|
||
```
|
||
|
||
响应体要求:
|
||
|
||
```json
|
||
{
|
||
"urls": ["https://oss/path/result.png"],
|
||
"status": "success",
|
||
"cost_time": 45.2
|
||
}
|
||
```
|
||
|
||
当前节点只取 `urls[0]`。
|
||
|
||
### 6.6 Z-Image-Turbo
|
||
|
||
节点类:
|
||
|
||
```text
|
||
FD_ZImageTurboGenImage
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
FD Z-Image-Turbo Gen Image
|
||
```
|
||
|
||
请求地址:
|
||
|
||
```text
|
||
FD_Z_IMAGE_TURBO_URL
|
||
```
|
||
|
||
认证:
|
||
|
||
```text
|
||
HTTP Basic Auth:
|
||
FD_Z_IMAGE_TURBO_USERNAME
|
||
FD_Z_IMAGE_TURBO_PASSWORD
|
||
```
|
||
|
||
请求体:
|
||
|
||
```json
|
||
{
|
||
"out_request_id": "req-001",
|
||
"prompt": "生成提示词",
|
||
"seed": 42,
|
||
"ratio": "1:1",
|
||
"size": "1K",
|
||
"strength": 0.25,
|
||
"guidance_scale": 0.0,
|
||
"num_inference_steps": 9,
|
||
"num_images": 1,
|
||
"images": ["https://oss/path/input.png"]
|
||
}
|
||
```
|
||
|
||
响应体要求:
|
||
|
||
```json
|
||
{
|
||
"urls": ["https://oss/path/result.png"]
|
||
}
|
||
```
|
||
|
||
输出:
|
||
|
||
```text
|
||
IMAGE
|
||
STRING result_url
|
||
```
|
||
|
||
### 6.7 Seedream
|
||
|
||
节点类:
|
||
|
||
```text
|
||
FD_SeedreamImage
|
||
```
|
||
|
||
显示名:
|
||
|
||
```text
|
||
FD Seedream Image
|
||
```
|
||
|
||
默认调用 image-server 统一接口(`FD_SEEDREAM_BACKEND=image_generation`,默认值),不再直连 LiteLLM:
|
||
|
||
- 文生图:`POST {FD_IMAGE_GENERATE_URL}`(默认 `http://image-generation.online-server-gray.svc.cluster.local/image/generate`,可从 `FD_GEMINI_URL` / `FD_GPT_IMAGE_EDIT_URL` 推导)
|
||
- 图生图:输入图降采样(≤4096×4096 像素)上传 OSS 后 `POST {FD_GPT_IMAGE_EDIT_URL}`(默认 .../image/edit),channel 区分模型
|
||
|
||
请求体(文生图):
|
||
|
||
```json
|
||
{
|
||
"channel": "doubao-seedream-5.0-pro",
|
||
"prompt": "生成提示词",
|
||
"size": "4K",
|
||
"ratio": "3:4",
|
||
"resize": true
|
||
}
|
||
```
|
||
|
||
请求体(图生图):
|
||
|
||
```json
|
||
{
|
||
"channel": "doubao-seedream-5.0-lite",
|
||
"prompt": "编辑提示词",
|
||
"size": "2K",
|
||
"ratio": "9:21",
|
||
"resize": true,
|
||
"image_url_list": ["https://oss/path/input.png"]
|
||
}
|
||
```
|
||
|
||
响应体要求:
|
||
|
||
```json
|
||
{
|
||
"status": true,
|
||
"result_image_url": "https://oss/path/result.png"
|
||
}
|
||
```
|
||
|
||
参数说明:
|
||
|
||
- `size`:`1K`/`2K`/`3K`/`4K`,默认 `2K`。image-server 仅支持 1K/2K/4K,节点将 `3K` 映射为 `2K` 请求并记录 warning(豆包 Pro/Lite 均无 3K 档)
|
||
- `ratio`:`1:1`、`2:3`、`3:2`、`3:4`、`4:3`、`4:5`、`5:4`、`16:9`、`9:16`、`21:9`、`9:21`
|
||
- `resize`:固定 `true`。Pro + 4K 由 image-server 按同一比例请求上游 2K 并超分到长边 4096(解决 Pro 不支持 3K/4K 的 400 问题)
|
||
- `output_format` 参数保留兼容,image-server 路径不上送
|
||
- `model` 参数(`doubao-seedream-5.0-pro` / `doubao-seedream-5.0-lite` / `doubao-seedream-5.0-flash`)作为 `channel` 透传;显式 channel 失败不跨模型回退。flash 参数与分辨率语义与 pro 完全一致,仅速度更快
|
||
|
||
回退开关:`FD_SEEDREAM_BACKEND=litellm` 时走旧直连 `{FD_LITELLM_BASE_URL}/v1/images/generations`(像素换算、行为同旧版,仅紧急回退用)。
|
||
|
||
## 7. 图片处理规则
|
||
|
||
### 7.1 输入图片转 OSS URL
|
||
|
||
大部分非 GPT Image edits 节点会执行:
|
||
|
||
```text
|
||
ComfyUI IMAGE tensor
|
||
-> numpy uint8
|
||
-> PNG bytes
|
||
-> md5 命名
|
||
-> 上传 OSS
|
||
-> 得到公网/内网可访问 URL
|
||
```
|
||
|
||
Gemini 图片服务默认路径:
|
||
|
||
```text
|
||
{FD_OSS_URL_PATH_PREFIX_GEMINI}/{md5}.png
|
||
```
|
||
|
||
AiStudio / Seedream 默认路径:
|
||
|
||
```text
|
||
{FD_OSS_URL_PATH_PREFIX_BEFORE_GEN}/{md5}.png
|
||
```
|
||
|
||
Flux2Klein / Z-Image-Turbo 默认路径:
|
||
|
||
```text
|
||
{FD_OSS_URL_PATH_PREFIX_FLUX}/{md5}.png
|
||
```
|
||
|
||
### 7.2 输入图片降采样
|
||
|
||
不同节点为了控制请求大小,会做不同程度的降采样:
|
||
|
||
```text
|
||
FD_GeminiImage: 总像素不超过 3072 * 3072
|
||
ZhiYiImageToImageNode: Gemini service client 内部总像素不超过 3072 * 3072
|
||
FD_GTPImage: 总像素不超过 4096 * 4096
|
||
FD_GPTMultiImage: 总像素不超过 4096 * 4096
|
||
FD_GPTImageComboNode: 总像素不超过 4096 * 4096
|
||
FD_Flux2KleinGenImage: 总像素不超过 2048 * 2048
|
||
FD_SeedreamImage: 图生图总像素不超过 4096 * 4096(image-server 路径,seedream client 内降采样)
|
||
```
|
||
|
||
### 7.3 输出图片
|
||
|
||
所有图片生成节点最终都会:
|
||
|
||
```text
|
||
下载后端返回的结果图 URL
|
||
-> PIL Image RGB
|
||
-> numpy float32 / 255.0
|
||
-> torch.Tensor
|
||
-> ComfyUI IMAGE
|
||
```
|
||
|
||
## 8. 尺寸和比例
|
||
|
||
### 8.1 Gemini / 知衣图生图
|
||
|
||
`image_size` 常用选项:
|
||
|
||
```text
|
||
4K
|
||
2K
|
||
1080P
|
||
720P
|
||
```
|
||
|
||
`aspect_ratio` 常用选项:
|
||
|
||
```text
|
||
""
|
||
1:1
|
||
2:3
|
||
3:2
|
||
3:4
|
||
4:3
|
||
4:5
|
||
5:4
|
||
16:9
|
||
9:16
|
||
21:9
|
||
```
|
||
|
||
combo 节点额外支持:
|
||
|
||
```text
|
||
1:4
|
||
1:8
|
||
4:1
|
||
8:1
|
||
```
|
||
|
||
### 8.2 GPT Image
|
||
|
||
GPT Image 节点会把 `image_size + aspect_ratio` 映射为具体像素尺寸。
|
||
|
||
映射函数:
|
||
|
||
```text
|
||
/Users/chenjunhong/Documents/web_project/Comfyui_Fd_Nodes/src/Comfyui_Fd_Nodes/utils/gpt_image_size.py
|
||
```
|
||
|
||
示例:
|
||
|
||
```text
|
||
1K + 1:1 -> 1024x1024
|
||
2K + 1:1 -> 2048x2048
|
||
4K + 1:1 -> 2880x2880
|
||
1K + 3:4 -> 768x1024
|
||
2K + 3:4 -> 1536x2048
|
||
4K + 3:4 -> 2160x2880
|
||
1K + 9:16 -> 720x1280
|
||
2K + 9:16 -> 1152x2048
|
||
4K + 9:16 -> 2160x3840
|
||
```
|
||
|
||
## 9. 并发和 batch 规则
|
||
|
||
### 9.1 单节点 batch
|
||
|
||
`知衣-图生图` 和 `FD GPT Multi Image` 的任务数:
|
||
|
||
```text
|
||
有效 prompt 数量 * batch_size
|
||
```
|
||
|
||
如果没有 `prompt_list`,有效 prompt 数量为 1。
|
||
|
||
### 9.2 combo batch
|
||
|
||
`知衣-图生图-combo`、`知衣-AiStudio图生图-combo`、`FD GPT Image Combo` 的任务数:
|
||
|
||
```text
|
||
所有 combo 的有效 prompt 数量之和 * batch_size
|
||
```
|
||
|
||
`max_concurrency` 控制同时请求数上限。
|
||
|
||
### 9.3 seed 规则
|
||
|
||
随机种子模式:
|
||
|
||
```text
|
||
每个请求随机生成 seed。
|
||
```
|
||
|
||
固定种子模式:
|
||
|
||
```text
|
||
以输入 seed 为基础,按任务顺序递增。
|
||
```
|
||
|
||
注意:
|
||
|
||
```text
|
||
目前部分后端不一定真正使用 seed。seed 字段更多是为了日志追踪和兼容 UI。
|
||
```
|
||
|
||
## 10. 常见接线示例
|
||
|
||
### 10.1 单组图生图
|
||
|
||
```text
|
||
Load Image
|
||
-> 知衣-图生图.image_1
|
||
|
||
设置:
|
||
prompt = 生成提示词
|
||
model = google/gemini-3-pro-image-preview
|
||
image_size = 2K 或 4K
|
||
aspect_ratio = 1:1 / 3:4 / 9:16
|
||
batch_size = 1
|
||
```
|
||
|
||
### 10.2 多组图片批量生成
|
||
|
||
```text
|
||
Load Image A + prompt A
|
||
-> fd-输入参数组合.combo
|
||
-> 知衣-图生图-combo.combo_1
|
||
|
||
Load Image B + prompt B
|
||
-> fd-输入参数组合.combo
|
||
-> 知衣-图生图-combo.combo_2
|
||
|
||
知衣-图生图-combo:
|
||
batch_size = 1 或更多
|
||
max_concurrency = 8 / 16
|
||
```
|
||
|
||
### 10.3 AiStudio 批量生成
|
||
|
||
```text
|
||
Load Image
|
||
-> fd-输入参数组合
|
||
-> 知衣-AiStudio图生图-combo
|
||
```
|
||
|
||
要求:
|
||
|
||
```text
|
||
FD_AISTUDIO_PUBLISH_URL 已配置或使用默认值。
|
||
OSS 参数完整。
|
||
```
|
||
|
||
### 10.4 GPT Image 图生图
|
||
|
||
```text
|
||
Load Image
|
||
-> FD GPT Multi Image.image_1
|
||
|
||
设置:
|
||
model = gpt-image-2
|
||
image_size = 2K / 4K
|
||
aspect_ratio = 1:1 / 3:4 / 9:16
|
||
```
|
||
|
||
要求:
|
||
|
||
```text
|
||
FD_LITELLM_BASE_URL
|
||
FD_LITELLM_API_KEY
|
||
```
|
||
|
||
## 11. 常见错误
|
||
|
||
### 11.1 未配置 OSS
|
||
|
||
错误示例:
|
||
|
||
```text
|
||
未配置 OSS 上传参数: FD_OSS_ACCESS_KEY_ID, ...
|
||
```
|
||
|
||
原因:
|
||
|
||
```text
|
||
节点需要先把输入图上传 OSS,但 OSS 环境变量不完整。
|
||
```
|
||
|
||
影响节点:
|
||
|
||
```text
|
||
知衣-图生图
|
||
知衣-图生图-combo
|
||
知衣-AiStudio图生图-combo
|
||
FD Gemini Image
|
||
FD Flux2Klein Gen Image
|
||
FD Z-Image-Turbo Gen Image
|
||
FD Seedream Image
|
||
```
|
||
|
||
GPT Image edits 节点不需要 OSS 上传输入图,因为它走 multipart/form-data。
|
||
|
||
### 11.2 未配置 LiteLLM
|
||
|
||
错误示例:
|
||
|
||
```text
|
||
未配置 base_url,请在环境变量 FD_LITELLM_BASE_URL 中设置
|
||
未配置 api_key,请在环境变量 FD_LITELLM_API_KEY 中设置
|
||
```
|
||
|
||
影响节点:
|
||
|
||
```text
|
||
FD GTP Image
|
||
FD GPT Multi Image
|
||
FD GPT Image Combo
|
||
FD Seedream Image
|
||
LiteLLM Gemini 图片渠道
|
||
```
|
||
|
||
### 11.3 没有输入图片
|
||
|
||
错误示例:
|
||
|
||
```text
|
||
未提供图片
|
||
未提供任何组合输入,请连接至少一个 combo
|
||
所有组合均无有效图片
|
||
```
|
||
|
||
处理方式:
|
||
|
||
```text
|
||
确认 image_1 或 combo_1 已连接。
|
||
确认 combo 内至少有一张有效 IMAGE。
|
||
```
|
||
|
||
### 11.4 后端没有返回图片 URL
|
||
|
||
错误示例:
|
||
|
||
```text
|
||
响应缺少 data.url
|
||
响应缺少 result_image_url
|
||
GPT Image API returned no usable image payload
|
||
```
|
||
|
||
处理方式:
|
||
|
||
```text
|
||
检查后端响应格式是否符合对应节点的期望。
|
||
检查生成服务是否成功完成任务。
|
||
```
|
||
|
||
### 11.5 TIMEOUT
|
||
|
||
原因:
|
||
|
||
```text
|
||
后端生成耗时过长、网络超时、模型服务繁忙。
|
||
```
|
||
|
||
GPT Image edits 节点会尝试 fallback:
|
||
|
||
```text
|
||
gpt-image-2 -> gpt-image-2-azure
|
||
```
|
||
|
||
其他节点一般会直接抛出归一化后的错误。
|
||
|
||
## 12. 给调用方的最小说明
|
||
|
||
如果只需要告诉别人怎么用,给这段即可:
|
||
|
||
```text
|
||
1. 单组图生图用“知衣-图生图”。
|
||
2. 多组批量用“fd-输入参数组合”打包图片和 prompt,再接“知衣-图生图-combo”。
|
||
3. AiStudio 渠道用“fd-输入参数组合”接“知衣-AiStudio图生图-combo”。
|
||
4. GPT Image 渠道用“FD GPT Multi Image”;批量用“fd-输入参数组合”接“FD GPT Image Combo”。
|
||
5. Gemini 普通渠道会先上传图片到 OSS,然后 POST FD_GEMINI_URL。
|
||
6. GPT Image 渠道直接 multipart POST {FD_LITELLM_BASE_URL}/v1/images/edits。
|
||
7. AiStudio 渠道会上传 OSS 后 POST FD_AISTUDIO_PUBLISH_URL,读取响应 data.url。
|
||
8. 必须配置对应环境变量:OSS、FD_GEMINI_URL、FD_LITELLM_BASE_URL、FD_LITELLM_API_KEY、FD_AISTUDIO_PUBLISH_URL 等。
|
||
```
|