Referencia de tipos de datos de nodos personalizados de ComfyUI: tipos de Python, formatos de tensor (IMAGE, LATENT, MASK), tipos personalizados y comodines en INPUT_TYPES.
Estos son los tipos de datos integrados más importantes. También puedes definir los tuyos propios.Los tipos de datos se usan en el lado del cliente para evitar que un flujo de trabajo pase una forma incorrecta de datos a un nodo, algo parecido al tipado fuerte.
Por lo general, el código JavaScript del lado del cliente no permitirá conectar la salida de un nodo a una entrada de otro tipo de datos, aunque a continuación se indican algunas excepciones.
Tipo de dato de Python: definido como list[str], el valor de salida es str
Representa un widget de menú desplegable.
A diferencia de otros tipos de datos, COMBO no se especifica en INPUT_TYPES mediante un str, sino mediante un list[str] que corresponde a las opciones de la lista desplegable, con la primera opción seleccionada de forma predeterminada.Las entradas COMBO a menudo se generan dinámicamente en tiempo de ejecución. Por ejemplo, en el nodo integrado CheckpointLoaderSimple, encuentras
Los nodos Primitive y Reroute solo existen en el lado del cliente. No tienen un tipo de dato intrínseco, pero cuando están conectados adoptan el tipo de dato de la entrada o salida a la que se han conectado (por eso no pueden conectarse a una entrada *…)
Tipo de dato de Python dict, que contiene un torch.Tensor con forma [B,C,H,W]
El dict que se pasa contiene la clave samples, que es un torch.Tensor con forma [B,C,H,W] que representa
un lote de B latents, con C canales (generalmente C=4 para los modelos de stable diffusion existentes), alto H, ancho W.El alto y el ancho son 1/8 del tamaño de imagen correspondiente (que es el valor que estableces en el nodo Empty Latent Image).Otras entradas del diccionario contienen cosas como máscaras de latent.
Tipo de dato de Python dict, que contiene un torch.Tensor con forma [B, C, T] y una frecuencia de muestreo.
El dict que se pasa contiene la clave waveform, que es un torch.Tensor con forma [B, C, T] que representa un lote de B muestras de audio, con C canales (C=2 para estéreo y C=1 para mono) y T pasos de tiempo (es decir, la cantidad de muestras de audio).El dict contiene otra clave sample_rate, que indica la frecuencia de muestreo del audio.
El tipo de dato NOISE representa una fuente de ruido (no el ruido en sí). Puede representarlo cualquier objeto Python
que proporcione un método para generar ruido, con la firma generate_noise(self, input_latent:Tensor) -> Tensor, y una
propiedad, seed:Optional[int].
La seed se pasa al guider de sample en SamplerCustomAdvanced, pero no parece usarse en ninguno de los guiders estándar.
Es opcional, así que por lo general puedes establecerla en None.
Cuando hay que añadir ruido, el latent se pasa a este método, que debe devolver un Tensor de la misma forma que contenga el ruido.Consulta el ejemplo de mezcla de ruido
El tipo de dato SAMPLER representa un sampler, que se representa como un objeto Python que proporciona un método sample.
El muestreo de Stable Diffusion está fuera del alcance de esta guía; consulta comfy/samplers.py si quieres profundizar en esta parte del código.
El tipo de dato SIGMAS representa los valores de sigma antes y después de cada paso del proceso de muestreo, tal como los produce un scheduler.
Se representa como un tensor unidimensional, de longitud steps+1, donde cada elemento representa el ruido que se espera que esté presente
antes del paso correspondiente, con el valor final representando el ruido presente después del último paso.Un scheduler normal, con 20 pasos y denoise de 1, para un modelo SDXL, produce:
Un GUIDER es una generalización del proceso de eliminación de ruido, “guiado” por un prompt o cualquier otra forma de conditioning. En Comfy el guider se
representa mediante un objeto Python callable que proporciona un método __call__(*args, **kwargs) que es invocado por el sample.El método __call__ recibe (en args[0]) un lote de latents con ruido (tensor [B,C,H,W]) y devuelve una predicción del ruido (un tensor de la misma forma).
Existen varios tipos de datos más técnicos para los modelos de Stable Diffusion. Los más importantes son MODEL, CLIP, VAE y CONDITIONING.
Trabajar con ellos está (por el momento) fuera del alcance de esta guía.
Cuando existe una conexión, en lugar de recibir el valor evaluado recibirás la conexión (es decir, ["nodeId", <outputIndex>]). Es útil principalmente cuando tu nodo usa Node Expansion.