Skip to main content
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.

Tipos de datos de Comfy

COMBO

  • Sin parámetros adicionales en INPUT_TYPES
  • 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
o pueden ser simplemente una lista fija de opciones,

Primitive y Reroute

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 *…)

Tipos de datos de Python

INT

  • Parámetros adicionales en INPUT_TYPES:
    • default es requerido
    • min y max son opcionales
  • Tipo de dato de Python int

FLOAT

  • Parámetros adicionales en INPUT_TYPES:
    • default es requerido
    • min, max, step son opcionales
  • Tipo de dato de Python float

STRING

  • Parámetros adicionales en INPUT_TYPES:
    • default es requerido
  • Tipo de dato de Python str

BOOLEAN

  • Parámetros adicionales en INPUT_TYPES:
    • default es requerido
  • Tipo de dato de Python bool

Tipos de datos de tensor

IMAGE

  • No hay parámetros adicionales en INPUT_TYPES
  • Tipo de dato de Python torch.Tensor con forma [B,H,W,C]
Un lote de B imágenes, alto H, ancho W, con C canales (generalmente C=3 para RGB).

LATENT

  • No hay parámetros adicionales en INPUT_TYPES
  • 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.

MASK

  • No hay parámetros adicionales en INPUT_TYPES
  • Tipo de dato de Python torch.Tensor con forma [H,W] o [B,C,H,W]

AUDIO

  • No hay parámetros adicionales en INPUT_TYPES
  • 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.

Tipos de datos de muestreo personalizados

Noise

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

Sampler

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.

Sigmas

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:
El valor inicial de sigma depende del modelo, y por eso un nodo scheduler necesita una entrada MODEL para producir una salida SIGMAS

Guider

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).

Tipos de datos de modelos

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.

Parámetros adicionales

A continuación verás una lista de las claves admitidas oficialmente que puedes usar en la parte de ‘opciones extra’ de la definición de una entrada.
Puedes usar claves adicionales para tus propios widgets personalizados, pero no debes reutilizar ninguna de las claves de abajo para otros fines.