javier8306 commited on
Commit
8c8f9f9
·
verified ·
1 Parent(s): ebbb108

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -10
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: Ahora pedimos los 3 pasajes más relevantes, no solo 1
41
  respuesta_db = supabase.rpc(
42
  "buscar_pasajes_clasicos",
43
  {
44
  "query_embedding": vector_query,
45
- "match_threshold": 0.20, # Bajamos un poco el umbral para asegurar que entren 3
46
- "match_count": 3,
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 3 pasajes recuperados
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 varios [Documentos] antiguos. Evalúa cuál es el más pertinente para responder a la consulta y descarta los demás.
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] # Ahora devuelve dos variables
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__":