¿Qué pasaría si pudieras conectar modelos de IA, funciones de Python y aplicaciones de Gradio desde un mismo lienzo visual? Eso es lo que propone gr.Workflow, una herramienta integrada en Gradio que convierte un flujo de trabajo completo en una interfaz, una API REST y una aplicación lista para desplegar.
La idea puede sonar técnica, pero el concepto es bastante directo: describes los pasos de tu proceso como un grafo de nodos, conectas las entradas con las operaciones y observas cada resultado intermedio mientras el flujo se ejecuta.
Un lienzo para construir aplicaciones de IA
Con gr.Workflow, cada paso del proceso aparece como un nodo ejecutable. Puedes arrastrar conexiones entre puertos tipados, introducir datos y pulsar Run para ver qué ocurre en cada etapa.
Los nodos se dividen en tres grupos principales:
- References: representan las entradas, como un texto, una imagen o el identificador de un dataset.
- Operators: ejecutan el trabajo. Pueden ser funciones de Python, modelos disponibles mediante Hugging Face Inference Providers, otras aplicaciones de Gradio o datos del Hub.
- Subjects: representan las salidas que recibirá el usuario o una aplicación externa.
Este enfoque permite dejar de pensar en una aplicación como una única caja negra. Si un resultado no es el esperado, puedes revisar cada paso y localizar dónde está el problema. ¿El modelo generó una imagen incorrecta? ¿La función de limpieza modificó los datos? El flujo muestra la respuesta de cada nodo en su lugar.
De una imagen editada a una aplicación completa
Uno de los ejemplos utiliza una imagen cargada por el usuario y una instrucción escrita en lenguaje natural. Puedes pedir algo como "conviértela en una escena invernal", "añade gafas de sol" o "cambia el auto a color rojo".
El flujo envía la imagen y la instrucción a Qwen-Image-Edit mediante Hugging Face Inference Providers y devuelve el resultado editado. Todo el funcionamiento de la aplicación se resume en un único nodo de modelo.
Otro ejemplo muestra cómo un mismo tema puede alimentar varios procesos. A partir de una idea, el flujo puede:
- Generar una imagen con FLUX.
- Eliminar su fondo usando otra aplicación de Gradio.
- Crear una voz en off mediante un sistema de texto a voz.
- Proponer un título atractivo para un episodio con un modelo de lenguaje.
La ventaja está en que cada resultado puede tener su propio endpoint. En ese caso, la aplicación expone rutas como /sticker, /voiceover y /episode_title, de modo que puedes consumir solo la parte que necesitas sin abrir la interfaz visual.
El patrón fan-out: una entrada, muchas salidas
gr.Workflow también facilita el patrón conocido como fan-out. El nombre describe una idea sencilla: una entrada se divide y alimenta varios procesos en paralelo.
Por ejemplo, una persona escribe una idea y el sistema genera una imagen base con FLUX. Después crea dos reinterpretaciones de esa imagen, una con estilo de acuarela y otra con estética cyberpunk. Al mismo tiempo, un modelo de lenguaje escribe el título de la galería.
Cada imagen puede generarse directamente desde el texto mediante un nodo de modelo, mientras que el título puede producirse con una función de Python que realiza una llamada a un LLM. Como las tareas son independientes, pueden ejecutarse en paralelo y reducir el tiempo total de respuesta.
Este patrón resulta útil para herramientas creativas, análisis automatizados y sistemas que necesitan entregar varias perspectivas sobre una misma entrada.
Análisis de datasets sin preparar toda la infraestructura
La herramienta también puede conectarse al Datasets Server API de Hugging Face. El usuario introduce un identificador como stanfordnlp/imdb o mteb/tweet_sentiment_extraction y el flujo analiza el dataset en tiempo real.
A partir de una sola entrada, cuatro nodos pueden trabajar de manera independiente para generar:
- Una tarjeta con información general.
- Una vista previa de las primeras filas.
- Estadísticas por columna.
- Un gráfico de distribución.
En lugar de crear manualmente una aplicación para cada análisis, el flujo organiza todas las operaciones en un mismo espacio visual. Esto puede ser especialmente útil para explorar datos antes de entrenar un modelo o para crear herramientas internas de revisión.
También puedes ejecutar modelos dentro del Space
No todos los operadores tienen que depender de un servicio externo. Un nodo fn es, en esencia, una función de Python. Por eso puede cargar y ejecutar un modelo directamente dentro de un Space con acceso a GPU.
Al decorar una función con @spaces.GPU, ZeroGPU asigna una GPU cuando el nodo se ejecuta, procesa la solicitud y libera el recurso después. Así puedes utilizar modelos mediante Diffusers sin tener que diseñar una arquitectura específica para administrar la infraestructura gráfica.
Uno de los ejemplos utiliza Lightricks/LTX-Video para animar una imagen estática. El modelo se ejecuta completamente desde un nodo y gr.Workflow solo necesita invocar la función vinculada.
La herramienta no reemplaza el código. Lo organiza en una estructura visual que también puede convertirse en una aplicación y una API.
Cada workflow se convierte en una API
Una de las características más prácticas es que cada flujo creado también funciona como una API. Las salidas reciben endpoints basados en sus etiquetas, sin que tengas que construir manualmente un servidor adicional.
Puedes llamar esos endpoints desde Python con gradio_client:
from gradio_client import Client
client = Client("ysharma/gr-workflow-multi-endpoint-API")
print(client.predict("hello there friend", api_name="/word_count"))
print(client.predict(20, api_name="/fahrenheit"))
Si el endpoint utiliza un modelo o una aplicación que requiere autenticación, debes proporcionar un token de Hugging Face:
from gradio_client import Client, handle_file
client = Client(
"ysharma/gr-workflow-image-editor",
token="hf_..."
)
edited = client.predict(
handle_file("dog.jpg"),
"turn it into a snowy winter scene",
api_name="/edited_image",
)
También puedes utilizar HTTP directamente con curl:
curl -s https://ysharma-gr-workflow-multi-endpoint-API.hf.space/gradio_api/call/word_count \\
-H "Content-Type: application/json" \\
-d '{"data": ["hello there friend"]}'
Esto abre la puerta a integrar los workflows con páginas web, automatizaciones, aplicaciones móviles o servicios backend que no utilizan Gradio.
Empezar requiere muy poco código
La forma más rápida de probar la herramienta es abrir uno de los Spaces de demostración, pulsar Duplicate y comenzar a modificar las conexiones. Si prefieres iniciar desde Python, el código básico puede ser tan breve como este:
import gradio as gr
def your_function(text: str) -> str:
pass
gr.Workflow(bind=[your_function]).launch()
A partir de ahí puedes incorporar modelos, llamadas a otros Spaces, funciones propias y salidas independientes. La guía oficial también documenta los tipos de operadores, el esquema JSON y varios patrones reutilizables.
La propuesta resulta interesante porque conecta tres mundos que normalmente aparecen separados: la experimentación visual, la programación y el despliegue. Puedes diseñar un flujo arrastrando nodos, revisarlo con código y exponerlo como una API sin reconstruir el proyecto desde cero.
¿Y hasta dónde puede llegar? El equipo de Gradio adelanta que gr.Workflow puede utilizarse para construir aplicaciones complejas, incluso herramientas inspiradas en AUTOMATIC1111. La IA no está solo en el modelo que genera la respuesta. También está en la forma en que conectamos modelos, datos y operaciones para crear productos útiles.
