import gradio as gr from functions import ( cargar_modalidades_tareas, generar_grafica_barras, buscar_datasets, generar_dataset, generar_encabezado, actualizar_modalidades_tareas_desde_huggingface ) # Cargar modalidades inicialmente MODALIDAD_TAREAS = cargar_modalidades_tareas() tareas_iniciales = list(MODALIDAD_TAREAS.keys()) with gr.Blocks() as demo: gr.Markdown("# Diseñador de Modelos de Redes Neuronales y Generador de Datasets Multimodales") # Panel 1: Tareas Disponibles (declarado primero) with gr.Row(): tareas_disponibles = gr.CheckboxGroup( choices=tareas_iniciales, label="Tareas Disponibles", interactive=True ) # Panel de Actualización with gr.Row(): btn_actualizar_json = gr.Button("Actualizar Modalidades desde HuggingFace") mensaje_actualizacion = gr.Textbox(label="Estado", interactive=False) # Función para actualizar y refrescar def actualizar_tareas_handler(): try: nuevas_tareas = actualizar_modalidades_tareas_desde_huggingface() return nuevas_tareas, "✅ Modalidades actualizadas: " + ", ".join(nuevas_tareas) except Exception as e: return tareas_iniciales, f"❌ Error: {str(e)}" # Vincular evento btn_actualizar_json.click( fn=actualizar_tareas_handler, inputs=[], outputs=[tareas_disponibles, mensaje_actualizacion] # Actualizar opciones y mensaje ) # Panel 2: Gráfica de Barras with gr.Row(): grafica_barras = gr.Plot() btn_actualizar_grafica = gr.Button("Actualizar Gráfica") btn_actualizar_grafica.click( fn=lambda tareas: generar_grafica_barras(tareas, MODALIDAD_TAREAS), inputs=tareas_disponibles, outputs=grafica_barras ) # Panel 3: Generar Encabezado with gr.Row(): btn_generar_encabezado = gr.Button("Generar Encabezado") encabezado_generado = gr.Textbox(label="Encabezado Generado", interactive=False) btn_generar_encabezado.click( fn=generar_encabezado, inputs=tareas_disponibles, outputs=encabezado_generado ) # Panel 4: Buscar Datasets with gr.Row(): with gr.Column(): filtro_tamaño = gr.Dropdown(choices=["small", "medium", "large"], label="Tamaño") filtro_licencia = gr.Dropdown(choices=["mit", "apache-2.0", "cc-by-4.0"], label="Licencia") btn_buscar_datasets = gr.Button("Buscar Datasets Útiles") datasets_encontrados = gr.CheckboxGroup(label="Datasets Compatibles") btn_buscar_datasets.click( fn=buscar_datasets, inputs=[tareas_disponibles, filtro_tamaño, filtro_licencia], outputs=datasets_encontrados ) # Panel 5: Generar Dataset with gr.Row(): pagina_actual = gr.Number(value=1, label="Página") 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", interactive=False) btn_generar_dataset.click( fn=generar_dataset, inputs=[encabezado_generado, datasets_encontrados, pagina_actual, filas_por_pagina], outputs=vista_previa_csv ) demo.launch()