ComfyUI LLM节点实战:用大语言模型智能驱动AI绘画工作流
1. 项目概述:当AI绘画遇上大语言模型
最近在玩ComfyUI,一个节点式的Stable Diffusion工作流工具,自由度极高,但配置起来也相当“硬核”。相信很多朋友和我一样,在搭建复杂工作流时,常常会想:要是能像聊天一样告诉AI“我想要一个赛博朋克风格的城市夜景,主角是个穿着发光风衣的少女,背景要有巨大的全息广告牌”,然后它就能自动帮我调整好提示词、LoRA模型、采样器参数,甚至规划出生成步骤,那该多省事。
这正是
heshengtao/comfyui_LLM_party
这个项目试图解决的问题。它不是一个独立的软件,而是一组为ComfyUI设计的自定义节点(Custom Nodes)。其核心目标,是将大语言模型(LLM)的“理解”与“规划”能力,无缝嵌入到ComfyUI的视觉生成流程中。简单来说,它让LLM成为了你ComfyUI工作流中的一名“智能助理”或“流程规划师”。
想象一下,你不再需要手动串联几十个节点,反复调试参数。你只需要用自然语言描述你的想法,LLM节点就能解析你的意图,自动生成或优化提示词(Prompt),甚至调用合适的模型和参数,驱动下游的图像生成节点。这对于创意工作者、游戏开发者、内容创作者而言,意味着创意到成品的路径被极大地缩短了。项目名中的“Party”非常形象,它暗示了这是一场LLM与ComfyUI中各种图像生成节点的“狂欢派对”,让它们能够协同工作。
这个项目适合所有已经熟悉ComfyUI基础操作,并希望进一步提升工作流自动化程度和创意表达效率的用户。无论你是想批量生成风格统一的素材,还是探索“文生图”提示词的无限可能,亦或是构建更复杂的、具备条件判断能力的AI绘画流水线,
comfyui_LLM_party
都提供了一个极具潜力的工具箱。
2. 核心架构与工作原理拆解
要理解如何使用
comfyui_LLM_party
,首先得弄明白它是如何让LLM和ComfyUI“对话”的。这并非简单的API调用,而是一套精心设计的、基于节点逻辑的集成方案。
2.1 节点化LLM交互的核心思想
ComfyUI的一切都是节点。一个节点有输入端口,有输出端口,数据像流水一样在节点间传递。
comfyui_LLM_party
项目将LLM也封装成了这样的节点。这些节点的主要输入通常是“系统提示词”(System Prompt)、“用户提问”(User Input)以及“LLM模型配置”;输出则是LLM返回的文本结果。
关键在于,这个文本结果可以被设计成任何结构化的内容。例如:
-
一段优化后的英文提示词
:直接输出给
CLIP Text Encode节点。 -
一个JSON对象
:包含
positive_prompt(正面提示词)、negative_prompt(负面提示词)、steps(采样步数)、cfg_scale(提示词相关性)等多个字段。下游可以用String操作节点或专门的解析节点来提取这些值。 -
一个决策指令
:比如“使用
dreamshaper模型,强度0.8”,这个指令可以被另一个节点解析并动态加载对应的LoRA模型。
这种设计使得LLM不再是一个孤立的聊天窗口,而是变成了工作流中一个可编程、可数据驱动的“处理单元”。它的输出能直接作为其他图像生成节点的输入参数,从而实现了从自然语言到图像生成参数的自动化转换。
2.2 项目组件与功能模块解析
comfyui_LLM_party
项目通常包含以下几类核心节点,理解它们各自的分工是构建高效工作流的基础:
-
LLM客户端节点 :这是与LLM服务通信的核心。它需要配置后端服务的地址(如本地运行的Ollama、OpenAI兼容的API端点如LM Studio、或直接使用OpenAI API)和模型名称。这个节点负责发送请求并接收原始的LLM响应。你需要根据自己使用的LLM服务来正确配置该节点的参数。
-
提示词工程节点 :这类节点专注于处理和优化提示词。例如:
- 提示词优化/扩展节点 :输入一个简单的想法(如“一只可爱的猫”),LLM会将其扩展为一段丰富、详细、符合Stable Diffusion理解的描述(如“a photorealistic close-up of an adorable fluffy orange tabby cat with bright green eyes, sitting on a sunlit windowsill, detailed fur, cinematic lighting, bokeh background”)。
- 风格转换节点 :输入一个描述和一种风格(如“赛博朋克”、“水墨画”),LLM会重写提示词以融入该风格元素。
- 提示词解析与拆分节点 :LLM可以将一段复杂的描述,解析成主体、背景、风格、光影等不同部分,分别输出,方便进行更精细的控制。
-
工作流逻辑控制节点 :这是更高级的应用。LLM可以根据中间生成的图像结果或用户反馈,动态决定下一步该执行哪个分支的工作流。例如,先生成一张草图,让LLM“看”(通过图像描述节点将图片转为文本描述),然后让LLM判断“是否需要增加更多细节”或“颜色是否饱和”,并根据判断结果跳转到不同的细化处理节点链。
-
工具调用节点 :一些实验性节点可能允许LLM调用ComfyUI内部或其他工具的函数。例如,LLM在分析需求后,可以“决定”并“调用”一个“放大图片(upscale)”的节点流程。
注意 :项目的具体节点名称和功能会随着版本更新而变化。最准确的做法是安装后,在ComfyUI的节点浏览器中搜索“LLM”或“Party”来查看所有可用节点,并阅读其悬浮提示信息。
2.3 本地部署与云端API的选型考量
使用
comfyui_LLM_party
前,你必须有一个LLM服务后端。这里主要有两条路径:
-
本地部署(推荐用于隐私和高速实验) :
- 工具 :使用 Ollama 或 LM Studio 。它们能方便地在本地电脑上运行各类开源大模型(如Llama 3、Qwen、Mistral等)。
- 优点 :完全离线,数据隐私有保障;没有网络延迟;没有使用费用。
- 缺点 :对电脑硬件(尤其是GPU显存)要求高;模型能力受限于本地可运行的模型大小。
-
配置
:在
comfyui_LLM_party的LLM客户端节点中,API地址通常填写http://localhost:11434(Ollama默认) 或http://localhost:1234(LM Studio默认)。
-
云端API(推荐用于需要最强模型能力的场景) :
- 服务 :OpenAI的GPT系列、Anthropic的Claude、或国内的一些大模型API服务。
- 优点 :可以直接使用顶尖的模型(如GPT-4),理解、推理和指令跟随能力通常更强;无需本地算力。
- 缺点 :有使用成本;依赖网络;提示词和生成内容会发送到第三方服务器。
- 配置 :在节点中填入对应的API Base URL和API Key。
实操心得
:对于初学者或主要进行提示词优化的场景,我强烈建议从本地部署开始。例如,使用Ollama拉取一个7B参数左右的模型(如
llama3:8b
或
qwen2.5:7b
),它在大多数消费级显卡上都能流畅运行,并且对于文本理解和改写任务已经足够出色。这能让你快速体验整个流程,而不必担心费用问题。当你需要处理非常复杂的逻辑或需要顶尖的创意写作能力时,再考虑切换至云端GPT-4等模型。
3. 从零开始:安装与基础工作流搭建
让我们抛开理论,动手搭建一个最简单的、能用自然语言生成图片的工作流。这里假设你已经在电脑上安装好了ComfyUI。
3.1 环境准备与节点安装
-
安装ComfyUI管理器 :如果你还没有安装,这是管理自定义节点的最佳工具。进入你的ComfyUI根目录,打开
custom_nodes文件夹,在此处打开终端(命令行),执行:git clone https://github.com/ltdrdata/ComfyUI-Manager.git重启ComfyUI,界面上就会出现“Manager”的按钮。
-
安装
comfyui_LLM_party节点 :- 方法一(通过管理器,最简单) :点击“Manager”,进入“Install Custom Nodes”标签页,在搜索框中输入“LLM party”,找到它并点击“Install”。安装完成后,重启ComfyUI。
-
方法二(手动安装)
:进入
custom_nodes文件夹,在终端执行:
然后重启ComfyUI。git clone https://github.com/heshengtao/comfyui_LLM_party.git
-
部署LLM后端服务 :以Ollama为例。
- 前往Ollama官网下载并安装。
-
打开终端(或Ollama应用),拉取一个模型,例如:
(这个3B参数的模型对硬件要求极低,适合首次测试。)ollama pull llama3.2:3b -
运行模型服务:
服务会启动在ollama run llama3.2:3bhttp://localhost:11434。
3.2 构建你的第一个“语言驱动绘图”工作流
现在,打开ComfyUI,我们创建一个最小可行的工作流。
-
添加LLM客户端节点 :在节点添加界面,搜索“LLM”或“Ollama”,你应该能找到类似
OllamaLLM或LLMClient的节点。将其拖入画布。-
base_url: 填写http://localhost:11434 -
model: 填写你拉取的模型名,如llama3.2:3b
-
-
设计系统提示词 :这是引导LLM行为的关键。我们需要告诉LLM它现在是一个“Stable Diffusion提示词专家”。添加一个
String节点(或直接在LLM节点的system_prompt输入框里写),内容可以如下:你是一个专业的AI绘画提示词生成器。用户会给你一个简单的概念或描述,你需要将其扩展为一段详细、生动、包含丰富视觉元素的英文描述,适合用于Stable Diffusion文本到图像生成。只输出扩展后的提示词,不要有任何额外的解释、问候语或标记。将这个字符串连接到LLM节点的
system_prompt输入口。 -
输入你的创意 :添加另一个
String节点,输入你的简单想法,例如:“a fantasy castle in the clouds”。连接到LLM节点的user_input或prompt输入口。 -
连接图像生成管线 :
-
从LLM节点的
response输出口拉出连线,连接到一个CLIP Text Encode节点的text输入口。这个节点会将LLM生成的文本编码成Stable Diffusion能理解的向量。 -
按照标准的文生图流程,继续连接
Checkpoint Loader(加载你的大模型,如SDXL)、KSampler(采样器)、VAE Decoder等节点。 -
将
CLIP Text Encode输出的conditioning连接到KSampler的positive输入。
-
从LLM节点的
-
执行与查看 :点击“Queue Prompt”。你会看到LLM节点先亮起,表示它正在与Ollama服务通信,将你的简单描述优化成一段详细提示词。然后,图像生成管线开始工作,最终输出一张根据LLM优化后的提示词生成的“云端奇幻城堡”图片。
第一个工作流示意图(文本描述) :
[用户输入:“a fantasy castle in the clouds”] --> (String节点)
|
[系统提示词:“你是一个专业的AI绘画提示词生成器...”] --> (String节点)
|
v
[OllamaLLM节点]
|
v (response)
[CLIP Text Encode节点]
|
v (conditioning)
[KSampler] -> ... -> [VAE Decoder] -> [Save Image]
这个基础工作流验证了整个链路的可行性: 自然语言 -> LLM理解与扩展 -> 专业化提示词 -> 图像生成 。
3.3 核心参数配置与解析
在基础工作流能跑通后,我们需要优化LLM节点的参数以获得更稳定、更符合预期的输出。
-
temperature(温度) :控制LLM输出的随机性。值越低(如0.1-0.3),输出越确定、保守,重复执行得到相似提示词的概率高。值越高(如0.7-0.9),输出越有创意、多样化,但可能偏离核心指令。 对于提示词生成,我通常设置在0.5-0.7之间,以平衡一致性和创造性。 -
max_tokens(最大令牌数) :限制LLM返回文本的最大长度。生成提示词一般不需要太长,设为300-500足够。设置过低会截断输出,导致提示词不完整。 -
system_prompt(系统提示词) :这是最重要的“方向盘”。你需要非常清晰地定义LLM的角色和任务。例如,如果你想让它生成带有特定艺术家风格的提示词,可以写:“你是一个艺术史专家,擅长用不同画派风格描述场景。用户给出一个主题,你用 [主题],[艺术家风格] 的格式输出提示词,风格从梵高、莫奈、赛博朋克插画中选取。” -
stop_sequences(停止序列) :可以设置一些字符串(如\n\n),当LLM输出中出现这些序列时即停止生成,防止它滔滔不绝地添加不必要的解释。
实操心得
:LLM的提示词工程(Prompt Engineering)本身就是一个大学问。在
system_prompt
中,使用“少样本学习”(Few-Shot Learning)技巧非常有效。即,在系统提示词里直接给出一两个输入输出的例子。例如:
你是一个提示词优化器。将简单描述转化为详细、高质量的SD提示词。
例子:
输入:一只猫
输出:A fluffy white Persian cat with bright blue eyes, sitting elegantly on a velvet cushion, soft studio lighting, highly detailed, photorealistic, 8k
输入:星空
输出:A breathtaking view of the Milky Way galaxy over a serene mountain lake, stars reflecting on the water, aurora borealis faintly visible, long exposure photography, ultra-wide angle, cosmic
现在,请优化用户的输入。
这样能极大地提升LLM输出格式和质量的稳定性。
4. 进阶应用:构建复杂自动化工作流
当基础的单次生成满足不了需求时,我们可以利用
comfyui_LLM_party
的节点特性,构建更强大的自动化流程。
4.1 动态提示词与参数调整流水线
我们可以让LLM不仅生成提示词,还一并推荐生成参数,并让工作流自动应用。
-
设计结构化输出
:修改你的
system_prompt,要求LLM输出一个严格的JSON格式。你是一个AI绘画参数助手。根据用户描述,生成一个JSON对象,包含以下字段: - “positive_prompt”: 详细的英文正面提示词。 - “negative_prompt”: 常用的负面提示词,如“blurry, ugly, deformed”。 - “steps”: 采样步数,推荐在20-30之间。 - “cfg_scale”: 提示词相关性,推荐在7-9之间。 只输出JSON,不要有其他任何文字。 -
解析JSON
:LLM节点的
response输出是一个包含JSON的文本字符串。你需要使用String操作节点或专门的JSON解析节点(ComfyUI可能有相关自定义节点,或使用ComfyUI-Custom-Scripts中的节点)来提取每个字段。-
例如,使用
String节点的find和slice功能,或者使用Regex节点来匹配提取。 -
将提取出的
positive_prompt和negative_prompt分别送入两个CLIP Text Encode节点(正面和负面)。 -
将
steps和cfg_scale的数值提取出来,转换为INT和FLOAT类型,然后连接到KSampler的对应输入端口。
-
例如,使用
这样,你只需要输入“一个未来主义的机械森林”,LLM就会返回一整套参数,工作流自动应用,生成图片。
4.2 基于图像反馈的迭代优化循环
这是更激动人心的应用:让LLM“看”图说话,指导下一轮生成。
-
第一轮生成
:使用上述基础流程,根据初始描述生成第一张图片
Image_A。 -
图像到文本描述
:使用一个“图像描述”(Image Captioning)节点(例如
BLIP或CLIP Interrogator节点,这些可能需要额外安装)。将Image_A输入,得到一个对该图像内容的文本描述Text_Desc_A。 -
LLM分析与决策
:将
Text_Desc_A和你的原始目标描述一起输入给LLM节点。系统提示词可以设计为:你是一个艺术总监。我首先生成了一幅画,描述是:[Text_Desc_A]。但我的目标是:[用户原始目标]。请分析当前图像与目标的差距,给出具体的修改指令。指令格式:“调整:[具体修改点,如‘增加更多霓虹灯’、‘让角色表情更生动’]”。 -
执行修改
:LLM输出的修改指令(如“增加更多霓虹灯”),可以作为新的
user_input,送入另一个专门用于“提示词修改”的LLM节点。这个节点的系统提示词是:“根据‘调整指令’,优化以下原始提示词。只输出优化后的新提示词。” 它将原始提示词和调整指令融合,生成优化后的提示词。 -
第二轮生成
:用新提示词再次生成
Image_B。 -
循环
:可以将
Image_B再次送入“图像描述”节点,开始新一轮的分析和优化,形成一个闭环。为了避免无限循环,可以设置一个计数器节点,在迭代3-5次后停止。
这个工作流模拟了人类艺术家“创作-审视-修改”的迭代过程,能够逐步将图像向目标方向推进,对于实现复杂、精确的创意构想非常有帮助。
4.3 批量生成与风格统一
如果你需要为一个产品生成一系列风格统一的宣传图,可以这样做:
-
创建主题列表
:用一个
String节点列出所有需要描绘的场景或元素,每行一个(或用List节点),例如:“主角在实验室”、“主角在都市楼顶”、“主角在星空下”。 -
循环处理
:使用
ComfyUI的“Primitive”节点(如Integer递增)配合Loop节点(可能需要自定义节点如WAS Node Suite或使用ComfyUI-Impact-Pack中的迭代功能),遍历主题列表。 - 动态提示词组装 :在循环内,将当前遍历到的“主题”字符串,与一个固定的“风格指令”字符串(如“,赛博朋克风格,蓝紫色调,霓虹光影”)进行拼接。然后将拼接后的完整描述发送给LLM提示词优化节点。
- 统一参数生成 :LLM优化后的提示词,送入一个使用 相同种子(seed) 和 相同模型/LoRA 的采样流程。使用相同种子能保证构图和主体有一定的一致性,而相同的风格LoRA则能锁定整体画风。
- 批量保存 :每循环一次,保存一张输出图片,并按索引命名。
这样,你只需定义一次风格和主体,LLM会为每个不同的场景背景生成贴合的描述,最终得到一套既多样又统一的系列作品。
5. 避坑指南与效能优化实战
在实际使用中,你会遇到各种问题。以下是我踩过坑后总结出的经验。
5.1 常见问题与解决方案速查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| LLM节点无响应,长时间卡住 |
1. LLM后端服务未启动或地址错误。
2. 模型名称填写错误。 3. 请求超时(模型太大或本地算力不足)。 |
1. 检查Ollama/LM Studio是否运行,在浏览器访问
http://localhost:端口/v1/models
看是否返回模型列表。
2. 核对节点中的模型名与后端服务中的完全一致。 3. 在LLM节点中增加
timeout
参数;尝试换一个更小的模型。
|
| LLM返回内容不符合预期(如包含多余解释) | 系统提示词(system_prompt)指令不够清晰、强硬。 |
在系统提示词中反复强调“只输出提示词,不要有任何其他文本”,并使用“少样本学习”给出明确格式示例。在
stop_sequences
中设置
\n\n
或
###
来提前截断。
|
| 生成的提示词效果不好,图片质量差 |
1. LLM模型本身不擅长此任务。
2. 系统提示词未引导其生成SD友好格式。 3. 温度(temperature)过高,输出不稳定。 |
1. 更换更强的模型(如从7B换到70B,或换用GPT-4)。
2. 在系统提示词中明确要求使用“逗号分隔的标签式短语”、“包含材质、光影、画质关键词”。 3. 降低温度至0.3-0.5,增加输出一致性。 |
| 工作流报错,提示JSON解析失败 | LLM返回的文本不是纯净的JSON,前后可能有引号或标记。 |
1. 强化系统提示词:“输出必须是
有效的、可被直接解析的
JSON,不要有任何额外字符。”
2. 在解析前,先使用
String
节点的
replace
或
strip
功能清理文本两端的多余引号或空格。
|
| 循环工作流卡死或内存溢出 | 循环逻辑设置不当,或未清理中间缓存。 |
1. 仔细检查循环的终止条件,确保有明确退出机制。
2. 对于图像描述等耗显存的操作,在循环中使用
Empty Latent Image
等节点释放显存。考虑使用
--lowvram
参数启动ComfyUI。
|
5.2 提示词工程高级技巧
要让LLM成为得力的提示词工程师,你需要精心训练它:
- 角色扮演 :不要只说“生成提示词”。赋予它一个具体的、专业的角色,如“一位精通光影的 cinematographer(电影摄影师)”、“一位熟悉所有绘画流派的艺术史教授”、“一个痴迷于细节的科幻概念设计师”。角色的设定会潜移默化地影响其输出风格。
-
结构化输出模板
:除了JSON,也可以要求固定格式。例如:
让LLM严格按照这个段落的顺序和内容来填充。[主题描述], [构图], [色彩与光影], [画质与风格], [艺术家/参考] 范例:A lone samurai standing on a cliff, full body shot from low angle, dramatic sunset backlight with orange and purple hues, highly detailed, digital painting, by Greg Rutkowski and Makoto Shinkai - 负面提示词库 :可以让LLM根据正面提示词,自动生成对应的负面提示词。系统提示词可以设计为:“根据给定的正面提示词,推断出需要避免的常见问题,生成一段负面提示词。例如:如果正面有‘realistic’,负面应加入‘cartoon, anime’。输出格式:‘负面提示词:[内容]’。”
- 迭代精炼 :不要指望一次生成就得到完美提示词。可以设计一个两阶段工作流:第一阶段LLM生成一个“草稿提示词”;第二阶段,将这个草稿和指令“使其更具画面感,增加三个具体的视觉细节”再次输入给LLM(或另一个LLM节点),进行精炼。
5.3 性能优化与资源管理
- 模型选型 :对于本地部署,7B-13B参数的模型是性价比之选(如Llama 3.1 8B, Qwen2.5 7B)。它们能在8GB以上显存的GPU上流畅运行,且文本生成质量足够用于提示词工程。如果只做简单的文本改写,3B模型也可以。
- 缓存与复用 :如果你的工作流中,LLM需要多次处理相同或类似的系统提示词,可以考虑将LLM节点的输出缓存起来。虽然ComfyUI节点本身无缓存功能,但你可以将第一次生成的优质提示词保存为文本文件,在后续工作流中直接加载,避免重复调用LLM,节省时间。
- 异步处理 :对于批量生成任务,不要让工作流“生成一张图 -> 调用LLM -> 生成下一张图”这样串行进行。可以先用LLM节点一次性处理完所有文本描述,将结果保存为一个提示词列表,然后再用循环节点读取列表进行并行或串行图像生成,这样效率更高。
-
错误处理
:在复杂工作流中,在LLM节点后添加一个
String检查节点,用简单的逻辑判断输出是否包含关键字段(如检查是否包含“prompt”字样),如果不符合,可以触发一个分支,使用备用的默认提示词,防止整个流程因LLM的一次“胡言乱语”而中断。
heshengtao/comfyui_LLM_party
这个项目,真正将AI绘画从“手动调参”的工匠模式,部分推进到了“自然语言指挥”的导演模式。它目前可能还不是完全智能,需要你精心设计工作流和提示词来引导,但这正是其魅力所在——它提供的是无限的可能性,而不是一个固定的答案。通过将LLM的语义理解与ComfyUI的图形化流程控制相结合,我们能够搭建出前所未有的、智能且灵活的创意生产管线。开始实验吧,从优化你的第一个提示词开始,逐步构建属于你自己的“AI绘画智能车间”。
更多推荐



所有评论(0)