ComfyUI Ollama节点开发指南:从零开始构建自定义LLM交互节点

📅 2026/8/6 22:11:48
ComfyUI Ollama节点开发指南:从零开始构建自定义LLM交互节点
ComfyUI Ollama节点开发指南从零开始构建自定义LLM交互节点【免费下载链接】comfyui-ollama项目地址: https://gitcode.com/gh_mirrors/co/comfyui-ollamaComfyUI Ollama是一个强大的工具它能将大型语言模型(LLM)的能力无缝集成到ComfyUI工作流中。本指南将带您从零开始学习如何开发自定义的Ollama节点让您能够充分利用LLM的强大功能打造属于自己的AI工作流。准备工作安装与环境配置在开始开发自定义节点之前我们需要先安装ComfyUI Ollama插件。最简单的方法是通过ComfyUI的管理器进行安装。您也可以通过命令行克隆仓库进行安装git clone https://gitcode.com/gh_mirrors/co/comfyui-ollama安装完成后确保您的Ollama服务器正在运行。默认情况下Ollama服务器会在本地的11434端口启动地址为http://127.0.0.1:11434。理解ComfyUI节点结构在ComfyUI中每个节点都是一个Python类它定义了节点的输入、输出和功能。让我们通过分析现有的Ollama节点来理解节点的基本结构。节点类的基本组成一个典型的ComfyUI节点类包含以下几个关键部分INPUT_TYPES类方法定义节点的输入参数RETURN_TYPES和RETURN_NAMES定义节点的输出类型和名称FUNCTION指定节点的主要功能方法CATEGORY指定节点在ComfyUI菜单中的分类功能方法实现节点的具体逻辑让我们以OllamaOptionsV2类为例看看这些部分是如何实现的class OllamaOptionsV2: classmethod def INPUT_TYPES(s): return { required: { enable_mirostat: (BOOLEAN, {default: False}), mirostat: (INT, {default: 0, min: 0, max: 2, step: 1}), # 更多参数... } } RETURN_TYPES (OLLAMA_OPTIONS,) RETURN_NAMES (options,) FUNCTION ollama_options CATEGORY Ollama def ollama_options(self, **kargs): return (kargs,)从零开始创建自定义节点现在让我们开始创建一个简单的自定义节点。我们将创建一个OllamaHelloWorld节点它接收一个名字作为输入并使用Ollama生成一个问候语。步骤1创建节点类首先创建一个新的Python文件例如custom_nodes.py并定义我们的节点类class OllamaHelloWorld: classmethod def INPUT_TYPES(s): return { required: { name: (STRING, {default: World, multiline: False}), connectivity: (OLLAMA_CONNECTIVITY,), } } RETURN_TYPES (STRING,) RETURN_NAMES (greeting,) FUNCTION generate_greeting CATEGORY Ollama/Custom def generate_greeting(self, name, connectivity): # 实现生成问候语的逻辑 pass步骤2实现节点功能接下来我们需要实现generate_greeting方法该方法将使用Ollama生成问候语def generate_greeting(self, name, connectivity): from ollama import Client client Client(hostconnectivity[url]) prompt fHello, {name}! Please introduce yourself in one sentence. response client.generate( modelconnectivity[model], promptprompt, keep_alivef{connectivity[keep_alive]}{m if connectivity[keep_alive_unit] minutes else h} ) return (response[response],)步骤3注册节点最后我们需要在__init__.py文件中注册我们的新节点from .CompfyuiOllama import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS from .deprecated_nodes import DEPRECATED_NODE_CLASS_MAPPINGS, DEPRECATED_NODE_DISPLAY_NAME_MAPPINGS from .custom_nodes import OllamaHelloWorld # 导入我们的新节点 # 合并节点映射 NODE_CLASS_MAPPINGS { **NODE_CLASS_MAPPINGS, **DEPRECATED_NODE_CLASS_MAPPINGS, OllamaHelloWorld: OllamaHelloWorld # 添加新节点 } NODE_DISPLAY_NAME_MAPPINGS { **NODE_DISPLAY_NAME_MAPPINGS, **DEPRECATED_NODE_DISPLAY_NAME_MAPPINGS, OllamaHelloWorld: Ollama Hello World # 设置节点显示名称 } WEB_DIRECTORY ./web __all__ [NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS, WEB_DIRECTORY]高级节点开发技巧处理图像输入ComfyUI Ollama提供了处理图像输入的能力这对于视觉语言模型非常有用。让我们看看如何在节点中处理图像输入class OllamaImageCaption: classmethod def INPUT_TYPES(s): return { required: { image: (IMAGE,), connectivity: (OLLAMA_CONNECTIVITY,), } } RETURN_TYPES (STRING,) RETURN_NAMES (caption,) FUNCTION generate_caption CATEGORY Ollama/Custom def generate_caption(self, image, connectivity): import base64 from io import BytesIO import numpy as np from PIL import Image as PILImage from ollama import Client # 将ComfyUI图像转换为base64编码 i 255. * image.cpu().numpy() img PILImage.fromarray(np.clip(i, 0, 255).astype(np.uint8)) buffered BytesIO() img.save(buffered, formatPNG) img_bytes base64.b64encode(buffered.getvalue()) image_b64 str(img_bytes, utf-8) client Client(hostconnectivity[url]) response client.generate( modelconnectivity[model], promptDescribe this image in detail., images[image_b64], keep_alivef{connectivity[keep_alive]}{m if connectivity[keep_alive_unit] minutes else h} ) return (response[response],)创建复杂工作流Ollama节点可以相互连接形成复杂的工作流。例如您可以创建一个包含连接性节点、选项节点和生成节点的工作流这种工作流允许您灵活地配置Ollama连接和生成选项从而获得更精确的控制和更好的结果。测试与调试您的节点开发节点时测试和调试非常重要。ComfyUI Ollama提供了内置的调试功能您可以在节点中启用def generate_greeting(self, name, connectivity, debugFalse): if debug: print(fGenerating greeting for {name} using model {connectivity[model]}) # ... 其余代码 ...启用调试后您可以在ComfyUI的控制台中看到详细的输出信息帮助您诊断问题。分享您的自定义节点一旦您开发并测试了自己的节点您可以将它们分享给社区。最简单的方法是创建一个新的GitHub仓库并包含以下内容您的节点代码详细的README文件说明节点的功能和使用方法示例工作流文件结语开发自定义Ollama节点为您提供了无限的可能性可以将LLM的强大功能集成到ComfyUI工作流中。无论是简单的文本生成还是复杂的视觉语言任务您都可以通过自定义节点实现。希望本指南能帮助您开始您的ComfyUI Ollama节点开发之旅。祝您创造出令人惊叹的AI工作流【免费下载链接】comfyui-ollama项目地址: https://gitcode.com/gh_mirrors/co/comfyui-ollama创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考