> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# ComfyUI自定义节点数据类型
- URL: https://www.hubwiz.com/blog/comfyui-custom-node-server-side-datatypes/
- Published: 2024-11-22T07:54:51.000Z
- Updated: 2024-11-22T07:54:51.000Z
- Description: 本文介绍ComfyUI自定义节点开发最重要的内置数据类型。你也可以定义自己的数据类型。
- Author: admin
- Tags: LIBRARY, COMFYUI, PYTHON, #Import 2026-10-14 14:41

这些是最重要的内置数据类型。你也可以定义自己的数据类型。

> 数据类型在 `INPUT_TYPES` 中由 str 指定，但 `COMBO` 除外，它是 `list[str]`

数据类型在客户端使用，以防止工作流将错误形式的数据传递到节点 - 有点像强类型。JavaScript 客户端代码通常不允许将节点输出连接到不同数据类型的输入，但下面列出了一些例外。

## 1、​Comfy的数据类型

### 1.1 COMBO

- `INPUT_TYPES` 中没有其他参数
- Python 数据类型：定义为 `list[str]`，输出值为 `str`

表示下拉菜单小部件。与其他数据类型不同， `COMBO` 不是在 `INPUT_TYPES` 中由 `str` 指定，而是通过与下拉列表中的选项相对应的 `list[str]` 指定，默认选择第一个选项。

`COMBO` 输入通常在运行时动态生成。例如，在内置的 `CheckpointLoaderSimple` 节点中，你可以找到：

```
"ckpt_name": (folder_paths.get_filename_list("checkpoints"), )

```

或者它们可能只是一个固定的选项列表，

```
"play_sound": (["no","yes"], {}),

```

### 1.2 元节点和重路由

元节点（primitive）和重路由（reroute）节点仅存在于客户端。它们没有内在的数据类型，但连接时它们会采用已连接的输入或输出的数据类型（这就是它们无法连接到 `*` 输入的原因……）

## ​2、Python 数据类型

### 2.1 INT

- `INPUT_TYPES` 中的其他参数： `default`是必需的， `min` 和 `max` 是可选的
- Python 数据类型 `int`

### 2.2 FLOAT

- `INPUT_TYPES` 中的其他参数： `default`是必需的， `min`、 `max`、 `step` 是可选的
- Python 数据类型 `float`​

### 2.3 STRING

- `INPUT_TYPES` 中的其他参数： `default`是必需的，Python 数据类型 `str`

## 3、Tensor 数据类型

> MASK、IMAGE 和 LATENT 都使用 `torch.Tensor` 类型，但它们的形状不同。请参阅“图像、潜在和蒙版”中的讨论。​

### 3.1 IMAGE

- `INPUT_TYPES` 中没有其他参数
- Python 数据类型 `torch.Tensor`，形状为 `[B,H,W,C]`

一批 B 幅图像，高度为 H，宽度为 W，具有 C 个通道（RGB 通常为 C=3）。

### ​3.2 LATENT

- `INPUT_TYPES` 中没有其他参数
- Python 数据类型字典，包含一个形状为 `[B,C,H,W]` 的 `torch.Tensor`

传递的字典包含关键样本，它是一个形状为 `[B,C,H,W]` 的 `torch.Tensor`，代表一批 B 幅潜伏图像，具有 C 个通道（对于现有的稳定扩散模型通常为 C=4），高度为 H，宽度为 W。

高度和宽度是相应图像大小的 1/8（这是你在 Empty Latent Image 节点中设置的值）。

字典中的其他条目包含潜伏掩码之类的内容。

### ​3.3 MASK

- `INPUT_TYPES` 中没有其他参数
- Python 数据类型 `torch.Tensor` 具有形状 `[H,W]` 或 `[B,C,H,W]`

## 4、自定义采样数据类型

### 4.1 NOISE

`NOISE` 数据类型表示噪声源（而不是实际噪声本身）。它可以由任何提供生成噪声方法的 Python 对象表示，其签名为 `generate_noise(self, input_latent:Tensor) -> Tensor`，以及属性 `seed:Optional[int]`。

> seed传递到 SamplerCustomAdvanced 中的样本引导器中，但似乎未在任何标准引导器中使用。它是可选的，因此你通常可以将其设置为 None。

当要添加噪声时，潜伏期将传递到此方法中，该方法应返回包含噪声的相同形状的张量。

参见[噪声混合示例](https://docs.comfy.org/essentials/custom%5Fnode%5Fsnippets?ref=hubwiz.com#creating-noise-variations)。

### 4.2 SAMPLER

`SAMPLER` 数据类型表示采样器，它表示为提供采样方法的 Python 对象。稳定扩散采样超出了本指南的范围；如果你想深入了解代码的这一部分，请参阅 `comfy/samplers.py`。

### 4.3 SIGMAS

`SIGMAS` 数据类型表示由调度程序生成的采样过程每个步骤之前和之后的 sigma 值。这表示为长度为 steps+1 的一维张量，其中每个元素表示在相应步骤之前预计存在的噪声，最终值表示最后一步之后存在的噪声。

对于 SDXL 模型，具有 20 个步骤和 1 的降噪的正常调度程序会产生：

```
tensor([14.6146, 10.7468,  8.0815,  6.2049,  4.8557,  
         3.8654,  3.1238,  2.5572,  2.1157,  1.7648,  
         1.4806,  1.2458,  1.0481,  0.8784,  0.7297,  
         0.5964,  0.4736,  0.3555,  0.2322,  0.0292,  0.0000])

```

> `sigma` 的起始值取决于模型，这就是调度程序节点需要 MODEL 输入来产生 SIGMAS 的原因输出

### 4.4 GUIDER

`GUIDER` 是去噪过程的概括，由提示或任何其他形式的条件“引导”。在 Comfy 中，引导器由可调用的 Python 对象表示，提供由样本调用的 `__call__(*args, **kwargs)` 方法。

`__call__` 方法（​​在 `args[0]` 中）获取一批噪声潜变量（张量 `[B,C,H,W]`），并返回噪声的预测（相同形状的张量）。

## ​5、模型数据类型

稳定扩散模型有许多更技术性的数据类型。最重要的是 `MODEL`、 `CLIP`、 `VAE` 和 `CONDITIONING`。使用这些数据类型（当前）超出了本指南的范围！

## ​6、附加参数

下面是官方支持的键列表，这些键可用于输入定义的“额外选项”部分。

> 你可以将附加键用于自己的自定义小部件，但不应将以下任何键重新用于其他目的。

| 键              | 描述                                                        |
| -------------- | --------------------------------------------------------- |
| default        | 小部件的默认值                                                   |
| min            | 数字的最小值（FLOAT 或 INT）                                       |
| max            | 数字的最大值（FLOAT 或 INT）                                       |
| step           | 小部件的增加或减少量                                                |
| label\_on      | 布尔值为 True 时在 UI 中使用的标签（BOOL）                              |
| label\_off     | 布尔值为 False 时在 UI 中使用的标签（BOOL）                             |
| defaultInput   | 默认为输入套接字，而不是受支持的部件                                        |
| forceInput     | defaultInput 并且不允许转换为部件                                   |
| multiline      | 使用多行文本框（STRING）                                           |
| placeholder    | 为空时在 UI 中显示的占位符文本（STRING）                                 |
| dynamicPrompts | 使前端评估动态提示                                                 |
| lazy           | 声明此输入使用惰性求值                                               |
| rawLink        | 当链接存在时，你将收到链接（即 \["nodeId", \]），而不是接收求值。主要在你的节点使用节点扩展时有用。 |

---

原文链接：[ComfyUI Server Side Datatypes](https://docs.comfy.org/essentials/custom%5Fnode%5Fdatatypes?ref=hubwiz.com)