ComfyUI API调用指南:程序化控制AI绘画工作流
发布日期:2025-05-03 | 作者:白兔AI | 阅读时间:约8分钟
🐰 关注公众号「白兔AI」
扫码关注公众号,获取更多AI绘画教程和提示词
✨ 白兔去水印小程序
免费去水印工具,一键去除图片/视频水印
一、ComfyUI API概述
ComfyUI内置了强大的API接口,允许开发者通过HTTP请求来控制和执行工作流。这意味着你可以将ComfyUI集成到自己的应用程序、网站或自动化流程中,实现完全程序化的AI绘画生成。
二、启用API模式
ComfyUI默认在启动时就启用了API服务:
- API地址:http://127.0.0.1:8188
- WebSocket用于实时进度推送
- REST API用于提交任务和获取结果
启动参数:
python main.py --listen 0.0.0.0 --port 8188
--listen 0.0.0.0 允许外部访问(默认仅本地)
三、API基本调用流程
1. 获取工作流JSON
在ComfyUI界面中搭建好工作流,点击Save按钮保存为API格式JSON。
2. 提交任务
向 /prompt 端点POST工作流JSON:
POST http://127.0.0.1:8188/prompt
Content-Type: application/json
{
"prompt": {工作流JSON},
"client_id": "唯一标识符"
}
3. 获取结果
通过WebSocket连接接收实时进度,或轮询 /history 端点获取结果。
四、Python调用示例
import json
import urllib.request
import websocket
def queue_prompt(prompt_workflow):
p = {"prompt": prompt_workflow, "client_id": "test_client"}
data = json.dumps(p).encode('utf-8')
req = urllib.request.Request(
"http://127.0.0.1:8188/prompt",
data=data,
headers={'Content-Type': 'application/json'}
)
return json.loads(urllib.request.urlopen(req).read())
# 加载工作流
with open("workflow.json", "r") as f:
workflow = json.load(f)
# 修改提示词
workflow["6"]["inputs"]["text"] = "a beautiful sunset"
# 提交任务
response = queue_prompt(workflow)
print(f"任务ID: {response['prompt_id']}")
五、动态修改工作流
通过API提交前,可以程序化修改工作流参数:
修改提示词:
workflow["节点ID"]["inputs"]["text"] = "新的提示词"
修改图像尺寸:
workflow["节点ID"]["inputs"]["width"] = 1024 workflow["节点ID"]["inputs"]["height"] = 1024
修改种子:
workflow["节点ID"]["inputs"]["seed"] = 12345
更换模型:
workflow["节点ID"]["inputs"]["ckpt_name"] = "model.safetensors"
六、WebSocket实时进度
import websocket
import json
def on_message(ws, message):
data = json.loads(message)
if data['type'] == 'progress':
print(f"进度: {data['data']['value']}/{data['data']['max']}")
elif data['type'] == 'executing':
print(f"正在执行节点: {data['data']['node']}")
elif data['type'] == 'execution_start':
print("开始执行")
ws = websocket.WebSocketApp(
"ws://127.0.0.1:8188/ws?clientId=test_client",
on_message=on_message
)
ws.run_forever()
七、获取生成结果
方法1:通过history端点
GET http://127.0.0.1:8188/history/{prompt_id}
方法2:直接访问文件
生成的图像保存在output目录,可以通过文件名直接访问。
方法3:通过view端点
GET http://127.0.0.1:8188/view?filename=image.png&subfolder=output&type=output
八、API应用场景
- Web应用集成:将AI绘画功能嵌入网站
- 批量自动化:无人值守批量生成内容
- 工作流编排:与其他AI工具链组合
- 远程控制:在服务器上运行ComfyUI,本地调用API
- 移动应用:为App提供后端AI绘画服务
九、API安全考虑
- 生产环境使用HTTPS
- 添加API密钥验证
- 限制请求频率防止滥用
- 设置生成内容审核机制
- 监控资源使用情况
十、常见问题
Q: API返回404?
A: 检查ComfyUI是否正确启动,端口是否开放。
Q: 工作流执行失败?
A: 检查JSON格式是否正确,节点ID是否匹配,模型文件是否存在。
Q: 如何获取节点ID?
A: 在ComfyUI界面中导出API格式JSON,其中的数字键就是节点ID。
十一、总结
ComfyUI的API为开发者提供了强大的程序化控制能力。通过API,你可以将ComfyUI从一个本地工具转变为可集成、可扩展的AI绘画服务平台。无论是构建商业应用还是个人自动化流程,掌握ComfyUI API都是非常有价值的技能。
← 返回博客首页