此版本进行了重大重构,主要变化包括:
- 删除硬编码字典 - 移除了巨大的硬编码工作流字典函数
- JSON文件加载 - 新增
load_workflow_json()函数从文件加载工作流 - 通用参数修改器 - 新增
update_node_input()函数动态修改节点参数 - 配置化管理 - 使用
NODE_MAP配置关键节点ID映射
test/
├── dify_comfy_bridge.py # 重构后的主桥接服务
├── test_refactored.py # 重构版本测试脚本
├── workflow/ # 工作流配置文件目录
│ ├── Z_image.json # 文生图工作流
│ └── image_qwen_image_edit_2511_GGUF.json # 图生图工作流
└── README.md # 本文档
这是一个连接 Dify 和 ComfyUI 的智能桥接服务,允许 Dify 工作流调用 ComfyUI 的 AI 图像生成和编辑功能。
NODE_MAP = {
"z_image": {
"filename": "Z_image.json",
"prompt_node_id": "22", # easy prompt 节点
"seed_node_id": "4", # KSampler 节点
"image_save_id": "20", # SaveImage 节点
"width_height_node_id": "7" # EmptyLatentImage 节点
},
"qwen_edit_2511": {
"filename": "image_qwen_image_edit_2511_GGUF.json",
"prompt_node_id": "435", # PrimitiveStringMultiline 节点
"seed_node_id": "460", # KSampler 节点
"image_load_id": "78", # LoadImage 节点
"image_save_id": "60" # SaveImage 节点
}
}- 打开 JSON 工作流文件
- 查找关键节点的数字ID(如
"22": { "class_type": "easy prompt" }) - 在
NODE_MAP中配置对应的ID
test/
├── dify_comfy_bridge.py # 重构后的主桥接服务
├── test_refactored.py # 重构版本测试脚本
├── test_new_features.py # 旧版本测试脚本
├── test_api.py # API 测试
├── test_websocket.py # WebSocket 测试
├── pyrightconfig.json # Python 类型检查配置
└── workflow/ # 工作流配置文件目录
├── Z_image.json # 文生图工作流
└── image_qwen_image_edit_2511_GGUF.json # 图生图工作流
pip install fastapi uvicorn websocket-client requests pydanticfastapi: Web API 框架uvicorn: ASGI 服务器websocket-client: WebSocket 客户端requests: HTTP 客户端pydantic: 数据验证
python dify_comfy_bridge.py🚀 智能桥已启动!当前 IP: 192.168.1.100
📂 工作流目录: ./workflow/
✅ 找到工作流文件: Z_image.json
✅ 找到工作流文件: image_qwen_image_edit_2511_GGUF.json
🌐 API 文档: http://192.168.1.100:3000/docs
🔌 ComfyUI: http://127.0.0.1:8188
==================================================
服务将在 http://0.0.0.0:3000 启动。
将 Dify 临时图片链接转换为 ComfyUI 永久链接。
请求示例:
{
"image_url": "/files/example.png"
}响应示例:
{
"permanent_url": "http://192.168.1.100:8188/view?filename=dify_upload_xxx.png&type=input"
}文本生成图片,现在从 JSON 文件加载工作流。
请求示例:
{
"positive_prompt": "A beautiful sunset over mountains",
"width": 720,
"height": 1280,
"seed": -1
}内部处理流程:
- 加载
Z_image.json工作流 (对应z_image配置) - 修改节点
22的text参数(提示词) - 修改节点
4的seed参数(种子) - 修改节点
7的width和height参数(尺寸) - 执行工作流,返回图片URL
图片编辑/图生图,现在从 JSON 文件加载工作流。
请求示例:
{
"positive_prompt": "Add rainbow to sky",
"image_url": "/files/uploaded.png",
"seed": 123456
}内部处理流程:
- 下载并上传图片到 ComfyUI
- 加载
image_qwen_image_edit_2511_GGUF.json工作流 (对应qwen_edit_2511配置) - 修改节点
78的image参数(图片文件名) - 修改节点
435的value参数(提示词) - 修改节点
460的seed参数(种子) - 执行工作流,返回图片URL
# 自动检测的局域网 IP
MY_LAN_IP = get_host_ip()
# ComfyUI 服务器地址
COMFY_SERVER_ADDRESS = "127.0.0.1:8188"
# Dify 端口 (如果不是 80,请修改)
DIFY_PORT = 80
# 工作流文件目录
WORKFLOW_DIR = "workflow"必须根据你的 JSON 工作流文件配置 NODE_MAP:
- 打开 JSON 文件查看节点ID
- 找到关键节点的数字ID
- 在
NODE_MAP中配置对应的ID
当前配置:
z_image: 对应Z_image.json文生图工作流qwen_edit_2511: 对应image_qwen_image_edit_2511_GGUF.json图生图工作流
启动时会自动检查:
- 工作流目录是否存在
- JSON 文件是否存在
- 关键节点配置是否正确
z_image和qwen_edit_2511配置是否完整
python test_refactored.py- ✅ 工作流文件检查
- ✅ 配置检查
- ✅ 服务健康检查
- ✅ 上传到ComfyUI
- ✅ 文生图功能
- ✅ 图片编辑功能
# 测试配置
python -c "import test_refactored; test_refactored.test_configuration()"
# 测试工作流文件
python -c "import test_refactored; test_refactored.test_workflow_files()"
# 测试文生图
python -c "import test_refactored; test_refactored.test_generate()"-
工作流加载失败
- 检查
workflow/目录是否存在 - 确认 JSON 文件名与配置匹配
- 查看 JSON 文件格式是否正确
- 检查
-
节点修改失败
- 检查
NODE_MAP中的节点ID是否正确 - 确认节点在 JSON 文件中存在
- 查看节点输入参数名称是否正确
- 检查
-
ComfyUI 连接失败
- 检查 ComfyUI 是否运行 (
http://127.0.0.1:8188) - 确认端口 8188 可访问
- 查看防火墙设置
- 检查 ComfyUI 是否运行 (
-
图片上传失败
- 检查 Dify 服务是否运行
- 确认 Dify 端口配置正确
- 测试网络连接
启动时会显示详细日志:
- ✅ 工作流文件加载状态
- 🔄 节点参数修改信息
- 📤 任务提交和执行状态
- ❌ 错误和警告信息
问题: 未找到工作流文件: Z_image.json
解决:
- 确认文件在
workflow/目录中 - 检查文件名拼写是否正确
- 确认文件扩展名是
.json
问题: 警告: 节点 ID "22" 不存在于工作流中
解决:
- 打开 JSON 文件查看实际节点ID
- 更新
NODE_MAP中对应配置 (z_image或qwen_edit_2511) - 重启服务
问题: 节点参数未正确修改 解决:
- 检查节点输入参数名称
- 确认参数类型(字符串、数字等)
- 查看 JSON 文件中参数的原始值
问题: 无法连接 ComfyUI WebSocket
解决:
- 确认 ComfyUI 正在运行
- 检查
COMFY_SERVER_ADDRESS配置 - 测试网络连接:
curl http://127.0.0.1:8188
问题: 下载失败,状态码: 404
解决:
- 检查 Dify 图片URL是否正确
- 确认 Dify 服务可访问
- 检查
DIFY_PORT配置
- ✅ 删除硬编码字典 - 移除
get_z_image_workflow()和get_edit_workflow()函数 - ✅ JSON文件加载 - 新增
load_workflow_json()函数 - ✅ 通用参数修改器 - 新增
update_node_input()函数 - ✅ 配置化管理 - 使用
NODE_MAP管理节点映射 - ✅ 自动文件检查 - 启动时验证工作流文件
- ✅ 详细日志输出 - 改进调试信息
- ✅ 新增
/upload_to_comfy接口 - ✅ 提取统一图片处理函数
- ✅ 改进错误处理机制
- ✅ 优化代码结构
- ✅ 基础文生图功能
- ✅ 基础图片编辑功能
- ✅ WebSocket 连接管理
- 移动工作流文件: 将 JSON 文件放入
workflow/目录 - 配置节点映射: 根据 JSON 文件配置
NODE_MAP(使用具体名称z_image和qwen_edit_2511) - 更新测试脚本: 使用
test_refactored.py替代test_new_features.py - 验证配置: 运行测试确保所有功能正常
| 特性 | v2.0 (硬编码) | v3.0 (JSON加载) |
|---|---|---|
| 工作流修改 | 需要修改Python代码 | 只需编辑JSON文件 |
| 节点配置 | 硬编码在函数中 | 配置在 NODE_MAP 中 |
| 维护性 | 代码冗长,难维护 | 模块化,易维护 |
| 扩展性 | 添加新工作流需编码 | 添加新工作流只需在 NODE_MAP 中添加配置 |
| 命名规范 | 使用泛称 t2i/i2i |
使用具体名称 z_image/qwen_edit_2511 |
MIT License