9.6 KiB
9.6 KiB
🎨 ComfyUI API 配置使用指南
📋 目录
🚀 快速开始
1. 准备工作
确保你已经:
- ✅ 安装了 ComfyUI(本地或 Docker)
- ✅ ComfyUI 正在运行并监听
0.0.0.0:8188 - ✅ 下载了至少一个 checkpoint 模型文件
2. 访问 API 配置页面
- 打开应用
- 点击左侧边栏的"⚙️ API配置"
- 选择"🎨 生图"标签
📁 工作流管理
默认工作流
系统已预装一个标准的文生图工作流:
- 文件位置:
backend/data/comfyui_workflows/default_txt2img.json - 格式:ComfyUI API Format(标准 JSON)
- 节点数:7个(KSampler、CheckpointLoader、EmptyLatentImage、CLIPTextEncode x2、VAEDecode、SaveImage)
工作流结构
{
"3": {
"inputs": {
"seed": 0,
"steps": 20,
"cfg": 8,
"sampler_name": "euler",
...
},
"class_type": "KSampler",
"_meta": {
"title": "K采样器"
}
},
...
}
关键字段:
class_type: 节点类型inputs: 节点参数_meta.title: 节点显示名称(可选)
上传自定义工作流
步骤 1: 在 ComfyUI 中设计工作流
- 打开 ComfyUI Web UI (
http://localhost:8188) - 拖拽节点,搭建你的工作流
- 连接节点之间的数据流
- 配置节点参数(模型、提示词、采样器等)
- 点击 "Queue Prompt" 测试是否能正常生成图像
步骤 2: 导出 API 格式的 JSON
- 点击顶部菜单栏的 "工作流" (Workflow)
- 选择 "导出(API)" (Export API) 或 "Save (API Format)"
- 浏览器会自动下载
workflow_api.json文件
重要提示:
- ⚠️ 必须使用 "Save (API Format)",而不是普通的 "Save"
- ⚠️ API 格式的 JSON 包含节点 ID 和连接关系,是 API 调用的核心
步骤 3: 上传到本项目
- 在本项目的 API 配置页面
- 滚动到"ComfyUI 工作流管理"区域
- 点击 "+ 导入工作流" 按钮
- 选择刚才导出的 JSON 文件
- 看到"上传成功"提示
验证上传
上传成功后,你会在工作流列表中看到:
- 文件名(例如:
my_custom_workflow.json) - 节点数量
- 文件大小
删除工作流
- 在工作流列表中找到要删除的工作流
- 点击右侧的 🗑️ 删除按钮
- 确认删除
注意:
- ❌
default_txt2img.json不可删除(受保护) - ✅ 其他所有工作流都可以删除
⚙️ API 配置
本地 ComfyUI 模式
配置项
| 字段 | 说明 | 示例值 |
|---|---|---|
| API 地址 | ComfyUI 的服务地址 | http://comfyui:8188 (Docker)http://localhost:8188 (本地) |
| 启用 WebSocket | 是否使用 WebSocket 监听进度 | ✓ / ✗ |
| 队列超时 | 等待生成的最大时间(秒) | 300 (5分钟) |
| 默认工作流 | 使用的预设工作流文件 | default_txt2img.json |
Docker 环境配置
如果使用 Docker Compose:
# docker-compose.yml
services:
comfyui:
image: ghcr.io/comfyanonymous/comfyui:latest
ports:
- "8188:8188"
networks:
- ai-network
command: --listen 0.0.0.0 --port 8188
llm-workflow-engine:
# ...
networks:
- ai-network
API 地址填写:http://comfyui:8188(Docker 内部网络 DNS)
本地运行配置
如果 ComfyUI 运行在宿主机:
# 启动 ComfyUI
python main.py --listen 0.0.0.0 --port 8188
API 地址填写:http://localhost:8188
在线 API 模式
支持的提供商
-
DALL-E (OpenAI)
- 模型:
dall-e-3,dall-e-2 - 质量:最高
- 价格:较贵
- 模型:
-
Stable Diffusion (Stability AI)
- 模型:
sd-xl-1024,sd-2-1 - 质量:高
- 价格:中等
- 模型:
配置项
| 字段 | 说明 | 示例值 |
|---|---|---|
| 服务提供商 | 选择 API 提供商 | DALL-E / Stability AI |
| API Key | 你的 API 密钥 | sk-... |
| 模型 | 选择具体模型 | dall-e-3 |
获取 API Key
DALL-E:
- 访问 https://platform.openai.com/
- 注册/登录账号
- 进入 API Keys 页面
- 创建新的 Secret Key
- 复制并粘贴到配置中
Stability AI:
- 访问 https://platform.stability.ai/
- 注册/登录账号
- 进入 API Keys 页面
- 创建新的 Key
- 复制并粘贴到配置中
🔌 测试连接
测试 ComfyUI 连接
- 填写 API 地址
- 点击"测试连接"按钮
- 查看结果
成功响应:
{
"success": true,
"message": "连接成功",
"stats": {
"vram_total": 25769803776,
"vram_free": 24696061952,
"torch_version": "2.1.0+cu121",
"device": "cuda"
}
}
失败响应:
{
"success": false,
"message": "无法连接到 ComfyUI,请检查地址和端口"
}
测试云端 API 连接
- 填写 API Key
- 选择模型
- 点击"测试连接"按钮
- 查看结果
成功响应:
{
"success": true,
"message": "连接成功,模型 dall-e-3 可用"
}
失败响应:
{
"success": false,
"message": "连接失败: Invalid API key"
}
💾 保存配置
保存流程
- 完成所有配置后
- 点击底部的"保存配置"按钮
- 在弹出的对话框中勾选要保存的配置
- 点击"保存选中的配置"
配置文件存储
- 位置:
backend/data/apiconfig/ - 格式:JSON
- 加密:API Key 使用 Fernet 加密存储
加载配置
- 从下拉框选择已保存的配置文件
- 自动加载所有配置
- 可以修改后重新保存
❓ 常见问题
Q1: 上传工作流时提示"Invalid ComfyUI workflow"
原因:上传的不是 API 格式的 JSON
解决:
- 在 ComfyUI 中使用 "Save (API Format)" 导出
- 不要使用普通的 "Save" 功能
- 确保 JSON 包含节点定义(有
class_type字段)
Q2: 测试连接时提示"Connection refused"
可能原因:
- ComfyUI 未启动
- 地址或端口错误
- Docker 网络配置问题
解决:
# 检查 ComfyUI 是否运行
curl http://localhost:8188/system_stats
# Docker 环境下
docker ps | grep comfyui
docker logs comfyui
# 确认监听地址
docker exec comfyui netstat -tlnp | grep 8188
# 应该看到: 0.0.0.0:8188
Q3: 工作流中的提示词会被替换吗?
是的!后端会自动:
- 加载工作流 JSON
- 找到第一个
CLIPTextEncode节点 - 将其
text字段替换为用户输入的提示词 - 发送到 ComfyUI
示例:
// 工作流中的原始提示词
"6": {
"inputs": {
"text": "beautiful scenery nature glass bottle landscape..."
}
}
// 运行时会被替换为
"6": {
"inputs": {
"text": "用户输入的提示词,例如:画一只猫"
}
}
Q4: 如何添加 LoRA 或 ControlNet?
方法 1: 在 ComfyUI 中添加节点
- 在 ComfyUI Web UI 中加载 LoRA Loader 或 ControlNet 节点
- 连接到工作流
- 配置参数
- 导出为 API 格式
- 上传到本项目
方法 2: 手动编辑 JSON
"10": {
"inputs": {
"lora_name": "cyberpunk_style.safetensors",
"strength_model": 0.7,
"strength_clip": 0.7,
"model": ["4", 0],
"clip": ["4", 1]
},
"class_type": "LoraLoader"
}
Q5: 支持批量生图吗?
当前版本不支持批量生图,但可以通过以下方式实现:
方案 A: 多次调用
for prompt in prompts:
result = generate_image(prompt, config)
save_result(result)
方案 B: ComfyUI 批量节点 在工作流中使用 Batch Size > 1:
"5": {
"inputs": {
"width": 512,
"height": 512,
"batch_size": 4 // 一次生成4张
}
}
Q6: 如何优化生图速度?
本地 ComfyUI:
- 使用更快的采样器(如
euler_ancestral) - 减少步数(Steps: 15-20)
- 降低分辨率(512x512 而非 1024x1024)
- 使用 GPU 加速
云端 API:
- 选择更快的模型(DALL-E 2 比 DALL-E 3 快)
- 使用较小的尺寸
- 考虑付费套餐(更高的优先级)
📊 工作流示例
基础文生图
{
"3": {"class_type": "KSampler", ...},
"4": {"class_type": "CheckpointLoaderSimple", ...},
"5": {"class_type": "EmptyLatentImage", ...},
"6": {"class_type": "CLIPTextEncode", ...},
"7": {"class_type": "CLIPTextEncode", ...},
"8": {"class_type": "VAEDecode", ...},
"9": {"class_type": "SaveImage", ...}
}
带 LoRA 的文生图
额外添加:
"10": {
"class_type": "LoraLoader",
"inputs": {
"lora_name": "style.safetensors",
"strength_model": 0.7,
"model": ["4", 0],
"clip": ["4", 1]
}
}
图生图
需要添加:
"10": {
"class_type": "LoadImage",
"inputs": {
"image": "reference.png"
}
},
"11": {
"class_type": "VAEEncode",
"inputs": {
"pixels": ["10", 0],
"vae": ["4", 2]
}
}
🔗 相关资源
- ComfyUI 官方文档: https://github.com/comfyanonymous/ComfyUI
- ComfyUI API 示例: https://github.com/zer0Black/ComfyUI-Api-Demo
- 工作流分享社区: https://comfyworkflows.com/
- 模型下载: https://civitai.com/
📝 更新日志
v1.0.0 (2026-04-28)
- ✅ 初始版本发布
- ✅ 支持 ComfyUI 本地部署
- ✅ 支持云端 API(DALL-E、Stability AI)
- ✅ 工作流管理(上传、删除、列表)
- ✅ 连接测试功能
- ✅ 默认工作流模板
如有问题,请查看日志或联系开发者!