自定义节点开发

代码接口

什么是自定义节点以及如何使用它们?

概述

自定义节点是 Python 代码和可能的模型权重的组合。自定义节点非常强大,允许 Comfy 社区在 ComfyUI 中构建自己的功能。

如果您更喜欢阅读代码,可以查看仓库中的示例。否则,我们将在下面探索 Comfy 的一个内置节点。

接口

让我们通过查看 ComfyUI 内置的 Load Checkpoint 节点来研究自定义节点的接口。这个节点用于加载检查点文件。

函数

每个自定义节点都可以实现以下方法。

INPUT_TYPES

这定义了自定义节点可以接收的输入参数。

python
    @classmethod
    def INPUT_TYPES(s):
        return {
            "required": {
                "ckpt_name": (folder_paths.
            get_filename_list("checkpoints"),),
        }}

在这里,您可以看到输入类型定义为 Python 中的字典。您可以定义输入为 requiredhiddenoptional

每个输入必须有一个类型(例如 VAE)。如果您使用其中一个特殊内置类型:INTSTRINGFLOAT,那么它们可以是一个列表。

可选字段

default: 您可以定义一个默认值。

min: 您可以定义一个最小值。

max: 您可以定义一个最大值。

step: 您可以使用一个滑块。

IS_CHANGED

可选。允许节点控制何时重新执行。ComfyUI 尝试仅执行已更改的节点以提高效率。

属性

RETURN_TYPES

Tuple. 输出元组中每个元素的类型。

python
RETURN_TYPES = ("MODEL", "CLIP", "VAE")

RETURN_NAMES

可选。输出元组中每个输出的名称。

python
CATEGORY = "loaders"

FUNCTION

自定义节点类中 Python 函数的名称。

对于 LoadCheckpointSimple,函数定义如下:

python
FUNCTION = "load_checkpoint"

入口点函数

当节点被调用时,此 Python 函数会被调用。需要与 FUNCTION 中的字符串匹配。

python
def load_checkpoint(self, ckpt_name, output_vae=True, output_clip=True):
        ckpt_path = folder_paths.get_full_path("checkpoints", ckpt_name)
        out = comfy.sd.load_checkpoint_guess_config(ckpt_path, output_vae=True, output_clip=True, embedding_directory=folder_paths.get_folder_paths("embeddings"))
        return out[:3]

OUTPUT_NODE

Bool. 默认为 False。如果您的节点将输出结果/图像,请设置为 true。

CATEGORY

String. 您希望节点在 UI 中出现的类别。

python
CATEGORY = "loaders"

WEB_DIRECTORY

自定义节点可以有自定义 UI。

此属性设置 web 目录。该目录中的任何 .js 文件将被加载为前端扩展。

自定义节点还可以在 WEB_DIRECTORY/docs 文件夹中包含 markdown 文档。请参阅帮助页面部分,了解如何为您的节点添加丰富的文档。

NODE_CLASS_MAPPINGS

一个包含您希望导出的所有节点及其类名的字典。类名应该唯一。这意味着您可以在一个“自定义节点”中定义多个节点,并一起导出它们。

python
NODE_CLASS_MAPPINGS = {
    "CheckpointLoaderSimple": CheckpointLoaderSimple,
}

NODE_DISPLAY_NAME_MAPPINGS

如果您希望为每个节点定义更易读的名称。

python
NODE_DISPLAY_NAME_MAPPINGS = {
    "CheckpointLoaderSimple": "Load Checkpoint",
}

官方原文

本页来自 Comfy-Org 官方中文文档的固定版本,并转换为 xueai 静态页面。内容以官方持续更新的页面为准。

内容授权与修改

官方文档采用 GPL-3.0。本站保留许可证、固定提交号和修改说明,不代表 ComfyUI 或 Comfy-Org 对本站背书。

GPL-3.0来源和修改说明