云容笔谈系统镜像一键部署与ComfyUI工作流整合教程
云容笔谈系统镜像一键部署与ComfyUI工作流整合教程最近在折腾AI图像生成发现很多朋友都在用ComfyUI它那个可视化拖拽的工作流确实很直观能玩出很多花样。但有时候我也想调用一些自己部署的、功能更专一的模型比如云容笔谈系统。它生成特定风格的图像效果很不错如果能把它“塞”进ComfyUI的流程里岂不是两全其美今天我就来手把手带你走一遍这个流程先在星图平台一键部署好云容笔谈镜像然后把它变成一个ComfyUI的自定义节点。这样一来你就能在ComfyUI里像搭积木一样把云容笔谈的能力无缝嵌入到更复杂的图像生成流水线中实现更精细的控制。整个过程不算复杂跟着步骤走半小时内就能搞定。即使你对ComfyUI的节点系统不太熟也能轻松上手。1. 环境准备与快速部署首先我们需要两个“基地”一个是运行云容笔谈服务的服务器另一个是运行ComfyUI的本地或远程环境。我们先从部署云容笔谈开始。1.1 在星图平台部署云容笔谈星图平台提供了预置的云容笔谈系统镜像部署起来非常方便几乎就是点几下鼠标的事。登录与创建访问星图平台登录你的账号。在控制台找到“镜像”或“应用市场”相关入口搜索“云容笔谈”。你应该能看到官方提供的预置镜像点击“一键部署”或类似的按钮。配置实例系统会引导你配置计算实例。对于云容笔谈选择中等配置的GPU实例例如配备8GB以上显存的显卡就能获得不错的推理速度。其他配置如硬盘大小、网络等保持默认或按需调整即可。启动与访问完成配置后启动实例。等待几分钟实例状态变为“运行中”后平台通常会提供一个访问地址一个IP地址或域名后面可能跟着端口号比如http://你的实例IP:7860。点击这个链接就能在浏览器中打开云容笔谈的WebUI界面了。看到熟悉的界面就说明部署成功了。至此你的云容笔谈服务已经在云端跑起来了。记下它的访问地址我们称之为API_BASE_URL比如http://123.45.67.89:7860下一步会用到。1.2 准备ComfyUI环境接下来是ComfyUI这边。假设你已经有一个可以正常运行的ComfyUI环境。如果没有可以去ComfyUI的GitHub仓库下载官方版本按照README的说明进行安装过程也很简单。确保你的ComfyUI能正常启动并打开Web界面。我们接下来的操作主要是在ComfyUI的“自定义节点”目录里添加新文件。2. 核心概念理解API与自定义节点在动手写代码之前花两分钟理解一下背后的原理会让整个过程清晰很多。你可以把云容笔谈服务想象成一个“厨房”它接收你点的“菜谱”文本描述和参数然后做出一道“菜”生成的图片。它提供了一个标准的“点餐窗口”也就是Web API接口。ComfyUI则像一个“自动化流水线设计软件”它本身有很多标准的“工作站”内置节点比如切菜、炒菜、摆盘。我们现在要做的就是自己设计一个特殊的“工作站”这个工作站唯一的功能就是去那个“云容笔谈厨房”点餐并把做好的菜拿回来放到流水线的下一个环节。这个自建的“工作站”就是ComfyUI的自定义节点。它本质上是一个Python脚本告诉ComfyUI如何与外部服务我们的云容笔谈API对话。3. 创建云容笔谈的ComfyUI自定义节点现在我们开始制作这个关键的“连接器”。请在你的ComfyUI安装目录下找到custom_nodes文件夹。我们将在这里创建一个新的文件夹比如叫做cloud_brush_talk然后在里面放置我们的节点脚本。3.1 编写节点脚本在cloud_brush_talk文件夹内创建一个Python文件例如cloud_brush_node.py。将以下代码复制进去import os import sys import json import requests import torch import numpy as np from PIL import Image import io import folder_paths import nodes # 导入ComfyUI的节点基类和工具 class CloudBrushTalkNode: classmethod def INPUT_TYPES(cls): return { required: { prompt: (STRING, {multiline: True, default: a beautiful landscape}), negative_prompt: (STRING, {multiline: True, default: }), width: (INT, {default: 512, min: 256, max: 1024, step: 64}), height: (INT, {default: 512, min: 256, max: 1024, step: 64}), num_inference_steps: (INT, {default: 20, min: 1, max: 100}), guidance_scale: (FLOAT, {default: 7.5, min: 1.0, max: 20.0, step: 0.5}), seed: (INT, {default: 0, min: 0, max: 0xffffffffffffffff}), }, optional: { api_base_url: (STRING, {default: http://localhost:7860}), // 这里填写你的云容笔谈地址 } } RETURN_TYPES (IMAGE,) RETURN_NAMES (image,) FUNCTION generate_image CATEGORY image/generation def generate_image(self, prompt, negative_prompt, width, height, num_inference_steps, guidance_scale, seed, api_base_urlhttp://localhost:7860): 调用云容笔谈的API生成图像。 # 1. 准备API请求的端点 # 假设云容笔谈使用类似Stable Diffusion WebUI的API格式 # 具体端点可能需要根据云容笔谈的实际API文档调整 api_url f{api_base_url.rstrip(/)}/sdapi/v1/txt2img # 2. 构造请求载荷 payload { prompt: prompt, negative_prompt: negative_prompt, width: width, height: height, steps: num_inference_steps, cfg_scale: guidance_scale, seed: seed if seed 0 else -1, # 如果seed为0API可能期望-1表示随机 sampler_name: Euler a, # 采样器可根据云容笔谈支持的类型修改 batch_size: 1, } # 3. 发送POST请求 try: response requests.post(urlapi_url, jsonpayload) response.raise_for_status() # 检查请求是否成功 r response.json() except requests.exceptions.RequestException as e: print(f[CloudBrushTalk] API请求失败: {e}) # 返回一个黑色图片作为错误占位符 error_image torch.zeros((1, height, width, 3)) return (error_image,) # 4. 处理返回的图像 # 假设API返回的images字段是一个包含base64编码图片的列表 if images in r and len(r[images]) 0: image_data r[images][0] # 将base64字符串解码为图片 image_bytes io.BytesIO(base64.b64decode(image_data.split(,,1)[0] if , in image_data else image_data)) image Image.open(image_bytes).convert(RGB) # 将PIL Image转换为ComfyUI需要的Tensor格式 (B, H, W, C) image_np np.array(image).astype(np.float32) / 255.0 image_tensor torch.from_numpy(image_np)[None, ...] return (image_tensor,) else: print(f[CloudBrushTalk] API响应中未找到图像数据。响应: {r}) error_image torch.zeros((1, height, width, 3)) return (error_image,) # 向ComfyUI注册这个节点 NODE_CLASS_MAPPINGS { CloudBrushTalkNode: CloudBrushTalkNode } NODE_DISPLAY_NAME_MAPPINGS { CloudBrushTalkNode: 云容笔谈图像生成 }代码关键点解释INPUT_TYPES: 定义了节点在ComfyUI界面中显示的输入参数和控件。我们把提示词、尺寸、步数等常用参数都做成了可调节的选项。特别注意api_base_url被放在了“可选”参数里方便你随时更改服务地址。FUNCTION: 指定当节点执行时调用哪个方法这里是generate_image。generate_image方法这是核心逻辑。它构造一个符合云容笔谈API格式的请求发送出去拿到返回的图片数据并转换成ComfyUI内部能识别的Tensor格式。重要提示代码中的API端点 (/sdapi/v1/txt2img) 和请求载荷格式是基于常见兼容性假设。你需要根据你部署的云容笔谈镜像的实际API文档进行微调。通常这类服务的API文档可以在其WebUI的“API”或“Docs”页面找到。3.2 安装依赖并重启我们的节点脚本用到了requests库来发送HTTP请求。确保它在ComfyUI的Python环境中已安装。如果没有可以在ComfyUI的根目录下通过命令行安装pip install requests完成后重启你的ComfyUI服务。4. 在ComfyUI中连接与使用重启后打开ComfyUI的Web界面。找到节点在节点菜单中你应该能在image/generation分类下或者直接搜索“云容笔谈”找到我们刚添加的“云容笔谈图像生成”节点。把它拖到画布上。配置参数在节点的api_base_url输入框里填入第一步记下的云容笔谈服务地址例如http://123.45.67.89:7860。填写你想要的prompt正面提示词和negative_prompt负面提示词。调整图像尺寸、生成步数、引导系数等参数。连接工作流这个节点的输出是一个IMAGE。你可以将它连接到VAE解码、图像预览、保存图像等后续节点组成一个完整的流程。例如一个最简单的流程可以是云容笔谈图像生成-Preview Image预览节点。执行生成点击“Queue Prompt”按钮。ComfyUI会将工作流数据发送到后端执行。你会看到请求被发送到你的云容笔谈服务器稍等片刻生成的图片就会流回ComfyUI并显示在预览节点中。5. 实用技巧与进阶思路成功跑通基础流程后你可以玩得更深入一些参数调优根据云容笔谈模型的特点调整sampler_name采样器、CFG scale引导系数等参数找到最佳出图效果。你可以在节点脚本的payload字典里添加更多API支持的参数。错误处理目前的脚本错误处理比较简单。你可以增强它比如在请求失败时在ComfyUI界面上弹出更明确的错误信息。封装为常用工作流将配置好的“云容笔谈节点后处理节点”保存为一个模板Workflow以后就可以一键加载使用。探索其他API如果云容笔谈还支持图生图、超分辨率等其他功能你可以依葫芦画瓢创建img2img_node、upscale_node等丰富你的工具箱。本地网络优化如果ComfyUI和云容笔谈服务都在同一个内网使用内网IP地址可以显著降低延迟。6. 总结走完这一趟你会发现把独立的AI服务整合进ComfyUI并没有想象中那么难。核心就是理解“自定义节点”作为一个桥梁的作用它负责将ComfyUI工作流中的数据翻译成外部服务能听懂的“语言”API调用再把结果“翻译”回来。这种整合方式极大地扩展了ComfyUI的边界。你不再局限于本地安装的模型可以将任何提供了HTTP API的AI服务不仅仅是图像生成也可以是语言模型、语音合成等都变成ComfyUI流水线上的一个环节。这为构建复杂、跨平台、混合多模型能力的自动化AI工作流打开了大门。下次当你在星图镜像广场看到有趣的新模型时不妨想想它能不能也变成一个ComfyUI节点呢动手试试看吧。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。