Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dify-ComfyUI 智能桥接服务 (重构版本)

🔄 重构说明

此版本进行了重大重构,主要变化包括:

🎯 核心改进

  1. 删除硬编码字典 - 移除了巨大的硬编码工作流字典函数
  2. JSON文件加载 - 新增 load_workflow_json() 函数从文件加载工作流
  3. 通用参数修改器 - 新增 update_node_input() 函数动态修改节点参数
  4. 配置化管理 - 使用 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)

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 节点
    }
}

如何确定节点ID

  1. 打开 JSON 工作流文件
  2. 查找关键节点的数字ID(如 "22": { "class_type": "easy prompt" }
  3. 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 pydantic

依赖说明

  • fastapi: 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 启动。

📡 API 接口

1. /upload_to_comfy

将 Dify 临时图片链接转换为 ComfyUI 永久链接。

请求示例:

{
  "image_url": "/files/example.png"
}

响应示例:

{
  "permanent_url": "http://192.168.1.100:8188/view?filename=dify_upload_xxx.png&type=input"
}

2. /generate (重构)

文本生成图片,现在从 JSON 文件加载工作流。

请求示例:

{
  "positive_prompt": "A beautiful sunset over mountains",
  "width": 720,
  "height": 1280,
  "seed": -1
}

内部处理流程:

  1. 加载 Z_image.json 工作流 (对应 z_image 配置)
  2. 修改节点 22text 参数(提示词)
  3. 修改节点 4seed 参数(种子)
  4. 修改节点 7widthheight 参数(尺寸)
  5. 执行工作流,返回图片URL

3. /edit (重构)

图片编辑/图生图,现在从 JSON 文件加载工作流。

请求示例:

{
  "positive_prompt": "Add rainbow to sky",
  "image_url": "/files/uploaded.png",
  "seed": 123456
}

内部处理流程:

  1. 下载并上传图片到 ComfyUI
  2. 加载 image_qwen_image_edit_2511_GGUF.json 工作流 (对应 qwen_edit_2511 配置)
  3. 修改节点 78image 参数(图片文件名)
  4. 修改节点 435value 参数(提示词)
  5. 修改节点 460seed 参数(种子)
  6. 执行工作流,返回图片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

  1. 打开 JSON 文件查看节点ID
  2. 找到关键节点的数字ID
  3. NODE_MAP 中配置对应的ID

当前配置:

  • z_image: 对应 Z_image.json 文生图工作流
  • qwen_edit_2511: 对应 image_qwen_image_edit_2511_GGUF.json 图生图工作流

配置验证

启动时会自动检查:

  • 工作流目录是否存在
  • JSON 文件是否存在
  • 关键节点配置是否正确
  • z_imageqwen_edit_2511 配置是否完整

🧪 测试

运行重构版本测试

python test_refactored.py

测试内容

  1. ✅ 工作流文件检查
  2. ✅ 配置检查
  3. ✅ 服务健康检查
  4. ✅ 上传到ComfyUI
  5. ✅ 文生图功能
  6. ✅ 图片编辑功能

单独测试

# 测试配置
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()"

🔍 调试提示

常见问题排查

  1. 工作流加载失败

    • 检查 workflow/ 目录是否存在
    • 确认 JSON 文件名与配置匹配
    • 查看 JSON 文件格式是否正确
  2. 节点修改失败

    • 检查 NODE_MAP 中的节点ID是否正确
    • 确认节点在 JSON 文件中存在
    • 查看节点输入参数名称是否正确
  3. ComfyUI 连接失败

    • 检查 ComfyUI 是否运行 (http://127.0.0.1:8188)
    • 确认端口 8188 可访问
    • 查看防火墙设置
  4. 图片上传失败

    • 检查 Dify 服务是否运行
    • 确认 Dify 端口配置正确
    • 测试网络连接

日志查看

启动时会显示详细日志:

  • ✅ 工作流文件加载状态
  • 🔄 节点参数修改信息
  • 📤 任务提交和执行状态
  • ❌ 错误和警告信息

🐛 常见问题

Q1: 工作流文件找不到

问题: 未找到工作流文件: Z_image.json 解决:

  1. 确认文件在 workflow/ 目录中
  2. 检查文件名拼写是否正确
  3. 确认文件扩展名是 .json

Q2: 节点ID配置错误

问题: 警告: 节点 ID "22" 不存在于工作流中 解决:

  1. 打开 JSON 文件查看实际节点ID
  2. 更新 NODE_MAP 中对应配置 (z_imageqwen_edit_2511)
  3. 重启服务

Q3: 参数修改失败

问题: 节点参数未正确修改 解决:

  1. 检查节点输入参数名称
  2. 确认参数类型(字符串、数字等)
  3. 查看 JSON 文件中参数的原始值

Q4: ComfyUI 连接失败

问题: 无法连接 ComfyUI WebSocket 解决:

  1. 确认 ComfyUI 正在运行
  2. 检查 COMFY_SERVER_ADDRESS 配置
  3. 测试网络连接: curl http://127.0.0.1:8188

Q5: 图片上传失败

问题: 下载失败,状态码: 404 解决:

  1. 检查 Dify 图片URL是否正确
  2. 确认 Dify 服务可访问
  3. 检查 DIFY_PORT 配置

📝 更新日志

v3.0 (重大重构版本)

  • 删除硬编码字典 - 移除 get_z_image_workflow()get_edit_workflow() 函数
  • JSON文件加载 - 新增 load_workflow_json() 函数
  • 通用参数修改器 - 新增 update_node_input() 函数
  • 配置化管理 - 使用 NODE_MAP 管理节点映射
  • 自动文件检查 - 启动时验证工作流文件
  • 详细日志输出 - 改进调试信息

v2.0 (功能增强版本)

  • ✅ 新增 /upload_to_comfy 接口
  • ✅ 提取统一图片处理函数
  • ✅ 改进错误处理机制
  • ✅ 优化代码结构

v1.0 (初始版本)

  • ✅ 基础文生图功能
  • ✅ 基础图片编辑功能
  • ✅ WebSocket 连接管理

🔄 迁移指南

从 v2.0 迁移到 v3.0

  1. 移动工作流文件: 将 JSON 文件放入 workflow/ 目录
  2. 配置节点映射: 根据 JSON 文件配置 NODE_MAP (使用具体名称 z_imageqwen_edit_2511)
  3. 更新测试脚本: 使用 test_refactored.py 替代 test_new_features.py
  4. 验证配置: 运行测试确保所有功能正常

优势对比

特性 v2.0 (硬编码) v3.0 (JSON加载)
工作流修改 需要修改Python代码 只需编辑JSON文件
节点配置 硬编码在函数中 配置在 NODE_MAP
维护性 代码冗长,难维护 模块化,易维护
扩展性 添加新工作流需编码 添加新工作流只需在 NODE_MAP 中添加配置
命名规范 使用泛称 t2i/i2i 使用具体名称 z_image/qwen_edit_2511

📄 许可证

MIT License

About

图像数据智能生成平台

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages