☰
Python aigc-comfyui-tools 包概述与实战案例详解
2026/10/11 6:38:50 网站建设 项目流程

1. 引言

aigc-comfyui-tools 是一个面向 ComfyUI 工作流自动化的 Python 工具包,旨在帮助开发者通过 Python 脚本批量调用 ComfyUI 的 API 接口,实现文生图、图生图、模型加载、工作流参数调整、结果回传等常见 AIGC 任务。它把 ComfyUI 的 HTTP API 封装成简洁的 Python 接口,让开发者无需手动拼接请求,即可在本地脚本、服务端任务或自动化流水线中稳定调用 ComfyUI 能力。

本文将从功能特性、安装方式、核心语法与参数、9 个实际应用案例,以及常见错误与使用注意事项五个方面,系统介绍 aigc-comfyui-tools 的使用方法。

2. 功能概述

aigc-comfyui-tools 的核心功能可以概括为以下几类:

  • 工作流提交与执行:将 ComfyUI 工作流 JSON 提交到服务端,并跟踪执行状态。
  • 参数动态注入:在提交前修改工作流中的提示词、模型名称、采样步数、尺寸等参数。
  • 结果获取与保存:从执行结果中提取生成图片,并保存到本地或返回 Base64 数据。
  • 批量任务调度:支持循环提交多个任务,适合批量生成、批量测试场景。
  • 队列管理:查询当前队列状态、清空队列、中断任务等。
  • 节点输出读取:按节点 ID 读取中间结果,便于调试和分析。

3. 安装方法

aigc-comfyui-tools 通过 pip 安装,推荐使用虚拟环境隔离依赖。安装命令如下:

pip install aigc-comfyui-tools

如果需要升级到最新版本,可以使用:

pip install --upgrade aigc-comfyui-tools

安装完成后,可以通过以下方式验证是否安装成功:

import comfyui_tools print(comfyui_tools.__version__)

如果希望从源码安装,可以克隆仓库后执行:

git clone https://github.com/your-repo/aigc-comfyui-tools.git cd aigc-comfyui-tools pip install -e .

4. 核心语法与参数

使用 aigc-comfyui-tools 的基本流程是:创建客户端、加载工作流、修改参数、提交任务、等待结果。下面介绍核心类和常用参数。

4.1 客户端初始化

客户端是访问 ComfyUI 服务端的入口,需要指定服务端地址和端口:

from comfyui_tools import ComfyUIClient client = ComfyUIClient( base_url="http://127.0.0.1:8188", timeout=60 )

主要参数说明:

参数名类型说明
base_urlstrComfyUI 服务端地址,默认 http://127.0.0.1:8188
timeoutint请求超时时间,单位秒,默认 60
max_retriesint请求失败时的最大重试次数,默认 3

4.2 工作流加载与参数注入

工作流可以从 JSON 文件加载,也可以直接传入字典对象。参数注入通过节点 ID 定位并修改对应字段:

workflow = client.load_workflow("workflow.json") client.set_node_param(workflow, node_id="3", param_name="text", param_value="a cute cat") client.set_node_param(workflow, node_id="4", param_name="seed", param_value=42) client.set_node_param(workflow, node_id="5", param_name="steps", param_value=30)

常用方法参数说明:

方法参数说明
load_workflowpath工作流 JSON 文件路径
set_node_paramworkflow, node_id, param_name, param_value按节点 ID 修改指定参数
get_node_paramworkflow, node_id, param_name读取节点指定参数值

4.3 任务提交与结果获取

提交任务后返回任务 ID,通过任务 ID 轮询执行状态并获取结果:

task_id = client.submit_workflow(workflow) result = client.wait_for_result(task_id, timeout=120) images = result.get("images", []) for img in images: client.save_image(img, output_dir="outputs")

wait_for_result 返回的 result 字典包含生成图片的元数据,save_image 支持保存到本地目录或返回 Base64 字符串。

5. 9 个实际应用案例

案例 1:文生图基础调用

使用默认工作流生成一张猫的图片,并保存到本地:

from comfyui_tools import ComfyUIClient client = ComfyUIClient(base_url="http://127.0.0.1:8188") workflow = client.load_workflow("txt2img.json") client.set_node_param(workflow, "3", "text", "a cute orange cat") client.set_node_param(workflow, "4", "seed", 12345) task_id = client.submit_workflow(workflow) result = client.wait_for_result(task_id) for img in result["images"]: client.save_image(img, "outputs/cat.png") print("生成完成")

案例 2:图生图处理

加载本地图片作为输入,通过图生图工作流生成风格化版本:

from comfyui_tools import ComfyUIClient client = ComfyUIClient() workflow = client.load_workflow("img2img.json") client.set_node_param(workflow, "1", "image", "input/photo.jpg") client.set_node_param(workflow, "3", "text", "watercolor style") client.set_node_param(workflow, "4", "denoise", 0.6) task_id = client.submit_workflow(workflow) result = client.wait_for_result(task_id) client.save_image(result["images"][0], "outputs/watercolor.png")

案例 3:批量生成多张图片

循环修改种子和提示词,批量生成 5 张不同风格的图片:

from comfyui_tools import ComfyUIClient client = ComfyUIClient() workflow = client.load_workflow("txt2img.json") prompts = ["sunset beach", "mountain lake", "city night", "forest fog", "desert dunes"] for i, prompt in enumerate(prompts): client.set_node_param(workflow, "3", "text", prompt) client.set_node_param(workflow, "4", "seed", 1000 + i) task_id = client.submit_workflow(workflow) result = client.wait_for_result(task_id) client.save_image(result["images"][0], f"outputs/batch_{i}.png") print(f"第 {i+1} 张生成完成")

案例 4:动态调整采样参数

通过修改 steps、cfg 和 sampler 参数,对比不同采样配置的效果:

from comfyui_tools import ComfyUIClient client = ComfyUIClient() workflow = client.load_workflow("txt2img.json") configs = [ {"steps": 20, "cfg": 7.0, "sampler": "euler"}, {"steps": 30, "cfg": 8.0, "sampler": "dpmpp_2m"}, {"steps": 40, "cfg": 9.0, "sampler": "uni_pc"}, ] for idx, cfg in enumerate(configs): client.set_node_param(workflow, "4", "steps", cfg["steps"]) client.set_node_param(workflow, "4", "cfg", cfg["cfg"]) client.set_node_param(workflow, "4", "sampler_name", cfg["sampler"]) task_id = client.submit_workflow(workflow) result = client.wait_for_result(task_id) client.save_image(result["images"][0], f"outputs/sampler_{idx}.png")

案例 5:读取中间节点输出

在调试工作流时,读取某个中间节点的输出结果:

from comfyui_tools import ComfyUIClient client = ComfyUIClient() workflow = client.load_workflow("debug_workflow.json") task_id = client.submit_workflow(workflow) result = client.wait_for_result(task_id) 读取节点 ID 为 10 的中间输出 node_output = client.get_node_output(result, node_id="10") print("中间节点输出:", node_output)

案例 6:队列状态查询与清理

查询当前队列状态,并在必要时清空队列:

from comfyui_tools import ComfyUIClient client = ComfyUIClient() queue_info = client.get_queue_status() print("当前队列:", queue_info) 清空队列 client.clear_queue() print("队列已清空")

案例 7:中断当前任务

当任务执行时间过长或需要紧急停止时,可以中断当前任务:

from comfyui_tools import ComfyUIClient client = ComfyUIClient() workflow = client.load_workflow("txt2img.json") task_id = client.submit_workflow(workflow) 模拟等待一段时间后中断 import time time.sleep(5) client.interrupt_task() print("任务已中断")

案例 8:批量处理多张输入图片

遍历本地目录中的多张图片,逐张进行图生图处理:

import os from comfyui_tools import ComfyUIClient client = ComfyUIClient() workflow = client.load_workflow("img2img.json") input_dir = "inputs" output_dir = "outputs" os.makedirs(output_dir, exist_ok=True) for filename in os.listdir(input_dir): if not filename.endswith((".jpg", ".png")): continue input_path = os.path.join(input_dir, filename) client.set_node_param(workflow, "1", "image", input_path) client.set_node_param(workflow, "3", "text", "anime style") task_id = client.submit_workflow(workflow) result = client.wait_for_result(task_id) out_name = f"anime_{filename}" client.save_image(result["images"][0], os.path.join(output_dir, out_name)) print(f"已处理 {filename}")

案例 9:结合随机种子生成创意图片

使用随机种子和多样化提示词,生成一组创意图片用于灵感收集:

import random from comfyui_tools import ComfyUIClient client = ComfyUIClient() workflow = client.load_workflow("txt2img.json") style_keywords = ["cyberpunk", "steampunk", "minimalist", "surreal", "vintage"] for i in range(10): style = random.choice(style_keywords) subject = random.choice(["robot", "city", "forest", "ocean", "space"]) prompt = f"{style} {subject}, highly detailed" seed = random.randint(1, 999999) client.set_node_param(workflow, "3", "text", prompt) client.set_node_param(workflow, "4", "seed", seed) task_id = client.submit_workflow(workflow) result = client.wait_for_result(task_id) client.save_image(result["images"][0], f"outputs/creative_{i}.png") print(f"生成创意图片 {i+1}: {prompt}")</code></pre> 6. 常见错误与使用注意事项 6.1 常见错误 错误类型 可能原因 解决方法 ConnectionError ComfyUI 服务未启动或地址错误 确认服务端地址和端口正确,检查服务是否运行 TimeoutError 任务执行时间超过 timeout 设置 增大 timeout 参数,或检查工作流是否过于复杂 KeyError 节点 ID 或参数名不存在 核对工作流 JSON 中的节点 ID 和参数名 FileNotFoundError 工作流文件或输入图片路径错误 检查文件路径是否存在,使用绝对路径更稳妥 JSONDecodeError 工作流 JSON 格式错误 用 JSON 校验工具检查工作流文件格式 6.2 使用注意事项 服务端必须先行启动:调用任何接口前,确保 ComfyUI 服务端已启动并监听对应端口。 工作流 JSON 结构要熟悉:修改参数前,先查看工作流 JSON 中节点的 ID 和字段名,避免误改。 合理设置超时时间:复杂工作流或高分辨率生成耗时较长,建议将 timeout 设置为 120 秒以上。 注意资源占用:批量任务会占用大量 GPU 和内存,建议控制并发数量,避免服务端崩溃。 图片保存路径:保存图片时确保输出目录存在,否则会报错。 版本兼容性:不同版本的 ComfyUI API 可能有差异,建议保持 aigc-comfyui-tools 与 ComfyUI 版本匹配。 错误重试机制:网络波动时,客户端会自动重试,但重试次数过多会拖慢任务,建议根据实际情况调整 max_retries。 7. 总结 aigc-comfyui-tools 为 Python 开发者提供了一套简洁、稳定的 ComfyUI 调用方案。通过本文介绍的功能、安装方式、核心语法与参数,以及 9 个实际案例,读者可以快速上手并应用到自己的 AIGC 项目中。在实际使用中,注意服务端状态、工作流结构、超时设置和资源管理,就能稳定高效地完成批量生成、参数调优和自动化处理等任务。

《AI提示工程必知必会》为读者提供了丰富的AI提示工程知识与实战技能,主要包括各类提示词的应用,如问答式、指令式、状态类、建议式、安全类和感谢类提示词,以及如何通过实战演练掌握提示词的使用技巧;使用提示词进行文本摘要、改写重述、语法纠错、机器翻译等语言处理任务,以及在数据挖掘、程序开发等领域的应用;AI在绘画创作上的应用,百度文心一言和阿里通义大模型这两大智能平台的特性与功能,以及市场调研中提示词的实战应用。通过阅读《AI提示工程必知必会》,读者可掌握如何有效利用AI提示工程提升工作效率,创新工作流程,并在职场中脱颖而出。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询