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

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

Comfy 数据类型

COMBO

  • INPUT_TYPES 中不需要额外参数

  • Python 数据类型:定义为 list[str],输出值为 str

表示下拉菜单组件。 与其他数据类型不同,COMBOINPUT_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 是必需的

    • minmax 是可选的

  • Python 数据类型 int

FLOAT

  • INPUT_TYPES 中的额外参数:

    • default 是必需的

    • minmaxstep 是可选的

  • 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 节点中设置的值)。

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

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]

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

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

参见噪声混合示例

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])
sigma 的起始值取决于模型,这就是为什么调度器节点需要一个 MODEL 输入来产生 SIGMAS 输出

Guider

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

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

模型数据类型

稳定扩散模型还有一些更技术性的数据类型。最重要的是 MODELCLIPVAECONDITIONING。 目前这些内容超出了本指南的范围!

附加参数

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

您可以为自己的自定义小部件使用额外的键,但不应该将以下任何键用于其他目的。
键名描述
default控件的默认值
min数字类型(FLOATINT)的最小值
max数字类型(FLOATINT)的最大值
step控件的增减步长
label_on布尔值为 True 时在 UI 中显示的标签 (BOOL)
label_off布尔值为 False 时在 UI 中显示的标签 (BOOL)
defaultInput默认使用输入插槽而不是支持的控件
forceInputdefaultInput 相同,且不允许转换为控件
multiline使用多行文本框 (STRING)
placeholder当为空时在 UI 中显示的占位文本 (STRING)
dynamicPrompts使前端评估动态提示词
lazy声明此输入使用延迟求值
rawLink当存在链接时,您将收到链接而不是求值后的值(即 ["nodeId", <outputIndex>])。主要在节点使用节点扩展时有用。