ComfyUI_VLM_nodes 插件完整教程
1. 插件简介
插件地址: https://github.com/gokayfem/ComfyUI_VLM_nodes
这个插件就像是给 ComfyUI 装了一个超级智能的"AI眼睛和大脑"!它集成了各种各样的视觉语言模型(VLM),让AI不仅能看懂图片,还能用文字描述出来,甚至能根据图片创作音乐、生成提示词等等。
想象一下,你给AI看一张照片,它不仅能告诉你照片里有什么,还能帮你写出专业的绘画提示词,甚至根据照片的氛围创作一首背景音乐!这就像给AI装了一双会看图说话的眼睛。
主要功能:
- 图片理解和描述:AI看图说话,描述图片内容
- 智能提示词生成:根据图片或描述自动生成绘画提示词
- 图片转音乐:根据图片的氛围和内容创作背景音乐
- 多种AI模型支持:LLaVA、Moondream、Kosmos-2、JoyTag等
- 结构化输出:让AI按照指定格式输出信息
- 文本处理工具:各种文本操作和显示功能
能给我们带来什么效果:
- 快速理解图片内容:不用自己描述,AI帮你看图说话
- 自动生成绘画提示词:从图片或简单描述生成专业提示词
- 创意音乐制作:根据图片氛围自动创作音乐
- 批量图片标签:自动给图片打标签分类
- 智能对话:与AI进行图文结合的对话
2. 如何安装
2.1 基础安装步骤
-
进入 ComfyUI 插件目录
cd ComfyUI/custom_nodes -
下载插件
git clone https://github.com/gokayfem/ComfyUI_VLM_nodes.git -
安装依赖包
cd ComfyUI_VLM_nodes pip install -r requirements.txt -
创建模型文件夹
- 插件会自动在
ComfyUI/models/下创建LLavacheckpoints文件夹 - 各种AI模型文件都放在这个文件夹里
- 插件会自动在
-
下载AI模型
- 根据需要下载对应的模型文件(.gguf格式)
- 放到
LLavacheckpoints文件夹中
-
重启 ComfyUI
2.2 模型下载建议
- LLaVA模型:推荐 LLaVA 1.6 Mistral 7B
- 提示词生成:推荐 Qwen 1.8B Stable Diffusion Prompt
- 音乐生成:需要 ChatMusician 模型
- 其他模型:会根据需要自动下载
3. 节点详细解析
3.1 LLaVA 相关节点
LLaVA 是最核心的视觉语言模型,就像给AI装了眼睛,能看懂图片并用文字描述。
3.1.1 LLavaLoader 节点 - LLaVA模型加载器
这个节点就像一个"AI大脑启动器",负责把LLaVA模型加载到内存里准备工作。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 模型文件名 | ckpt_name | 模型文件列表 | 根据下载的模型 | 选择要使用的LLaVA模型文件,就像选择要用哪个AI大脑 | LLaVA模型权重文件路径 | 选择 llava-v1.6-mistral-7b.gguf |
| 最大上下文 | max_ctx | 128-8192 | 4096 | AI能记住多少对话内容,数字越大记忆越好但越慢 | 模型上下文窗口大小 | 4096够用,复杂对话用8192 |
| GPU层数 | gpu_layers | 0-100 | 27 | 有多少层在显卡上运行,越多越快但占显存 | GPU加速层数 | 显存够用27,不够用15 |
| 线程数 | n_threads | 1-100 | 8 | CPU同时工作的线程数,就像同时干活的工人数量 | CPU线程数 | 根据CPU核心数设置 |
| CLIP模型 | clip | CUSTOM类型 | 连接输入 | 图像理解组件,从CLIP加载器接收 | CLIP视觉编码器 | 连接LlavaClipLoader输出 |
3.1.2 LlavaClipLoader 节点 - CLIP加载器
这个节点专门加载图像理解组件,就像给AI装眼睛。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| CLIP文件名 | clip_name | CLIP文件列表 | 对应模型的CLIP | 选择图像理解组件文件,每个模型都有专门的CLIP | CLIP模型文件路径 | 选择 mmproj-model-f16.gguf |
3.1.3 LLavaSamplerSimple 节点 - 简单图像理解
这个节点是最基础的图像理解工具,给它一张图片和问题,它就能回答。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图片 | image | IMAGE类型 | 连接输入 | 要让AI看的图片 | 输入图像数据 | 连接图片加载节点 |
| 提示词 | prompt | 文本 | 连接输入 | 你想问AI关于图片的问题 | 文本提示输入 | "描述这张图片" |
| 模型 | model | CUSTOM类型 | 连接输入 | 从LLaVA加载器接收的AI模型 | LLaVA模型实例 | 连接LLavaLoader输出 |
| 温度 | temperature | 0.01-1.0 | 0.1 | 控制AI回答的创意程度,越高越有创意但可能不准确 | 生成温度参数 | 0.1保守,0.7创意 |
3.1.4 LLavaSamplerAdvanced 节点 - 高级图像理解
这是功能更强大的图像理解节点,有更多控制选项。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图片 | image | IMAGE类型 | 连接输入 | 要让AI看的图片 | 输入图像数据 | 连接图片加载节点 |
| 系统消息 | system_msg | 文本 | 默认消息 | 告诉AI它的角色,就像给它一个工作说明书 | 系统提示词 | "你是专业的图片分析师" |
| 提示词 | prompt | 文本 | 连接输入 | 你想问AI的具体问题 | 用户提示词 | "详细描述这张图片的内容" |
| 模型 | model | CUSTOM类型 | 连接输入 | AI模型 | LLaVA模型实例 | 连接LLavaLoader输出 |
| 最大词数 | max_tokens | 1-2048 | 512 | AI回答的最大字数限制 | 最大生成token数 | 512够用,详细描述用1024 |
| 温度 | temperature | 0.01-1.0 | 0.1 | 回答的创意程度 | 生成温度 | 0.1保守,0.7创意 |
| Top P | top_p | 0.1-1.0 | 0.95 | 控制词汇选择范围,影响回答质量 | 核采样参数 | 0.95是好的平衡点 |
| Top K | top_k | 整数 | 40 | 每次选择时考虑的词汇数量 | Top-K采样参数 | 40是常用值 |
| 频率惩罚 | frequency_penalty | 小数 | 0.0 | 避免重复用词,数字越大越避免重复 | 频率惩罚系数 | 0.0不惩罚,0.5适度惩罚 |
| 存在惩罚 | presence_penalty | 小数 | 0.0 | 鼓励使用新词汇 | 存在惩罚系数 | 0.0不惩罚,0.3鼓励创新 |
| 重复惩罚 | repeat_penalty | 小数 | 1.1 | 避免句子重复 | 重复惩罚系数 | 1.1轻微惩罚,1.3强惩罚 |
| 随机种子 | seed | 整数 | 42 | 控制随机性,相同种子得到相同结果 | 随机种子 | 42是常用值 |
3.2 文本处理节点
这些节点专门处理文字,就像文字处理工具箱。
3.2.1 SimpleText 节点 - 简单文本输入
这个节点就像一个文本输入框,让你输入任何文字。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输入文本 | input_text | 文本 | 空 | 输入任何你想要的文字内容 | 字符串输入 | 输入提示词或问题 |
3.2.2 ViewText 节点 - 文本查看器
这个节点就像一个文本显示屏,让你看到文字内容。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 文本 | text | 文本 | 连接输入 | 要显示的文字内容 | 文本输入 | 连接其他节点的文本输出 |
3.2.3 JsonToText 节点 - JSON转文本
这个节点把复杂的数据格式转换成易读的文字。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 文本 | text | 文本 | 连接输入 | 包含结构化数据的文本 | JSON格式文本输入 | 连接结构化输出节点 |
3.3 智能模型节点
这些是各种专门的AI模型,每个都有特殊技能。
3.3.1 Moondream2model 节点 - 轻量级视觉模型
这是一个小巧但强大的图像理解模型,就像一个便携式AI眼睛。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图片 | image | IMAGE类型 | 连接输入 | 要分析的图片 | 输入图像 | 连接图片加载节点 |
| 文本输入 | text_input | 文本 | 空 | 你想问关于图片的问题 | 文本查询 | "这张图片里有什么?" |
3.3.2 Joytag 节点 - 图片标签生成器
这个节点专门给图片打标签,就像一个自动分类器。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图片 | image | IMAGE类型 | 连接输入 | 要打标签的图片 | 输入图像 | 连接图片加载节点 |
| 标签数量 | tag_number | 1-100 | 10 | 要生成多少个标签 | 输出标签数量 | 10个标签够用 |
3.3.3 Kosmos2model 节点 - 微软视觉模型
这是微软开发的视觉语言模型,擅长理解图片内容。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图片 | image | IMAGE类型 | 连接输入 | 要分析的图片 | 输入图像 | 连接图片加载节点 |
| 文本输入 | text_input | 文本 | 空 | 关于图片的问题或指令 | 文本提示 | "描述图片中的物体" |
3.3.4 UformGen2QwenNode 节点 - 快速视觉模型
这是一个超快的小型视觉语言模型,适合快速处理。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图片 | image | IMAGE类型 | 连接输入 | 要处理的图片 | 输入图像 | 连接图片加载节点 |
| 问题 | question | 文本 | 空 | 你想问的问题 | 查询文本 | "这是什么?" |
3.4 音频生成节点
这些节点能根据文字或图片创作音乐。
3.4.1 AudioLDM2Node 节点 - 文本转音乐
这个神奇的节点能根据文字描述创作音乐,就像一个AI作曲家。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 文本 | text | 文本 | 连接输入 | 描述你想要的音乐风格或氛围 | 音乐描述文本 | "轻松的钢琴音乐" |
| 负面提示 | negative_prompt | 文本 | 连接输入 | 不想要的音乐元素 | 负向提示 | "不要鼓声" |
| 时长 | duration | 1-60秒 | 10 | 音乐的长度,单位是秒 | 音频时长 | 10秒适合背景音 |
| 引导强度 | guidance_scale | 0.1-20.0 | 3.5 | 控制AI对描述的遵循程度 | CFG引导强度 | 3.5是平衡点 |
| 随机种子 | seed | 整数 | 42 | 控制音乐的随机性 | 随机种子 | 相同种子得到相同音乐 |
| 候选数量 | n_candidates | 1-10 | 3 | 生成几个不同版本供选择 | 生成候选数 | 3个版本够选择 |
| 采样率 | sample_rate | 8000-48000 | 16000 | 音质设置,越高音质越好 | 音频采样率 | 16000够用,44100高质量 |
| 文件格式 | extension | wav/mp3/flac | wav | 保存的音频格式 | 音频格式 | wav质量最好 |
3.4.2 SaveAudioNode 节点 - 音频保存器
这个节点把生成的音乐保存成文件。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 波形数据 | waveforms | 任意类型 | 连接输入 | 从音频生成节点接收的音乐数据 | 音频波形数据 | 连接AudioLDM2Node输出 |
| 采样率 | sample_rate | 整数 | 连接输入 | 音频的采样率信息 | 音频采样率 | 连接音频生成节点 |
| 文件格式 | extension | wav/mp3/flac | wav | 保存的文件格式 | 音频格式 | wav最通用 |
| 文件名 | filename | 文本 | audio | 保存的文件名 | 文件名前缀 | "my_music" |
3.5 提示词生成节点
这些节点专门生成和优化绘画提示词。
3.5.1 LLMLoader 节点 - 语言模型加载器
这个节点加载专门的语言模型,用于文本生成和处理。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 模型文件名 | ckpt_name | 模型文件列表 | 根据需要 | 选择语言模型文件 | LLM模型文件 | 选择提示词生成模型 |
| 最大上下文 | max_ctx | 128-128000 | 2048 | 模型能记住的文本长度 | 上下文窗口 | 2048够用,长文本用4096 |
| GPU层数 | gpu_layers | 0-100 | 27 | 在显卡上运行的层数 | GPU加速层数 | 根据显存调整 |
| 线程数 | n_threads | 1-100 | 8 | CPU工作线程数 | CPU线程数 | 根据CPU核心数 |
3.5.2 LLMPromptGenerator 节点 - 提示词生成器
这个节点专门生成绘画提示词,就像一个专业的提示词写手。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 提示词 | prompt | 文本 | 连接输入 | 简单的描述,AI会扩展成专业提示词 | 输入提示 | "美丽的女孩" |
| 模型 | model | CUSTOM类型 | 连接输入 | 语言模型 | LLM模型实例 | 连接LLMLoader输出 |
| 最大词数 | max_tokens | 1-2048 | 512 | 生成提示词的最大长度 | 最大token数 | 512够用 |
| 温度 | temperature | 0.01-1.0 | 0.2 | 创意程度,越高越有创意 | 生成温度 | 0.2保守,0.7创意 |
| Top P | top_p | 0.1-1.0 | 0.95 | 词汇选择范围 | 核采样参数 | 0.95平衡 |
| Top K | top_k | 整数 | 40 | 候选词汇数量 | Top-K采样 | 40常用 |
| 频率惩罚 | frequency_penalty | 小数 | 0.0 | 避免重复词汇 | 频率惩罚 | 0.0不惩罚 |
| 存在惩罚 | presence_penalty | 小数 | 0.0 | 鼓励新词汇 | 存在惩罚 | 0.0不惩罚 |
| 重复惩罚 | repeat_penalty | 小数 | 1.1 | 避免重复句子 | 重复惩罚 | 1.1轻微惩罚 |
3.5.3 KeywordExtraction 节点 - 关键词提取器
这个节点从文本中提取关键信息,就像一个智能摘要器。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 提示词 | prompt | 文本 | 连接输入 | 要提取关键词的文本 | 输入文本 | 连接图片描述输出 |
| 模型 | model | CUSTOM类型 | 连接输入 | 语言模型 | LLM模型实例 | 连接LLMLoader输出 |
| 温度 | temperature | 0.01-1.0 | 0.15 | 提取的严格程度,越低越严格 | 生成温度 | 0.15比较严格 |
3.5.4 Suggester 节点 - 提示词建议器
这个节点能生成多个相似或不同的提示词建议。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 提示词 | prompt | 文本 | 连接输入 | 原始提示词 | 输入提示 | "美丽的风景" |
| 模型 | model | CUSTOM类型 | 连接输入 | 语言模型 | LLM模型实例 | 连接LLMLoader输出 |
| 温度 | temperature | 0.01-1.0 | 0.15 | 建议的创意程度 | 生成温度 | 0.15保守,0.7创意 |
| 随机化 | randomize | True/False | True | True生成相似建议,False生成随机建议 | 建议模式 | True相似,False随机 |
3.6 API调用节点
这些节点可以调用在线AI服务。
3.6.1 PromptGenerateAPI 节点 - API提示词生成器
这个节点调用ChatGPT等在线AI服务生成提示词。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 模型名称 | model_name | 模型列表 | ChatGPT-3.5 | 选择要使用的在线AI服务 | API模型选择 | ChatGPT-3.5便宜好用 |
| 聊天类型 | chat_type | True/False | True | True是提示词生成,False是普通聊天 | 功能模式 | True生成提示词 |
| API密钥 | api_key | 文本 | 空 | 在线服务的访问密钥 | API认证密钥 | 输入你的API key |
| 描述 | description | 文本 | 空 | 描述你想要的内容 | 内容描述 | "一个科幻场景" |
| 问题 | question | 文本 | 空 | 可选的具体问题 | 补充问题 | "要包含机器人" |
| 上下文大小 | context_size | 0-30 | 5 | 记住多少轮对话 | 对话历史长度 | 5轮够用 |
| 随机种子 | seed | 整数 | 0 | 控制结果的随机性 | 随机种子 | 0表示随机 |
3.7 结构化输出节点
3.7.1 StructuredOutput 节点 - 结构化输出器
这个节点让AI按照指定格式输出信息,就像填表格一样。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 提示词 | prompt | 文本 | 连接输入 | 要分析的内容 | 输入文本 | 连接图片描述 |
| 模型 | model | CUSTOM类型 | 连接输入 | 语言模型 | LLM模型实例 | 连接LLMLoader输出 |
| 温度 | temperature | 0.01-1.0 | 0.15 | 输出的严格程度 | 生成温度 | 0.15比较严格 |
| 属性名称 | attribute_name | 文本 | 空 | 要提取的信息名称 | 属性字段名 | "主要颜色" |
| 属性类型 | attribute_type | 类型列表 | str | 信息的数据类型 | 数据类型 | str文本,int数字 |
| 属性描述 | attribute_description | 文本 | 空 | 对这个信息的详细说明 | 字段描述 | "图片中的主要颜色" |
| 分类选项 | categories | 文本 | 空 | 如果是分类,列出所有选项 | 分类选项 | "红色,蓝色,绿色" |
3.8 内存管理节点
这些节点可以自动管理内存,避免显存不足。
3.8.1 LLavaOptionalMemoryFreeSimple 节点 - 简单内存管理
这个节点在使用完后可以自动释放内存。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 模型文件名 | ckpt_name | 模型文件列表 | 根据需要 | LLaVA模型文件 | 模型文件路径 | 选择模型文件 |
| CLIP文件名 | clip_name | CLIP文件列表 | 对应的CLIP | CLIP组件文件 | CLIP文件路径 | 选择对应CLIP |
| 最大上下文 | max_ctx | 128-128000 | 4096 | 记忆长度 | 上下文窗口 | 4096够用 |
| GPU层数 | gpu_layers | 0-100 | 27 | 显卡加速层数 | GPU层数 | 根据显存调整 |
| 线程数 | n_threads | 1-100 | 8 | CPU线程数 | 线程数 | 根据CPU核心数 |
| 图片 | image | IMAGE类型 | 连接输入 | 要分析的图片 | 输入图像 | 连接图片加载节点 |
| 提示词 | prompt | 文本 | 连接输入 | 问题或指令 | 文本提示 | "描述这张图片" |
| 温度 | temperature | 0.01-1.0 | 0.1 | 回答的创意程度 | 生成温度 | 0.1保守 |
| 卸载内存 | unload | True/False | False | 使用完后是否释放内存 | 内存释放开关 | True释放内存 |
4. 使用技巧和建议
4.1 模型选择建议
- 图片理解:LLaVA 1.6 Mistral 7B 效果最好
- 提示词生成:Qwen 1.8B 专门优化过
- 快速处理:Moondream2 小巧快速
- 图片标签:JoyTag 专业准确
4.2 性能优化技巧
- 显存不足:降低GPU层数,使用内存管理节点
- 速度优化:选择合适的模型大小,调整线程数
- 质量平衡:温度0.1-0.3保守,0.5-0.8创意
4.3 工作流建议
- 基础图片理解:图片 → LLaVA → 文本输出
- 提示词生成:图片 → LLaVA → 关键词提取 → 提示词生成
- 图片转音乐:图片 → LLaVA → 音乐描述 → AudioLDM2
- 批量标签:图片 → JoyTag → 标签输出
4.4 参数调节建议
- 温度设置:描述用0.1,创作用0.7
- 上下文长度:简单任务2048,复杂对话4096
- GPU层数:8GB显存用15层,16GB用27层
5. 常见问题解答
Q1: 为什么模型加载很慢?
A: 模型文件很大,第一次加载需要时间。建议使用较小的模型或者预先加载。
Q2: 显存不够用怎么办?
A: 降低GPU层数,使用CPU运行,或者选择更小的模型。
Q3: 生成的提示词质量不好?
A: 调整温度参数,使用专门的提示词生成模型,提供更详细的描述。
Q4: 音乐生成失败?
A: 确保描述清晰,避免过于复杂的要求,检查模型是否正确下载。
Q5: API调用出错?
A: 检查API密钥是否正确,网络连接是否正常,配额是否充足。
Q6: 如何选择合适的模型?
A: 根据任务需求:LLaVA适合详细分析,Moondream适合快速处理,JoyTag适合标签生成。
6. 高级应用场景
6.1 自动化内容创作
- 图片 → 描述 → 提示词 → 新图片生成
- 批量处理图片库,生成标签和描述
- 根据图片氛围自动配音乐
6.2 智能图片管理
- 自动给图片分类打标签
- 提取图片中的文字和信息
- 生成图片的详细描述
6.3 创意辅助工具
- 根据草图生成详细提示词
- 风格迁移的提示词生成
- 多样化的创意建议
6.4 教育和研究
- 图片内容分析和解释
- 视觉问答系统
- 多模态数据处理
这个插件为 ComfyUI 带来了强大的视觉语言理解能力,让AI不仅能看懂图片,还能进行各种智能处理。通过合理组合不同的节点,可以创建出非常强大的AI工作流程。