letxinet / modules /config /mining_tab.py
C2MV's picture
Initial upload for Build Small Hackathon
68fb5e2 verified
Raw
History Blame Contribute Delete
6.28 kB
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,
}