自定义节点开发
数据类型
这些是最重要的内置数据类型。您也可以 定义自己的数据类型 ./more on inputs custom-datatypes 。 数据类型在客户端用于防止工作流将错误形式的数据传递给节点 - 有点像强类型。 JavaScript 客户端代码通常不允许将节点输出连接到不同数据类型的输入, 不过下面会提到一些例外情况。 Comfy 数据类型 COMBO INPU
这些是最重要的内置数据类型。您也可以定义自己的数据类型。
数据类型在客户端用于防止工作流将错误形式的数据传递给节点 - 有点像强类型。 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 节点中设置的值)。
字典中的其他条目包含潜空间蒙版等内容。
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]。
当需要添加噪声时,潜空间表示会被传入这个方法,它应该返回一个包含噪声的相同形状的 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])Guider
GUIDER 是去噪过程的泛化,由提示词或任何其他形式的条件"引导"。在 Comfy 中,guider 由 一个提供 __call__(*args, **kwargs) 方法的可调用 Python 对象表示,该方法由采样器调用。
__call__ 方法接收(在 args[0] 中)一批噪声潜空间表示(张量 [B,C,H,W]),并返回噪声的预测(相同形状的张量)。
模型数据类型
稳定扩散模型还有一些更技术性的数据类型。最重要的是 MODEL、CLIP、VAE 和 CONDITIONING。 目前这些内容超出了本指南的范围!
附加参数
以下是输入定义的"额外选项"部分可以使用的官方支持键的列表。
| 键名 | 描述 |
|---|---|
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", <outputIndex>])。主要在节点使用节点扩展时有用。 |
官方原文
本页来自 Comfy-Org 官方中文文档的固定版本,并转换为 xueai 静态页面。内容以官方持续更新的页面为准。