通义千问1.5-1.8B-Chat-GPTQ-Int4集成ComfyUI:可视化AI工作流构建入门

你是不是觉得大模型调用总是离不开写代码?想快速搭建一个AI对话应用,却总被API调用、参数配置这些技术细节绊住脚?今天,我们就来换个玩法,带你走进一个“拖拖拽拽”就能玩转AI的世界。

本文将手把手教你,如何将小巧高效的通义千问1.5-1.8B-Chat-GPTQ-Int4模型,无缝集成到强大的可视化工作流工具ComfyUI中。你不需要是编程高手,只需要跟着步骤操作,就能像搭积木一样,构建出属于自己的AI对话、文本总结等应用。整个过程直观、有趣,大大降低了AI应用开发的门槛。

1. 准备工作:认识你的新工具

在开始动手之前,我们先花几分钟了解一下今天要用到的两位主角:ComfyUI和通义千问模型。这能帮你更好地理解我们每一步在做什么。

1.1 什么是ComfyUI?

你可以把ComfyUI想象成一个乐高积木平台,或者一个可视化的编程画布。它原本在AI绘画领域非常流行,用户通过连接不同的“节点”(比如“加载模型”、“输入提示词”、“生成图片”),就能构建出复杂的图像生成流程。

它的核心魅力在于“可视化”和“模块化”。所有功能都被封装成一个个带有输入输出接口的节点,你只需要用鼠标拖拽、连接这些节点,就能完成一个完整的工作流,无需编写冗长的代码。我们今天要做的,就是把通义千问模型也变成这样一个可以拖拽的“积木块”。

1.2 为什么选择通义千问1.5-1.8B-Chat-GPTQ-Int4?

通义千问是业界知名的开源大语言模型系列。我们选择的这个版本有几个特点,特别适合集成到ComfyUI里玩:

  • 小巧高效(1.8B参数):相比动辄上百亿参数的大模型,它体积小得多,对电脑硬件要求低,在普通消费级显卡上也能流畅运行,响应速度快。
  • 对话优化(Chat):这个版本专门针对对话场景进行了训练和优化,在聊天、问答、总结等任务上表现更自然。
  • 极致量化(GPTQ-Int4):这是一种模型压缩技术,能在几乎不损失效果的前提下,将模型体积压缩到原来的四分之一,运行所需的内存也更少。这意味着部署更轻松,速度更快。

简单说,我们选了一个“身材苗条”、“反应敏捷”、“擅长聊天”的模型,来作为我们可视化工作流里的智能大脑。

2. 环境搭建:让ComfyUI跑起来

工欲善其事,必先利其器。第一步,我们需要一个能正常运行的ComfyUI环境。

2.1 安装ComfyUI

对于大多数用户,最推荐的方法是使用一键启动包,这能避免复杂的Python环境配置问题。

  1. 下载启动包:访问ComfyUI的官方GitHub仓库,在“Releases”页面找到适用于你操作系统(Windows/macOS/Linux)的便携启动包并下载。
  2. 解压运行:将下载的压缩包解压到你电脑的任意位置(路径不要有中文)。进入解压后的文件夹,直接双击运行 run_nvidia_gpu.bat(Windows)或对应的启动脚本。
  3. 验证安装:等待命令行窗口初始化完成,通常会显示一个本地网址,比如 http://127.0.0.1:8188。打开你的浏览器,输入这个网址,如果能看到ComfyUI的空白画布界面,恭喜你,第一步成功了!

2.2 部署通义千问模型

我们的模型需要在一个独立的服务中运行,然后ComfyUI通过API来调用它。这里我们使用一个简单高效的模型部署框架。

假设你已经通过Git或下载获取了通义千问1.5-1.8B-Chat-GPTQ-Int4的模型文件。

  1. 准备模型目录:确保你的模型文件(通常是 .safetensors.bin 格式)放在一个单独的文件夹里,记住这个路径。
  2. 启动API服务:打开命令行,进入你的模型部署框架目录。通常可以通过一个简单的命令来启动服务,指定模型路径和端口。例如:
    python server.py --model /你的/模型/路径 --port 8000
    
  3. 测试API:服务启动后,你可以在浏览器中访问 http://127.0.0.1:8000/docs,应该能看到一个API文档页面。这证明你的模型服务已经就绪,正在监听8000端口,等待接收指令。

至此,我们的“积木平台”(ComfyUI)和“智能大脑”(通义千问API服务)都已准备就绪。接下来,就是制作连接它们俩的那个“特殊积木”。

3. 核心实战:创建你的第一个自定义节点

这是最有趣的部分!我们要在ComfyUI里创建一个全新的节点,让它能和我们启动的模型API“对话”。

3.1 了解自定义节点结构

在ComfyUI中,自定义节点本质上就是一个Python文件,它定义了这个节点长什么样(有哪些输入框、按钮)以及它被触发时做什么(执行什么函数)。

这个文件需要放在ComfyUI安装目录下的 custom_nodes 文件夹里。ComfyUI启动时会自动加载这个文件夹里的所有节点。

3.2 编写通义千问对话节点

我们来创建一个名为 QwenChatNode.py 的文件。下面的代码是一个最基础的实现,你可以直接使用或在此基础上修改。

# 文件名:QwenChatNode.py
# 存放路径:ComfyUI根目录/custom_nodes/

import requests
import json
import nodes

# 定义我们的自定义节点类
class QwenChatNode:
    # 定义节点的类别,它会在ComfyUI节点列表的哪个菜单里显示
    @classmethod
    def INPUT_TYPES(cls):
        return {
            "required": {
                "prompt": ("STRING", {"multiline": True, "default": "你好,请介绍一下你自己。"}),
                "api_url": ("STRING", {"default": "http://127.0.0.1:8000/v1/chat/completions"}),
                "max_tokens": ("INT", {"default": 512, "min": 1, "max": 2048}),
            },
        }
    # 节点在UI上显示的返回类型(这里输出文本)
    RETURN_TYPES = ("STRING",)
    RETURN_NAMES = ("response",)
    FUNCTION = "generate_chat"
    CATEGORY = "AI对话" # 自定义的节点分类

    # 节点的核心功能函数
    def generate_chat(self, prompt, api_url, max_tokens):
        # 1. 准备请求数据,格式要符合你的API服务要求
        headers = {'Content-Type': 'application/json'}
        # 这里的数据结构需要根据你实际部署的API文档调整
        data = {
            "model": "Qwen-1.8B-Chat", # 模型名称,根据实际情况修改
            "messages": [{"role": "user", "content": prompt}],
            "max_tokens": max_tokens,
            "temperature": 0.7, # 控制创造性的参数
        }

        # 2. 发送HTTP POST请求到模型API
        try:
            response = requests.post(api_url, headers=headers, data=json.dumps(data))
            response.raise_for_status() # 检查请求是否成功
            result = response.json()

            # 3. 从返回的JSON中提取生成的文本内容
            # 这里的解析路径需要根据API返回的实际结构调整
            reply_text = result['choices'][0]['message']['content'].strip()

        except requests.exceptions.RequestException as e:
            reply_text = f"请求API时出错: {e}"
        except (KeyError, IndexError, json.JSONDecodeError) as e:
            reply_text = f"解析API响应时出错: {e}"

        # 4. 将结果返回给ComfyUI工作流
        return (reply_text,)

# 将节点注册到ComfyUI系统中
NODE_CLASS_MAPPINGS = {
    "QwenChatNode": QwenChatNode
}

NODE_DISPLAY_NAME_MAPPINGS = {
    "QwenChatNode": "通义千问对话"
}

代码简单解释:

  • INPUT_TYPES: 定义了节点上的输入控件。我们创建了一个多行文本输入框(prompt)、API地址输入框和生成长度滑块。
  • FUNCTION: 指定当节点执行时,调用哪个函数(这里是generate_chat)。
  • generate_chat函数:这是核心逻辑。它构造请求数据,发送到我们之前启动的模型API,拿到回复后解析并返回。
  • 最后两行字典是“注册表”,告诉ComfyUI这个新节点的存在和显示名称。

3.3 安装与刷新

  1. 将上面代码保存为 QwenChatNode.py 文件。
  2. 把这个文件复制到 ComfyUI/custom_nodes/ 目录下。
  3. 重启ComfyUI:关闭并重新启动你的ComfyUI(双击那个 .bat 文件)。这是必须的步骤,ComfyUI只在启动时加载自定义节点。

4. 拖拽构建:你的第一个AI工作流

现在,魔法时刻到了!让我们用这个新节点来搭建一个可用的工作流。

  1. 添加节点:在ComfyUI画布上右键,在节点搜索框输入“通义千问”或“Qwen”,你应该能看到我们刚创建的 “通义千问对话” 节点。点击它,把它添加到画布上。
  2. 配置节点
    • 检查 api_url 是否是你的模型服务地址(默认是 http://127.0.0.1:8000/v1/chat/completions,请根据你的API文档调整)。
    • prompt 输入框里写下你想问的问题,比如“用一段话总结这篇教程的核心内容”。
  3. 添加输出:光有节点不行,我们还需要一个“显示器”来查看结果。右键添加一个 Primitive 节点(通常在 utils 类别下),它就是一个简单的文本显示框。
  4. 连接节点:用鼠标从 通义千问对话 节点的 response(输出点)拖出一条线,连接到 Primitive 节点的输入点。
  5. 运行工作流:点击画布右侧的 “Queue Prompt” 按钮。你会看到节点边框高亮,表示正在执行。
  6. 查看结果:执行完毕后,点击 Primitive 节点,你就能在节点的属性面板里看到通义千问模型生成的回复文本了!

恭喜你!你已经成功构建了一个最简单的AI对话工作流。你可以复制这个对话节点,串联起来,实现多轮对话;也可以在前面接入文件读取节点,后面连接文本保存节点,构建一个自动化的文本处理流水线。

5. 进阶技巧与问题排查

掌握了基础操作后,你可以尝试让这个工作流变得更强大、更实用。

5.1 让节点更强大:添加更多功能

我们的第一个节点很简单,你可以轻松地扩展它:

  • 系统指令:在 INPUT_TYPES 里增加一个 system_prompt 输入框,让用户可以设定AI的角色(如“你是一个编程助手”)。
  • 历史对话:增加一个 history 输入(类型为LISTSTRING),用于传入之前的对话记录,实现有上下文的多轮聊天。
  • 参数调节:增加 temperature(创造性)、top_p(采样范围)等参数的输入控件,让用户能精细控制生成风格。
  • 流式输出:更高级的玩法是支持流式响应,让回复一个字一个字地显示出来,体验更佳。

5.2 常见问题与解决

  • 节点不显示:确保 .py 文件放对了位置(custom_nodes目录),并且重启了ComfyUI。检查代码最后两行注册字典的键名是否正确。
  • API连接错误:检查 api_url 地址和端口号是否正确;确认你的模型API服务是否仍在运行(命令行窗口没有关闭)。
  • 返回结果解析错误:这是最常见的问题。打开你的API文档页面(http://127.0.0.1:8000/docs),实际调用一次,查看返回的JSON数据结构到底是什么样的,然后修改代码中 reply_text = result[...] 这一行的解析路径。
  • 请求超时或慢:如果生成的文本较长,可能需要调整ComfyUI或请求的超时设置。也可以在节点代码的 requests.post 中添加 timeout 参数。

6. 总结

走完这一趟,你会发现,将通义千问这样的模型集成到ComfyUI里,并没有想象中那么复杂。核心就是写一个“中间人”脚本,负责把ComfyUI节点的输入“翻译”成模型API能懂的请求,再把API的回复“翻译”回ComfyUI能显示的格式。

这种可视化集成的方式,最大的好处是降低了实验和原型构建的门槛。你可以快速地将大语言模型的能力,和你熟悉的图像生成、音频处理等其他AI节点连接起来,创造出有趣的跨模态应用。比如,先用通义千问生成一段故事描述,再把它喂给Stable Diffusion节点生成插图,整个过程都可以在一个画布里用连线完成。

当然,我们今天的例子只是一个起点。你可以根据官方API文档,封装更多功能,比如函数调用、批量处理等。希望这个教程能为你打开一扇新的大门,让你在可视化AI工作流的探索中,玩得开心,创造出更多有趣的应用。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐