Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -37,13 +37,13 @@ def realizar_exegesis_web(consulta, canon_seleccionado):
|
|
| 37 |
vector_query = modelo_vectorial.encode(consulta, convert_to_tensor=False).tolist()
|
| 38 |
|
| 39 |
try:
|
| 40 |
-
# MEJORA RAG:
|
| 41 |
respuesta_db = supabase.rpc(
|
| 42 |
"buscar_pasajes_clasicos",
|
| 43 |
{
|
| 44 |
"query_embedding": vector_query,
|
| 45 |
-
"match_threshold": 0.
|
| 46 |
-
"match_count":
|
| 47 |
"tabla_destino": canon_seleccionado
|
| 48 |
}
|
| 49 |
).execute()
|
|
@@ -53,7 +53,7 @@ def realizar_exegesis_web(consulta, canon_seleccionado):
|
|
| 53 |
if not pasajes:
|
| 54 |
return "❌ No database matches found. / No se hallaron testimonios. / 未找到匹配的文本。", ""
|
| 55 |
|
| 56 |
-
# Construimos un bloque con los
|
| 57 |
contexto_documentos = ""
|
| 58 |
for i, frag in enumerate(pasajes):
|
| 59 |
obra = frag.get("obra", "Desconocida")
|
|
@@ -66,7 +66,7 @@ def realizar_exegesis_web(consulta, canon_seleccionado):
|
|
| 66 |
|
| 67 |
INSTRUCCIONES VITALES:
|
| 68 |
1. IDIOMA: Detecta el idioma de la "Consulta del Usuario". Toda tu respuesta (razonamiento y exégesis) DEBE estar exclusivamente en ese idioma. Si es chino, usa obligatoriamente Chino Tradicional (繁體中文).
|
| 69 |
-
2. SELECCIÓN: Se te proporcionan
|
| 70 |
3. TRANSPARENCIA: Antes de dar tu respuesta final, debes escribir tu proceso lógico de selección y análisis filológico dentro de etiquetas <razonamiento> y </razonamiento>.
|
| 71 |
|
| 72 |
FORMATO DE SALIDA ESPERADO:
|
|
@@ -97,10 +97,8 @@ def realizar_exegesis_web(consulta, canon_seleccionado):
|
|
| 97 |
|
| 98 |
if match:
|
| 99 |
texto_razonamiento = match.group(1).strip()
|
| 100 |
-
# Quitamos el bloque de razonamiento de la respuesta final
|
| 101 |
texto_exegesis = respuesta_completa.replace(match.group(0), '').strip()
|
| 102 |
else:
|
| 103 |
-
# Fallback por si el modelo ignora las etiquetas
|
| 104 |
texto_razonamiento = "El modelo no proporcionó un rastro de razonamiento explícito."
|
| 105 |
texto_exegesis = respuesta_completa
|
| 106 |
|
|
@@ -131,17 +129,15 @@ with gr.Blocks() as demo:
|
|
| 131 |
boton_consultar = gr.Button("Invoke / Invocar / 召喚", variant="primary")
|
| 132 |
|
| 133 |
with gr.Column(scale=2):
|
| 134 |
-
# Panel desplegable oculto por defecto para el razonamiento
|
| 135 |
with gr.Accordion("🧠 Reasoning Trace / Razonamiento del Sistema / 系統推理", open=False):
|
| 136 |
salida_razonamiento = gr.Markdown(label="")
|
| 137 |
|
| 138 |
-
# Salida principal
|
| 139 |
salida_markdown = gr.Markdown(label="Exegesis / 詮釋")
|
| 140 |
|
| 141 |
boton_consultar.click(
|
| 142 |
fn=realizar_exegesis_web,
|
| 143 |
inputs=[consulta_input, canon_dropdown],
|
| 144 |
-
outputs=[salida_markdown, salida_razonamiento]
|
| 145 |
)
|
| 146 |
|
| 147 |
if __name__ == "__main__":
|
|
|
|
| 37 |
vector_query = modelo_vectorial.encode(consulta, convert_to_tensor=False).tolist()
|
| 38 |
|
| 39 |
try:
|
| 40 |
+
# MEJORA RAG: Extraemos 15 pasajes con un umbral más permisivo para no perder autores específicos
|
| 41 |
respuesta_db = supabase.rpc(
|
| 42 |
"buscar_pasajes_clasicos",
|
| 43 |
{
|
| 44 |
"query_embedding": vector_query,
|
| 45 |
+
"match_threshold": 0.15,
|
| 46 |
+
"match_count": 15,
|
| 47 |
"tabla_destino": canon_seleccionado
|
| 48 |
}
|
| 49 |
).execute()
|
|
|
|
| 53 |
if not pasajes:
|
| 54 |
return "❌ No database matches found. / No se hallaron testimonios. / 未找到匹配的文本。", ""
|
| 55 |
|
| 56 |
+
# Construimos un bloque con los 15 pasajes recuperados
|
| 57 |
contexto_documentos = ""
|
| 58 |
for i, frag in enumerate(pasajes):
|
| 59 |
obra = frag.get("obra", "Desconocida")
|
|
|
|
| 66 |
|
| 67 |
INSTRUCCIONES VITALES:
|
| 68 |
1. IDIOMA: Detecta el idioma de la "Consulta del Usuario". Toda tu respuesta (razonamiento y exégesis) DEBE estar exclusivamente en ese idioma. Si es chino, usa obligatoriamente Chino Tradicional (繁體中文).
|
| 69 |
+
2. SELECCIÓN: Se te proporcionan hasta 15 [Documentos] antiguos. Evalúa atentamente cuál o cuáles son los más pertinentes para responder a la consulta (especialmente si se pide un autor concreto) y descarta el resto. Si no hay ninguno útil del autor pedido, indícalo.
|
| 70 |
3. TRANSPARENCIA: Antes de dar tu respuesta final, debes escribir tu proceso lógico de selección y análisis filológico dentro de etiquetas <razonamiento> y </razonamiento>.
|
| 71 |
|
| 72 |
FORMATO DE SALIDA ESPERADO:
|
|
|
|
| 97 |
|
| 98 |
if match:
|
| 99 |
texto_razonamiento = match.group(1).strip()
|
|
|
|
| 100 |
texto_exegesis = respuesta_completa.replace(match.group(0), '').strip()
|
| 101 |
else:
|
|
|
|
| 102 |
texto_razonamiento = "El modelo no proporcionó un rastro de razonamiento explícito."
|
| 103 |
texto_exegesis = respuesta_completa
|
| 104 |
|
|
|
|
| 129 |
boton_consultar = gr.Button("Invoke / Invocar / 召喚", variant="primary")
|
| 130 |
|
| 131 |
with gr.Column(scale=2):
|
|
|
|
| 132 |
with gr.Accordion("🧠 Reasoning Trace / Razonamiento del Sistema / 系統推理", open=False):
|
| 133 |
salida_razonamiento = gr.Markdown(label="")
|
| 134 |
|
|
|
|
| 135 |
salida_markdown = gr.Markdown(label="Exegesis / 詮釋")
|
| 136 |
|
| 137 |
boton_consultar.click(
|
| 138 |
fn=realizar_exegesis_web,
|
| 139 |
inputs=[consulta_input, canon_dropdown],
|
| 140 |
+
outputs=[salida_markdown, salida_razonamiento]
|
| 141 |
)
|
| 142 |
|
| 143 |
if __name__ == "__main__":
|