| import gradio as gr |
|
|
| def create_mining_tab(): |
| with gr.Tab("⛏️ Mining", id="mining"): |
| gr.Markdown("## ⛏️ Data Mining Engine (L-DME)") |
| gr.Markdown("Configuración completa del motor de minería de datos y síntesis avanzada") |
| |
| with gr.Row(): |
| with gr.Column(): |
| gr.Markdown("### 🔧 Motor de Datos") |
| enable_dme = gr.Checkbox(value=True, label="Auto-Reparación JSON (DME)") |
| auto_recover = gr.Checkbox(value=False, label="Auto-Recuperar Metadatos al finalizar") |
| memory_json = gr.Checkbox(value=True, label="Memory JSON (persistencia)") |
| |
| gr.Markdown("### 🔍 Fases del Pipeline") |
| phase_search = gr.Checkbox(value=True, label="Fase 1: Búsqueda") |
| phase_synthesis = gr.Checkbox(value=True, label="Fase 2: Síntesis") |
| |
| gr.Markdown("### 🔄 Iteraciones") |
| iterations_enabled = gr.Checkbox(value=True, label="Habilitar Iteraciones") |
| iterations_count = gr.Slider(minimum=1, maximum=30, value=1, step=1, label="Número de Iteraciones") |
| |
| gr.Markdown("### ⏱️ Delay entre Iteraciones") |
| delay_enabled = gr.Checkbox(value=False, label="Habilitar Delay") |
| with gr.Row(): |
| delay_minutes = gr.Slider(minimum=0, maximum=1, value=0, step=1, label="Minutos") |
| delay_seconds = gr.Slider(minimum=0, maximum=59, value=0, step=1, label="Segundos") |
| |
| with gr.Column(): |
| gr.Markdown("### 📋 Estrategia de Síntesis") |
| synthesis_strategy = gr.Radio( |
| choices=["lineal", "jerárquica", "auto"], value="auto", |
| label="Estrategia" |
| ) |
| auto_strategy = gr.Checkbox(value=True, label="Auto-seleccionar estrategia") |
| hierarchical_threshold = gr.Slider(minimum=10, maximum=100, value=50, step=5, label="Umbral Jerárquico (docs)") |
| |
| gr.Markdown("### ⚡ Opciones Avanzadas") |
| parallel_synthesis = gr.Checkbox(value=True, label="Síntesis Paralela") |
| use_map_reduce = gr.Checkbox(value=True, label="Map-Reduce (Destilación)") |
| infinite_output = gr.Checkbox(value=True, label="Output Infinito") |
| max_continuation = gr.Slider(minimum=1, maximum=10, value=5, step=1, label="Max Continuaciones") |
| strict_template = gr.Checkbox(value=False, label="Plantilla Estricta") |
| |
| gr.Markdown("### 📊 Límites de Documentos") |
| max_search_docs = gr.Slider(minimum=10, maximum=200, value=100, step=10, label="Max Docs Búsqueda") |
| max_synthesis_docs = gr.Slider(minimum=5, maximum=500, value=150, step=10, label="Max Docs Síntesis") |
| chunk_size = gr.Slider(minimum=5, maximum=100, value=25, step=5, label="Chunk Size (Destilación)") |
| |
| gr.Markdown("### 🎯 Refinamiento") |
| ara_plus = gr.Checkbox(value=True, label="ARA+ Refinamiento") |
| grade_enabled = gr.Checkbox(value=True, label="GRADE Clasificación") |
| grade_limit = gr.Slider(minimum=10, maximum=100, value=50, step=10, label="Max Docs GRADE") |
| |
| gr.Markdown("### 📝 Modo Abstract") |
| abstract_mode = gr.Radio(choices=["COMPLETO", "LIMITADO"], value="COMPLETO", label="Modo Abstract") |
| abstract_char_limit = gr.Slider(minimum=100, maximum=10000, value=5000, step=100, label="Límite de Caracteres (si LIMITADO)", visible=False) |
| |
| def toggle_abstract_limit(mode): |
| return gr.update(visible=(mode == "LIMITADO")) |
| abstract_mode.change(fn=toggle_abstract_limit, inputs=[abstract_mode], outputs=[abstract_char_limit]) |
| |
| with gr.Accordion("ℹ️ Guía de Configuración", open=False): |
| gr.Markdown(""" |
| ### Estrategias de Síntesis |
| |
| | Estrategia | Descripción | Cuándo usar | |
| |-----------|-------------|-------------| |
| | **Lineal** | Un solo call de IA con todo el contexto | < 50 docs, rápido | |
| | **Jerárquica** | Divide en chunks, destila cada uno, luego sintetiza | > 50 docs, calidad | |
| | **Auto** | Selecciona jerárquica si docs > umbral | Recomendado | |
| |
| ### DME (Data Mining Engine) |
| - **Auto-Reparación**: Repara abstracts faltantes scraping HTML de repositorios |
| - **Auto-Recuperar**: Ejecuta recuperación automática al finalizar el pipeline |
| - **Memory JSON**: Persiste resultados en archivo JSON local |
| |
| ### Iteraciones |
| - Cada iteración genera queries complementarias basadas en gaps detectados |
| - Delay: Pausa entre iteraciones (útil para APIs con rate limits) |
| |
| ### Output Infinito |
| - Si la respuesta se trunca, continúa automáticamente |
| - Max continuaciones controla cuántas veces puede continuar |
| """) |
| |
| return { |
| "enable_dme": enable_dme, |
| "auto_recover": auto_recover, |
| "memory_json": memory_json, |
| "phase_search": phase_search, |
| "phase_synthesis": phase_synthesis, |
| "iterations_enabled": iterations_enabled, |
| "iterations_count": iterations_count, |
| "delay_enabled": delay_enabled, |
| "delay_minutes": delay_minutes, |
| "delay_seconds": delay_seconds, |
| "synthesis_strategy": synthesis_strategy, |
| "auto_strategy": auto_strategy, |
| "hierarchical_threshold": hierarchical_threshold, |
| "parallel_synthesis": parallel_synthesis, |
| "use_map_reduce": use_map_reduce, |
| "infinite_output": infinite_output, |
| "max_continuation": max_continuation, |
| "strict_template": strict_template, |
| "max_search_docs": max_search_docs, |
| "max_synthesis_docs": max_synthesis_docs, |
| "chunk_size": chunk_size, |
| "ara_plus": ara_plus, |
| "grade_enabled": grade_enabled, |
| "grade_limit": grade_limit, |
| "abstract_mode": abstract_mode, |
| "abstract_char_limit": abstract_char_limit, |
| } |
|
|