🐰 白兔AI

ComfyUI API调用指南:程序化控制AI绘画工作流

发布日期:2025-05-03 | 作者:白兔AI | 阅读时间:约8分钟

🐰 关注公众号「白兔AI」

白兔AI公众号二维码

扫码关注公众号,获取更多AI绘画教程和提示词

✨ 白兔去水印小程序

白兔去水印小程序码

免费去水印工具,一键去除图片/视频水印

一、ComfyUI API概述

ComfyUI内置了强大的API接口,允许开发者通过HTTP请求来控制和执行工作流。这意味着你可以将ComfyUI集成到自己的应用程序、网站或自动化流程中,实现完全程序化的AI绘画生成。

二、启用API模式

ComfyUI默认在启动时就启用了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应用场景

九、API安全考虑

十、常见问题

Q: API返回404?

A: 检查ComfyUI是否正确启动,端口是否开放。

Q: 工作流执行失败?

A: 检查JSON格式是否正确,节点ID是否匹配,模型文件是否存在。

Q: 如何获取节点ID?

A: 在ComfyUI界面中导出API格式JSON,其中的数字键就是节点ID。

十一、总结

ComfyUI的API为开发者提供了强大的程序化控制能力。通过API,你可以将ComfyUI从一个本地工具转变为可集成、可扩展的AI绘画服务平台。无论是构建商业应用还是个人自动化流程,掌握ComfyUI API都是非常有价值的技能。

← 返回博客首页