ComfyUI-IF_LLM 插件保姆级教程
1. 插件简介
插件地址: https://github.com/if-ai/ComfyUI-IF_LLM
这个插件就像一个超级智能的"AI助手工具箱"!想象一下,你有一个万能的AI朋友,它不仅能看图说话,还能帮你写文案、生成图片、处理文本,甚至能连接各种不同的AI大脑(比如ChatGPT、Claude、Gemini等)。
能带来什么效果:
- 🤖 连接多种AI服务:就像有个万能遥控器,能控制OpenAI、Claude、Gemini等各种AI
- 🖼️ 看图说话:给AI一张图,它能告诉你图里有什么,还能根据图片写故事
- ✍️ 智能文案生成:自动生成各种风格的提示词和文案
- 🎨 图片生成:通过文字描述让AI画出你想要的图片
- 📝 文本处理:拼接、保存、显示各种文本内容
- 🔄 批量处理:一次性处理多张图片或多段文字
2. 如何安装
方法一:通过 ComfyUI Manager(推荐)
- 打开 ComfyUI Manager
- 搜索 "IF_LLM" 或 "IF AI"
- 点击安装即可
方法二:手动安装
- 打开终端/命令提示符
- 进入你的 ComfyUI 安装目录下的 custom_nodes 文件夹
cd ComfyUI/custom_nodes
- 下载插件
git clone https://github.com/if-ai/ComfyUI-IF_LLM.git
- 安装依赖
cd ComfyUI-IF_LLM
pip install -r requirements.txt
- 重启 ComfyUI
注意: 使用前需要设置相应的API密钥,比如OpenAI的API_KEY等。
3. 节点详细解析
3.1 IF LLM🎨 节点
这是插件的核心节点,就像一个"AI大脑指挥中心"。你可以通过它连接各种AI服务,让AI看图片、回答问题、生成内容。
3.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| llm_provider | llm_provider | transformers/ollama/openai等 | ollama | 选择你要用哪个AI服务,就像选择打电话给哪个朋友 | 指定使用的大语言模型提供商 | 本地用ollama,云端用openai |
| llm_model | llm_model | 模型名称 | - | 具体选择哪个AI模型,就像选择找哪个专家 | 指定具体的模型名称 | llama3.2、gpt-4o等 |
| base_ip | base_ip | IP地址 | localhost | AI服务运行在哪台电脑上,本机就填localhost | 服务器IP地址 | 本地服务用localhost |
| port | port | 端口号 | 11434 | AI服务的"门牌号",不同服务有不同端口 | 服务端口号 | ollama默认11434 |
| user_prompt | user_prompt | 文本 | - | 你想问AI的问题或给AI的指令 | 用户输入的提示词 | "描述这张图片" |
| images | images | 图片 | - | 要让AI分析的图片,可以是单张或多张 | 输入的图像数据 | 连接Load Image节点 |
| strategy | strategy | normal/omost/create等 | normal | 选择AI的工作模式,就像选择不同的工作方式 | 处理策略模式 | normal用于对话,create用于生成图片 |
| mask | mask | 蒙版 | - | 图片的遮罩,告诉AI重点关注哪些区域 | 图像遮罩数据 | 用于图片编辑时指定区域 |
| prime_directives | prime_directives | 文本 | - | 给AI的"人设"或基本指令,就像告诉它扮演什么角色 | 系统提示词 | "你是一个专业的摄影师" |
| profiles | profiles | 预设选项 | None | 预设的AI角色模板,就像选择不同的专家模式 | 预定义的系统提示词模板 | 选择"摄影师"、"作家"等 |
| embellish_prompt | embellish_prompt | 装饰选项 | - | 让回答更丰富的装饰词,就像给文章加修饰语 | 提示词增强模板 | 添加"详细描述"、"创意表达" |
| style_prompt | style_prompt | 风格选项 | - | 指定回答的风格,就像选择说话的语气 | 风格化提示词模板 | "正式"、"幽默"、"诗意" |
| neg_prompt | neg_prompt | 负面提示 | - | 告诉AI不要包含什么内容,就像说"不要这样做" | 负面提示词 | "不要包含暴力内容" |
| stop_string | stop_string | 停止词 | - | 让AI在遇到特定词语时停止生成 | 停止标记 | 遇到"结束"就停止 |
| max_tokens | max_tokens | 1-8192 | 2048 | AI最多能说多少个词,就像限制回答的长度 | 最大生成令牌数 | 短回答用512,长文章用4096 |
| random | random | True/False | False | 是否让AI的回答有随机性,开启后每次回答可能不同 | 是否使用随机种子 | 创作时开启,分析时关闭 |
| seed | seed | 数字 | 0 | 随机数种子,相同种子会产生相同结果 | 随机种子值 | 固定种子可重现结果 |
| keep_alive | keep_alive | True/False | True | 是否保持AI在内存中,就像让专家待命 | 是否保持模型加载状态 | 频繁使用时开启节省时间 |
| clear_history | clear_history | True/False | True | 是否清除对话历史,就像重新开始聊天 | 是否清除对话上下文 | 新话题时开启 |
| history_steps | history_steps | 1-999 | 10 | 记住多少轮对话,就像记忆力的长短 | 保留的对话轮数 | 长对话用20,短对话用5 |
| aspect_ratio | aspect_ratio | 1:1/16:9等 | 1:1 | 生成图片的长宽比例,就像选择照片尺寸 | 图像宽高比 | 头像用1:1,横屏用16:9 |
| auto | auto | True/False | False | 是否自动生成提示词,就像让AI自己想问题 | 自动提示词生成模式 | 批量处理时开启 |
| batch_count | batch_count | 数字 | 1 | 一次生成多少个结果,就像一次拍多少张照片 | 批次处理数量 | 需要多个选择时增加 |
| external_api_key | external_api_key | 文本 | - | 外部API密钥,就像你的会员卡号 | API访问密钥 | 输入OpenAI的API密钥 |
| Omni | Omni | 万能输入 | - | 万能接口,可以接收各种类型的数据 | 通用数据接口 | 连接其他节点的输出 |
| attention | attention | sdpa/flash_attention_2等 | sdpa | 注意力机制类型,影响AI的处理效率 | 注意力计算方式 | 默认用sdpa即可 |
输出说明:
- question:你问的问题
- response:AI的回答
- negative:负面提示词
- omni:万能输出数据
- generated_images:生成的图片
- mask:生成的遮罩
3.3 IF Save Text📝 节点
这个节点就像一个"文档管理员",帮你把AI的对话内容保存成文件,方便以后查看。
3.4 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| question_input | question_input | 文本 | - | 要保存的问题内容,就像记录你问了什么 | 输入的问题文本 | 连接LLM节点的question输出 |
| response_input | response_input | 文本 | - | 要保存的回答内容,就像记录AI说了什么 | 输入的回答文本 | 连接LLM节点的response输出 |
| negative_input | negative_input | 文本 | - | 要保存的负面提示,就像记录不要的内容 | 输入的负面提示文本 | 连接LLM节点的negative输出 |
| save_file | save_file | True/False | False | 是否真的保存文件,就像决定是否按下保存按钮 | 是否执行文件保存 | 需要保存时开启 |
| file_format | file_format | csv/txt/json | txt | 保存成什么格式的文件,就像选择文档类型 | 文件保存格式 | txt最简单,csv便于表格处理 |
| save_mode | save_mode | create/overwrite/append | create | 保存方式:新建、覆盖还是追加 | 文件保存模式 | 新内容用create,续写用append |
输出说明:
- Question:问题文本
- Response:回答文本
- Negative:负面提示文本
- Turn:完整的对话记录
3.5 IF Display Text📟 节点
这个节点就像一个"显示屏",把文本内容清晰地展示出来,还能选择显示哪一行。
3.6 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| text | text | 文本 | - | 要显示的文本内容,可以是单行或多行 | 输入的文本数据 | 连接其他节点的文本输出 |
| select | select | 数字 | 0 | 选择显示第几行,就像选择看第几页 | 选择显示的行索引 | 0表示第一行,1表示第二行 |
输出说明:
- text:完整文本
- text_list:按行分割的文本列表
- count:总行数
- selected:选中的那一行文本
3.7 IF Display Text Wildcard📟 节点
这个节点就像一个"智能文本生成器",能够使用通配符和变量来生成各种变化的文本内容。
3.8 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| text | text | 文本 | - | 包含通配符的文本模板,就像填空题的模板 | 带有通配符的文本模板 | "一个__颜色__的__动物__" |
| select | select | 数字 | 0 | 选择显示第几个生成的变体 | 选择显示的变体索引 | 0显示第一个变体 |
| counter | counter | -1到999999 | -1 | 计数器,控制生成次数,-1表示无限制 | 执行计数器 | 设为5表示只执行5次 |
| dynamic_prompt | dynamic_prompt | 文本 | - | 动态变量定义,就像定义填空的选项 | 动态变量定义文本 | "颜色={红色|蓝色|绿色}" |
| max_variants | max_variants | 1-1000 | 10 | 最多生成多少个不同的变体 | 最大变体生成数量 | 需要更多选择时增加 |
| wildcard_mode | wildcard_mode | True/False | False | 是否启用通配符模式,就像开启智能填空功能 | 是否启用通配符处理 | 使用通配符时开启 |
输出说明:
- text:原始文本
- text_list:生成的所有变体列表
- count:生成的变体数量
- selected:选中的变体文本
3.9 IF Display Omni🔍 节点
这个节点就像一个"万能显示器",能够显示各种类型的数据,特别适合显示复杂的AI输出结果。
3.10 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| omni_input | omni_input | 万能类型 | - | 万能输入,可以接收任何类型的数据进行显示 | 通用数据输入接口 | 连接LLM节点的omni输出 |
输出说明:
- canvas_conditioning:画布条件数据(用于OMOST)
- text_output:提取的文本内容
3.11 IF Text Typer✍️ 节点
这个节点就像一个"打字机",让你直接输入文本内容,是最简单的文本输入工具。
3.12 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| text | text | 文本 | - | 直接输入的文本内容,支持多行输入 | 多行文本输入 | 输入提示词或说明文字 |
输出说明:
- STRING:输入的文本内容
3.13 IF Join Text📝 节点
这个节点就像一个"文本拼接器",能把多段文字用指定的连接符拼接成一段完整的文字。
3.14 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| separator | separator | 文本 | 空格 | 用什么符号连接文字,就像用胶水粘东西 | 文本分隔符 | 用逗号、空格或换行符 |
| text1 | text1 | 文本 | - | 第一段要拼接的文字 | 第一个文本输入 | "美丽的" |
| text2 | text2 | 文本 | - | 第二段要拼接的文字 | 第二个文本输入 | "风景" |
| text3 | text3 | 文本 | - | 第三段要拼接的文字 | 第三个文本输入 | "照片" |
| text4 | text4 | 文本 | - | 第四段要拼接的文字 | 第四个文本输入 | "高清" |
输出说明:
- STRING:拼接后的完整文本
3.15 IF LLM Load Images S🖼️ 节点
这个节点就像一个"智能相册管理器",能够批量加载、预览和管理图片文件,支持各种筛选和排序功能。
3.16 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 图片选择 | - | 从缩略图中选择特定的图片 | 图像选择器 | 点击缩略图选择图片 |
| input_path | input_path | 路径 | - | 图片文件夹的路径,就像告诉程序去哪找图片 | 输入目录路径 | "images/photos" |
| start_index | start_index | 0-9999 | 0 | 从第几张图片开始加载,就像翻到第几页 | 起始索引 | 0表示从第一张开始 |
| stop_index | stop_index | 1-9999 | 10 | 加载到第几张图片结束 | 结束索引 | 10表示加载前10张 |
| load_limit | load_limit | 10/100/1000等 | 1000 | 最多加载多少张图片,防止内存不够 | 加载数量限制 | 大批量处理用1000 |
| image_selected | image_selected | True/False | False | 是否只加载选中的图片 | 是否仅加载选中图像 | 只处理特定图片时开启 |
| available_image_count | available_image_count | 数字 | - | 显示可用图片的总数量 | 可用图像计数 | 只读显示,无需设置 |
| include_subfolders | include_subfolders | True/False | True | 是否包含子文件夹中的图片 | 是否包含子目录 | 深度搜索时开启 |
| sort_method | sort_method | alphabetical/numerical等 | alphabetical | 图片排序方式,就像整理相册的方法 | 排序方法 | 按名称、数字或日期排序 |
| filter_type | filter_type | none/png/jpg等 | none | 只加载特定格式的图片 | 文件格式过滤器 | 只要JPG图片时选jpg |
| channel | channel | alpha/red/green/blue | alpha | 选择图片的哪个颜色通道作为遮罩 | 颜色通道选择 | alpha用于透明度 |
输出说明:
- images:加载的图片列表
- masks:对应的遮罩列表
- image_paths:图片文件路径列表
- filenames:文件名列表
- count_str:计数字符串(如"5/100")
- count_int:计数数字
3.17 IF LLM List Models📚 节点
这个节点就像一个"AI模型目录",能够列出指定AI服务提供商的所有可用模型,帮你选择合适的AI大脑。
3.18 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| llm_provider | llm_provider | ollama/openai等 | ollama | 选择要查看哪个AI服务的模型列表 | LLM服务提供商 | 查看ollama有哪些模型 |
| base_ip | base_ip | IP地址 | localhost | AI服务运行的IP地址 | 服务器IP地址 | 本地服务用localhost |
| port | port | 端口号 | 11434 | AI服务的端口号 | 服务端口 | ollama默认11434 |
| external_api_key | external_api_key | 文本 | - | 外部API密钥,查看云端服务时需要 | API访问密钥 | OpenAI的API密钥 |
| refresh | refresh | True/False | False | 是否刷新模型列表,获取最新信息 | 是否刷新列表 | 安装新模型后开启 |
输出说明:
- model_list:格式化的模型列表文本
4. 使用技巧和建议
4.1 新手入门建议
-
从简单开始
- 先用Text Typer节点输入简单问题
- 连接到LLM节点,选择ollama作为提供商
- 用Display Text节点查看结果
-
API密钥设置
- 在系统环境变量中设置API密钥
- 格式:OPENAI_API_KEY、ANTHROPIC_API_KEY等
- 或者直接在external_api_key参数中输入
-
本地vs云端选择
- 新手推荐先用ollama(本地,免费)
- 需要更强能力时使用OpenAI、Claude等云端服务
4.2 进阶使用技巧
-
批量图片处理
- 使用Load Images S节点加载多张图片
- 开启auto模式让AI自动生成描述
- 用batch_count参数控制每张图生成多少个描述
-
通配符系统
- 在Display Text Wildcard中使用__关键词__格式
- 创建动态提示词模板
- 批量生成不同风格的内容
-
对话历史管理
- 合理设置history_steps保持上下文
- 新话题时开启clear_history
- 使用keep_alive提高响应速度
4.3 性能优化
-
内存管理
- 大批量处理时适当降低load_limit
- 不需要时关闭keep_alive释放内存
- 合理设置max_tokens避免过长输出
-
速度优化
- 本地模型选择合适的精度(fp16/fp32)
- 使用合适的attention机制
- 批量处理时调整batch_count
5. 常见问题解答
Q1: 为什么连接不上AI服务?
A: 检查以下几点:
- IP地址和端口是否正确
- 本地服务(如ollama)是否已启动
- API密钥是否正确设置
- 网络连接是否正常
Q2: 如何设置API密钥?
A: 有两种方法:
- 方法1:在系统环境变量中设置(推荐)
- 方法2:直接在节点的external_api_key参数中输入
Q3: 为什么AI回答很慢?
A: 可能的原因:
- 本地模型配置不够高
- max_tokens设置过大
- 网络连接较慢(云端服务)
- 可以尝试使用更小的模型或降低max_tokens
Q4: 如何批量处理图片?
A: 使用以下流程:
- Load Images S节点加载图片
- LLM节点开启auto模式
- 设置合适的batch_count
- 连接Display Text查看结果
Q5: 通配符怎么使用?
A: 格式:关键词
- 例如:颜色__的__动物
- 在dynamic_prompt中定义:颜色={红色|蓝色|绿色}
- 系统会自动替换生成不同组合
Q6: 如何保存对话记录?
A: 使用Save Text节点:
- 连接LLM节点的输出
- 开启save_file
- 选择合适的文件格式
- 设置保存模式(新建/追加)
6. 实际应用案例
案例1:批量图片描述生成
- 用Load Images S加载图片文件夹
- LLM节点设置为"描述这张图片"
- 开启auto模式自动处理
- 用Save Text保存所有描述
案例2:创意文案生成
- Text Typer输入基础描述
- Display Text Wildcard添加通配符变化
- LLM节点润色和扩展
- Join Text拼接最终文案
案例3:多模态AI对话
- Load Images提供图片
- Text Typer提供问题
- LLM节点进行图文对话
- Display Text展示结果
7. 总结
ComfyUI-IF_LLM插件是一个功能强大的AI集成工具,它的最大优势是:
核心优势:
- 支持多种AI服务提供商
- 强大的图文处理能力
- 灵活的文本处理工具
- 批量处理功能
- 丰富的自定义选项
使用要点:
- 合理选择AI服务提供商
- 正确设置API密钥
- 根据需求调整参数
- 善用批量处理功能
- 活用通配符系统
现在你已经掌握了这个插件的所有功能,可以开始创造属于你的AI工作流程了!🚀✨