> ## Documentation Index
> Fetch the complete documentation index at: https://dripart-mintlify-b90d3c69.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 数据类型

这些是最重要的内置数据类型。您也可以[定义自己的数据类型](./more_on_inputs#custom-datatypes)。

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

## Comfy 数据类型

### COMBO

* `INPUT_TYPES` 中不需要额外参数

* Python 数据类型：定义为 `list[str]`，输出值为 `str`

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

`COMBO` 输入通常在运行时动态生成。例如，在内置的 `CheckpointLoaderSimple` 节点中，您会看到

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

or they might just be a fixed list of options,

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

### 原始类型和重路由

原始类型和重路由节点仅存在于客户端。它们没有固有的数据类型，但在连接时会采用所连接输入或输出的数据类型（这就是为什么它们不能连接到 `*` 输入...）

## Python 数据类型

### INT

* `INPUT_TYPES` 中的额外参数：

  * `default` 是必需的

  * `min` 和 `max` 是可选的

* Python 数据类型 `int`

### FLOAT

* `INPUT_TYPES` 中的额外参数：

  * `default` 是必需的

  * `min`、`max`、`step` 是可选的

* Python 数据类型 `float`

### STRING

* `INPUT_TYPES` 中的额外参数：

  * `default` 是必需的

* Python 数据类型 `str`

### BOOLEAN

* `INPUT_TYPES` 中的额外参数：

  * `default` 是必需的

* Python 数据类型 `bool`

## 张量数据类型

### IMAGE

* `INPUT_TYPES` 中不需要额外参数

* Python 数据类型 `torch.Tensor`，形状为 \[B,H,W,C]

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

### LATENT

* `INPUT_TYPES` 中不需要额外参数

* Python 数据类型 `dict`，包含一个形状为 \[B,C,H,W] 的 `torch.Tensor`

传入的 `dict` 包含键 `samples`，这是一个形状为 \[B,C,H,W] 的 `torch.Tensor`，表示
一批 `B` 个潜空间表示，具有 `C` 个通道（现有 stable diffusion 模型通常 `C=4`），高度 `H`，宽度 `W`。

高度和宽度是对应图像尺寸的 1/8（这是您在 Empty Latent Image 节点中设置的值）。

字典中的其他条目包含潜空间蒙版等内容。

{/* TODO 新的 SD 模型可能有不同的 C 值？ */}

### MASK

* `INPUT_TYPES` 中不需要额外参数

* Python 数据类型 `torch.Tensor`，形状为 \[H,W] 或 \[B,C,H,W]

### AUDIO

* `INPUT_TYPES` 中不需要额外参数

* Python 数据类型 `dict`，包含一个形状为 \[B, C, T] 的 `torch.Tensor` 和采样率。

传入的 `dict` 包含键 `waveform`，这是一个形状为 \[B, C, T] 的 `torch.Tensor`，表示
一批 `B` 个音频样本，具有 `C` 个通道（`C=2` 表示立体声，`C=1` 表示单声道），以及 `T` 个时间步（即音频样本的数量）。

`dict` 还包含另一个键 `sample_rate`，表示音频的采样率。

## 自定义采样数据类型

### Noise

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

<Tip>`seed` 被传入 `SamplerCustomAdvanced` 中的 `sample` guider，但在任何标准 guider 中似乎都没有使用。
它是可选的，所以您通常可以将其设置为 None。</Tip>

当需要添加噪声时，潜空间表示会被传入这个方法，它应该返回一个包含噪声的相同形状的 `Tensor`。

参见[噪声混合示例](./snippets#creating-noise-variations)

### Sampler

`SAMPLER` 数据类型表示一个采样器，它由一个提供 `sample` 方法的 Python 对象表示。
Stable diffusion 采样超出了本指南的范围；如果您想深入研究这部分代码，请查看 `comfy/samplers.py`。

### Sigmas

`SIGMAS` 数据类型表示由调度器产生的采样过程中每个步骤前后的 sigma 值。
它表示为一个一维张量，长度为 `steps+1`，其中每个元素表示对应步骤之前预期的噪声量，
最后一个值表示最终步骤之后的噪声量。

对于 SDXL 模型，一个具有 20 步和去噪值为 1 的 `normal` 调度器会产生：

```
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])
```

<Tip>sigma 的起始值取决于模型，这就是为什么调度器节点需要一个 `MODEL` 输入来产生 SIGMAS 输出</Tip>

### Guider

`GUIDER` 是去噪过程的泛化，由提示词或任何其他形式的条件"引导"。在 Comfy 中，guider 由
一个提供 `__call__(*args, **kwargs)` 方法的可调用 Python 对象表示，该方法由采样器调用。

`__call__` 方法接收（在 `args[0]` 中）一批噪声潜空间表示（张量 `[B,C,H,W]`），并返回噪声的预测（相同形状的张量）。

## 模型数据类型

稳定扩散模型还有一些更技术性的数据类型。最重要的是 `MODEL`、`CLIP`、`VAE` 和 `CONDITIONING`。
目前这些内容超出了本指南的范围！{/* TODO 但可能不会永远如此 */}

## 附加参数

以下是输入定义的"额外选项"部分可以使用的官方支持键的列表。

<Warning>您可以为自己的自定义小部件使用额外的键，但*不应该*将以下任何键用于其他目的。</Warning>

| 键名               | 描述                                                                                  |
| ---------------- | ----------------------------------------------------------------------------------- |
| `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`           | 声明此输入使用[延迟求值](./lazy_evaluation)                                                    |
| `rawLink`        | 当存在链接时，您将收到链接而不是求值后的值（即 `["nodeId", <outputIndex>]`）。主要在节点使用[节点扩展](./expansion)时有用。 |
