# app.py import gradio as gr import matplotlib.pyplot as plt from functions import ( cargar_modalidades_tareas, validar_modalidades_tareas, generar_grafica_barras, buscar_datasets, generar_dataset, generar_encabezado_inteligente ) # Cargar modalidades y tareas MODALIDAD_TAREAS = cargar_modalidades_tareas() validar_modalidades_tareas(MODALIDAD_TAREAS) # Interfaz Gradio with gr.Blocks() as demo: gr.Markdown("# Diseñador de Modelos de Redes Neuronales y Generador de Datasets Multimodales") # Panel 1: Lista de Tareas Disponibles con Checkboxes with gr.Row(): gr.Markdown("### Selecciona Tareas") todas_las_tareas = [tarea for tareas in MODALIDAD_TAREAS.values() for tarea in tareas] tareas_seleccionadas = gr.CheckboxGroup(choices=todas_las_tareas, label="Tareas Disponibles", interactive=True) # Panel 2: Gráfica de Barras with gr.Row(): gr.Markdown("### Distribución de Tareas Seleccionadas por Modalidad") grafica_barras = gr.Plot(label="Gráfica de Barras") btn_actualizar_grafica = gr.Button("Actualizar Gráfica") btn_actualizar_grafica.click( fn=lambda tareas: generar_grafica_barras(tareas, MODALIDAD_TAREAS), inputs=tareas_seleccionadas, outputs=grafica_barras ) # Panel 3: Generar Encabezado del CSV con IA with gr.Row(): gr.Markdown("### Generar Encabezado del CSV con IA") api_key_input = gr.Textbox( label="Introduce tu API Key de HuggingFace", type="password", placeholder="TU_API_KEY" ) btn_generar_encabezado = gr.Button("Generar Encabezado del CSV") encabezado_generado = gr.Textbox(label="Encabezado Generado", interactive=False) btn_generar_encabezado.click( fn=lambda tareas, api_key: generar_encabezado_inteligente(tareas, api_key), inputs=[tareas_seleccionadas, api_key_input], outputs=encabezado_generado ) # Panel 4: Buscar Datasets Compatibles con Filtros Adicionales with gr.Row(): with gr.Column(): filtro_tamaño = gr.Dropdown(choices=["small", "medium", "large"], label="Filtrar por Tamaño") filtro_licencia = gr.Dropdown(choices=["mit", "apache-2.0", "cc-by-4.0"], label="Filtrar por Licencia") btn_buscar_datasets = gr.Button("Buscar Datasets Compatibles") datasets_encontrados = gr.Textbox(label="Datasets Encontrados", interactive=False) btn_buscar_datasets.click( buscar_datasets, inputs=[tareas_seleccionadas, filtro_tamaño, filtro_licencia], outputs=datasets_encontrados ) # Panel 5: Generar Dataset con Paginación with gr.Row(): pagina_actual = gr.Number(value=1, label="Página Actual") filas_por_pagina = gr.Number(value=5, label="Filas por Página") btn_generar_dataset = gr.Button("Generar Dataset") vista_previa_csv = gr.Textbox(label="Vista Previa del CSV", interactive=False) btn_descargar_csv = gr.File(label="Descargar CSV") btn_generar_dataset.click( generar_dataset, inputs=[encabezado_generado, datasets_encontrados, pagina_actual, filas_por_pagina], outputs=vista_previa_csv ) # Ejecutar la aplicación demo.launch()