You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Gradio Cheatsheet: Interfaces Web para tus Modelos de ML 🚀
🌟 Conceptos Fundamentales
Gradio: Una biblioteca de Python de código abierto que te permite crear interfaces web (UI) para tus modelos de machine learning (o cualquier función de Python) con muy pocas líneas de código. No necesitas saber HTML, CSS ni JavaScript.
Interfaz (Interface): La clase principal de Gradio. Define la entrada, la salida y la función que se va a ejecutar.
Componentes (Components): Widgets de entrada y salida (inputs y outputs) que se usan para interactuar con la función. Ejemplos: Textbox, Image, Audio, Dataframe, Label, etc.
Función (fn): La función de Python que quieres envolver con una interfaz web. Puede ser un modelo de ML, una función de procesamiento de imágenes, una función de generación de texto, etc.
Entradas (inputs): Lista de componentes de entrada. Define cómo el usuario proporcionará los datos a la función.
Salidas (outputs): Lista de componentes de salida. Define cómo se mostrarán los resultados de la función.
Live mode: La interfaz se actualiza en tiempo real a medida que el usuario interactúa con ella.
Queueing: Gradio puede encolar las peticiones si hay muchos usuarios simultáneos.
examples: Proporciona ejemplos para la interfaz (aparecen debajo de los inputs). Es una lista de listas, donde cada sublista contiene los valores de entrada para un ejemplo.
title: Título de la interfaz.
description: Descripción de la interfaz.
article: Texto adicional (Markdown) que aparece debajo de la interfaz.
theme: Tema visual de la interfaz.
allow_flagging: Permite a los usuarios "flaggear" (marcar) ejemplos problemáticos o interesantes. Los datos flaggeados se guardan en un archivo CSV.
flagging_options: Opciones para el flag.
live: Habilita el modo "live" (la interfaz se actualiza automáticamente a medida que el usuario interactúa con los inputs).
interpretation: Agrega una función de interpretación para explicar las predicciones del modelo.
enable_queue: Habilita una cola para manejar las peticiones.
cache_examples: Cachea los ejemplos.
batch: Procesa múltiples entradas a la vez. La función fn debe aceptar una lista de entradas y devolver una lista de salidas.
max_batch_size: Tamaño máximo del batch.
scroll_to_output: Desplaza automáticamente la vista hasta la salida.
show_error: Muestra los errores.
preprocess: Preprocesa la entrada antes de pasarla a la función fn.
postprocess: Post-procesa la salida de la función fn antes de mostrarla.
layout: "horizontal", "vertical" o "unaligned" para controlar la disposición de los inputs y outputs.
🎨 Layouts (Diseño)
gr.Row(): Crea una fila. Los componentes dentro de una fila se muestran horizontalmente.
gr.Column(): Crea una columna. Los componentes dentro de una columna se muestran verticalmente.
gr.Tab(): Crea pestañas.
withgr.Blocks() asdemo: # Blocks permite un control más preciso del layout.withgr.Tab("Pestaña 1"):
withgr.Row():
text1=gr.Textbox(label="Input 1")
btn1=gr.Button("Procesar 1")
out1=gr.Textbox(label="Output 1")
withgr.Tab("Pestaña 2"):
withgr.Column():
text2=gr.Textbox(label="Input 2")
btn2=gr.Button("Procesar 2")
out2=gr.Textbox(label="Output 2")
demo.launch()
gr.Blocks(): Permite crear layouts más complejos y personalizados. Es una forma más flexible de organizar los componentes que Interface. Con Blocks, tienes control total sobre el layout y puedes definir event handlers para cada componente individualmente.
🔗 Eventos (Events)
Con Blocks, puedes definir event handlers para cada componente individualmente.
componente.change(fn, inputs, outputs): Se dispara cuando el valor del componente cambia.
componente.click(fn, inputs, outputs): Se dispara cuando se hace clic en el componente.
componente.select(fn, inputs, outputs): Se dispara al seleccionar.
Y otros eventos: blur, focus, edit, submit, upload, etc.
⚙️ Configuración
launch() options:
share: Crea un enlace público para compartir tu interfaz (temporal, dura 72 horas).
server_name: Dirección IP o nombre de host del servidor.
server_port: Puerto del servidor.
auth: Autenticación básica (usuario/contraseña).
inbrowser: Abre la interfaz en el navegador automáticamente.
inline: Muestra la app inline (en un notebook).
debug: Modo debug.
show_api: Muestra la documentación de la API.
➕ Temas Avanzados
Custom Components: Puedes crear tus propios componentes personalizados usando HTML, CSS y JavaScript.
Integración con FastAPI: Puedes integrar interfaces de Gradio en aplicaciones FastAPI.
Despliegue (Deployment):
Hugging Face Spaces (ideal para modelos de ML).
Servicios en la nube (AWS, Google Cloud, Azure, etc.).
Docker.
Gradio Client: Interactúa con una app Gradio remotamente.
Iterative Outputs: Genera la salida de forma iterativa, ideal para chatbots o procesos largos.
Progress Updates: Muestra el progreso de una tarea.