Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -21,6 +21,7 @@ current_pract_response = None
|
|
| 21 |
current_metadata = None
|
| 22 |
current_temp_acad = None
|
| 23 |
current_topp_acad = None
|
|
|
|
| 24 |
|
| 25 |
print("[DEBUG] Variables globales inicializadas")
|
| 26 |
|
|
@@ -33,7 +34,7 @@ def generate_responses(
|
|
| 33 |
Genera ambas respuestas (académica + práctica) y habilita sistema de valoración
|
| 34 |
"""
|
| 35 |
global current_timestamp, current_input, current_acad_response, current_pract_response
|
| 36 |
-
global current_metadata, current_temp_acad, current_topp_acad
|
| 37 |
|
| 38 |
from datetime import datetime
|
| 39 |
|
|
@@ -54,6 +55,7 @@ def generate_responses(
|
|
| 54 |
citations = result["citations"]
|
| 55 |
|
| 56 |
current_metadata = metadata
|
|
|
|
| 57 |
|
| 58 |
print(f"✅ Análisis completado:")
|
| 59 |
print(f" - Tipo conflicto: {metadata['conflict_type']} ({metadata['confidence']}%)")
|
|
@@ -92,6 +94,7 @@ def generate_responses(
|
|
| 92 |
return (
|
| 93 |
acad_response,
|
| 94 |
pract,
|
|
|
|
| 95 |
gr.update(interactive=True), # stars
|
| 96 |
gr.update(interactive=True), # coach_notes
|
| 97 |
gr.update(interactive=True), # submit_btn
|
|
@@ -107,6 +110,7 @@ def generate_responses(
|
|
| 107 |
return (
|
| 108 |
f"Error generando análisis académico:\n{str(e)}",
|
| 109 |
f"Error generando guía práctica:\n{str(e)}",
|
|
|
|
| 110 |
gr.update(interactive=False),
|
| 111 |
gr.update(interactive=False),
|
| 112 |
gr.update(interactive=False),
|
|
@@ -176,13 +180,13 @@ def save_rating_to_dataset(stars, coach_notes):
|
|
| 176 |
|
| 177 |
print("[DEBUG] Creando interfaz Gradio...")
|
| 178 |
|
| 179 |
-
with gr.Blocks(title="Quoota RAG24 Alpha") as demo:
|
| 180 |
|
| 181 |
gr.Markdown("""
|
| 182 |
# 🧠 Quoota RAG24 Alpha
|
| 183 |
### Sistema de análisis de conflictos empresariales para fine-tuning
|
| 184 |
|
| 185 |
-
**RAG24:** Análisis académico basado en 24 obras (16,
|
| 186 |
**RAG7:** Guía práctica paso a paso
|
| 187 |
""")
|
| 188 |
|
|
@@ -235,9 +239,9 @@ with gr.Blocks(title="Quoota RAG24 Alpha") as demo: # SIN theme parameter
|
|
| 235 |
show_label=False
|
| 236 |
)
|
| 237 |
|
| 238 |
-
#
|
| 239 |
with gr.Row():
|
| 240 |
-
with gr.Column():
|
| 241 |
gr.Markdown("### 📚 Análisis Académico (RAG24)")
|
| 242 |
gr.Markdown("*Basado en 24 obras académicas con sistema multilingüe*")
|
| 243 |
acad_out = gr.Textbox(
|
|
@@ -246,7 +250,7 @@ with gr.Blocks(title="Quoota RAG24 Alpha") as demo: # SIN theme parameter
|
|
| 246 |
interactive=False
|
| 247 |
)
|
| 248 |
|
| 249 |
-
with gr.Column():
|
| 250 |
gr.Markdown("### 📋 Guía Práctica (RAG7)")
|
| 251 |
gr.Markdown("*Pasos concretos para resolver el conflicto*")
|
| 252 |
pract_out = gr.Textbox(
|
|
@@ -255,6 +259,32 @@ with gr.Blocks(title="Quoota RAG24 Alpha") as demo: # SIN theme parameter
|
|
| 255 |
interactive=False
|
| 256 |
)
|
| 257 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 258 |
# EJEMPLOS
|
| 259 |
gr.Examples(
|
| 260 |
examples=[
|
|
@@ -284,6 +314,7 @@ with gr.Blocks(title="Quoota RAG24 Alpha") as demo: # SIN theme parameter
|
|
| 284 |
outputs=[
|
| 285 |
acad_out,
|
| 286 |
pract_out,
|
|
|
|
| 287 |
stars,
|
| 288 |
coach_notes,
|
| 289 |
submit_btn,
|
|
|
|
| 21 |
current_metadata = None
|
| 22 |
current_temp_acad = None
|
| 23 |
current_topp_acad = None
|
| 24 |
+
current_context = None # NUEVO: guardar citations para mostrar
|
| 25 |
|
| 26 |
print("[DEBUG] Variables globales inicializadas")
|
| 27 |
|
|
|
|
| 34 |
Genera ambas respuestas (académica + práctica) y habilita sistema de valoración
|
| 35 |
"""
|
| 36 |
global current_timestamp, current_input, current_acad_response, current_pract_response
|
| 37 |
+
global current_metadata, current_temp_acad, current_topp_acad, current_context
|
| 38 |
|
| 39 |
from datetime import datetime
|
| 40 |
|
|
|
|
| 55 |
citations = result["citations"]
|
| 56 |
|
| 57 |
current_metadata = metadata
|
| 58 |
+
current_context = citations # GUARDAR para mostrar
|
| 59 |
|
| 60 |
print(f"✅ Análisis completado:")
|
| 61 |
print(f" - Tipo conflicto: {metadata['conflict_type']} ({metadata['confidence']}%)")
|
|
|
|
| 94 |
return (
|
| 95 |
acad_response,
|
| 96 |
pract,
|
| 97 |
+
citations, # NUEVO: mostrar contexto académico
|
| 98 |
gr.update(interactive=True), # stars
|
| 99 |
gr.update(interactive=True), # coach_notes
|
| 100 |
gr.update(interactive=True), # submit_btn
|
|
|
|
| 110 |
return (
|
| 111 |
f"Error generando análisis académico:\n{str(e)}",
|
| 112 |
f"Error generando guía práctica:\n{str(e)}",
|
| 113 |
+
f"Error en retrieval:\n{str(e)}", # context_out
|
| 114 |
gr.update(interactive=False),
|
| 115 |
gr.update(interactive=False),
|
| 116 |
gr.update(interactive=False),
|
|
|
|
| 180 |
|
| 181 |
print("[DEBUG] Creando interfaz Gradio...")
|
| 182 |
|
| 183 |
+
with gr.Blocks(title="Quoota RAG24 Alpha") as demo:
|
| 184 |
|
| 185 |
gr.Markdown("""
|
| 186 |
# 🧠 Quoota RAG24 Alpha
|
| 187 |
### Sistema de análisis de conflictos empresariales para fine-tuning
|
| 188 |
|
| 189 |
+
**RAG24:** Análisis académico basado en 24 obras (16,997 chunks vectorizados)
|
| 190 |
**RAG7:** Guía práctica paso a paso
|
| 191 |
""")
|
| 192 |
|
|
|
|
| 239 |
show_label=False
|
| 240 |
)
|
| 241 |
|
| 242 |
+
# FILA 1: Outputs principales (análisis + guía)
|
| 243 |
with gr.Row():
|
| 244 |
+
with gr.Column(scale=2):
|
| 245 |
gr.Markdown("### 📚 Análisis Académico (RAG24)")
|
| 246 |
gr.Markdown("*Basado en 24 obras académicas con sistema multilingüe*")
|
| 247 |
acad_out = gr.Textbox(
|
|
|
|
| 250 |
interactive=False
|
| 251 |
)
|
| 252 |
|
| 253 |
+
with gr.Column(scale=2):
|
| 254 |
gr.Markdown("### 📋 Guía Práctica (RAG7)")
|
| 255 |
gr.Markdown("*Pasos concretos para resolver el conflicto*")
|
| 256 |
pract_out = gr.Textbox(
|
|
|
|
| 259 |
interactive=False
|
| 260 |
)
|
| 261 |
|
| 262 |
+
# FILA 2: Contexto académico (colapsable)
|
| 263 |
+
with gr.Row():
|
| 264 |
+
with gr.Column():
|
| 265 |
+
with gr.Accordion("🔬 Contexto Académico (para validación coach)", open=True):
|
| 266 |
+
gr.Markdown("""
|
| 267 |
+
**Este panel muestra el contexto que recibió el modelo LLM para generar el análisis académico.**
|
| 268 |
+
|
| 269 |
+
Úsalo para validar si:
|
| 270 |
+
- ✅ Las fuentes recuperadas son relevantes al conflicto
|
| 271 |
+
- ✅ Los pesos metodológicos son correctos (ego/data/mixed)
|
| 272 |
+
- ✅ Los scores híbridos tienen sentido (similitud + peso + tags)
|
| 273 |
+
- ✅ El LLM citó las fuentes correctamente en su respuesta académica
|
| 274 |
+
|
| 275 |
+
**Información incluida:**
|
| 276 |
+
- Sistema de retrieval aplicado (conflict type, pesos por categoría)
|
| 277 |
+
- Top 5 fuentes con scoring híbrido desglosado
|
| 278 |
+
- Contenido completo de cada chunk
|
| 279 |
+
- Autores identificados en cada fuente
|
| 280 |
+
""")
|
| 281 |
+
context_out = gr.Textbox(
|
| 282 |
+
label="Citations académicas completas (enviadas al LLM)",
|
| 283 |
+
lines=30,
|
| 284 |
+
max_lines=50,
|
| 285 |
+
interactive=False
|
| 286 |
+
)
|
| 287 |
+
|
| 288 |
# EJEMPLOS
|
| 289 |
gr.Examples(
|
| 290 |
examples=[
|
|
|
|
| 314 |
outputs=[
|
| 315 |
acad_out,
|
| 316 |
pract_out,
|
| 317 |
+
context_out, # NUEVO: mostrar contexto académico
|
| 318 |
stars,
|
| 319 |
coach_notes,
|
| 320 |
submit_btn,
|