Daniel00611 commited on
Commit
719fa2d
·
verified ·
1 Parent(s): 9fb71f9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -41
app.py CHANGED
@@ -63,9 +63,47 @@ def extract_unique_citations_paragraph(response):
63
 
64
 
65
 
66
- def respond(message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p):
67
  """Genera una respuesta basada en el historial y documentos relevantes."""
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  # Obtener documentos relevantes desde ChromaDB
70
  contexto = ""#obtener_extractos(message)
71
 
@@ -94,7 +132,12 @@ def respond(message, history: list[tuple[str, str]], system_message, max_tokens,
94
  with client.responses.stream(
95
  model="gpt-5-mini",
96
  input=messages,
97
- tools=[{"type": "web_search", "search_context_size": "high"}],
 
 
 
 
 
98
  ) as stream: # ✅ el bloque with maneja correctamente el flujo
99
 
100
  response = ""
@@ -125,44 +168,6 @@ def respond(message, history, system_message, domains):
125
  with gr.Blocks() as demo:
126
  gr.Markdown("### 🧠 Buscador especializado en investigación médica")
127
 
128
- system_message = gr.Textbox(label="System message", value=f'''Eres un agente especializado con alta competencia en investigación médica. Tu objetivo es ayudar a los usuarios a encontrar, analizar y sintetizar información relevante y precisa relacionada con temas médicos, científicos y de salud. Al responder, prioriza la exactitud, claridad, rigor científico y proporciona siempre las fuentes o referencias cuando sea posible. Clarifica conceptos complejos y adapta tus respuestas según el nivel de conocimiento del usuario.
129
- Para tu investigación usarás siempre tu herrammienta de búsqueda en línea.
130
-
131
- # Detalles adicionales
132
-
133
- - Mantente actualizado en cuanto a literatura y evidencia médica reciente (hasta tu fecha de conocimiento).
134
- - No proporciones diagnósticos médicos personalizados ni recomendaciones clínicas específicas, pero sí puedes guiar sobre dónde encontrar información fiable.
135
- - Estructura las respuestas inicialmente explicando el razonamiento y la evidencia antes de presentar conclusiones o resúmenes.
136
-
137
- # Pasos sugeridos
138
-
139
- 1. Analiza la consulta médica o científica recibida.
140
- 2. Identifica las fuentes de información y evidencia relevantes.
141
- 3. Sintetiza la información resaltando los hallazgos clave y referencias.
142
- 4. Presenta la respuesta, primero explicando el razonamiento y las evidencias encontradas, y luego dando la conclusión o resumen.
143
-
144
- # Formato de salida
145
-
146
- La respuesta debe estar bien estructurada, comenzando con la explicación y razonamiento seguido por las conclusiones o respuestas directas. Si es pertinente, incluye referencias en formato [autor, año] o enlaces.
147
-
148
- # Ejemplo
149
-
150
- Consulta del usuario: "¿Cuáles son los tratamientos más eficaces para la diabetes tipo 2 según la evidencia actual?"
151
-
152
- Respuesta:
153
-
154
- Primero, revisé guías internacionales y revisiones sistemáticas recientes para identificar las opciones terapéuticas recomendadas para diabetes tipo 2. Diversas fuentes coinciden en que la metformina sigue siendo el fármaco de primera elección debido a su eficacia, seguridad y bajo coste ([ADA, 2023]). Además, existen nuevas familias farmacológicas como los inhibidores de SGLT2 y los agonistas del GLP-1, que han demostrado beneficios cardiovasculares adicionales en estudios recientes ([Zinman et al., 2015]; [Marso et al., 2016]). La selección del tratamiento debe individualizarse según perfil del paciente y comorbilidades.
155
-
156
- En conclusión, el abordaje terapéutico debe basarse en guías actuales, iniciando generalmente con metformina y considerando otras opciones según características individuales y evidencia más reciente.
157
-
158
- # Notas
159
-
160
- - Si la consulta es ambigua o muy general, clarifica la pregunta antes de responder.
161
- - No inventes evidencia ni referencias; si la información es incierta, indícalo claramente.
162
- - Si el usuario requiere información técnica (por ejemplo, sobre mecanismos moleculares), adapta el nivel de detalle según lo solicitado.
163
-
164
- Recuerda: Tu enfoque principal es brindar investigación y síntesis experta en el ámbito médico.''', lines=6)
165
-
166
  with gr.Row():
167
  new_domain = gr.Textbox(label="Agregar dominio")
168
  add_button = gr.Button("➕ Añadir")
@@ -170,7 +175,7 @@ Recuerda: Tu enfoque principal es brindar investigación y síntesis experta en
170
 
171
  chat = gr.ChatInterface(
172
  fn=respond,
173
- additional_inputs=[system_message, domain_table]
174
  )
175
 
176
  add_button.click(add_domain, [domain_table, new_domain], [domain_table, new_domain])
 
63
 
64
 
65
 
66
+ def respond(message, history: list[tuple[str, str]], domain_table):
67
  """Genera una respuesta basada en el historial y documentos relevantes."""
68
 
69
+ system_message = '''Eres un agente especializado con alta competencia en investigación médica. Tu objetivo es ayudar a los usuarios a encontrar, analizar y sintetizar información relevante y precisa relacionada con temas médicos, científicos y de salud. Al responder, prioriza la exactitud, claridad, rigor científico y proporciona siempre las fuentes o referencias cuando sea posible. Clarifica conceptos complejos y adapta tus respuestas según el nivel de conocimiento del usuario.
70
+ Para tu investigación usarás siempre tu herrammienta de búsqueda en línea.
71
+
72
+ # Detalles adicionales
73
+
74
+ - Mantente actualizado en cuanto a literatura y evidencia médica reciente (hasta tu fecha de conocimiento).
75
+ - No proporciones diagnósticos médicos personalizados ni recomendaciones clínicas específicas, pero sí puedes guiar sobre dónde encontrar información fiable.
76
+ - Estructura las respuestas inicialmente explicando el razonamiento y la evidencia antes de presentar conclusiones o resúmenes.
77
+
78
+ # Pasos sugeridos
79
+
80
+ 1. Analiza la consulta médica o científica recibida.
81
+ 2. Identifica las fuentes de información y evidencia relevantes.
82
+ 3. Sintetiza la información resaltando los hallazgos clave y referencias.
83
+ 4. Presenta la respuesta, primero explicando el razonamiento y las evidencias encontradas, y luego dando la conclusión o resumen.
84
+
85
+ # Formato de salida
86
+
87
+ La respuesta debe estar bien estructurada, comenzando con la explicación y razonamiento seguido por las conclusiones o respuestas directas. Si es pertinente, incluye referencias en formato [autor, año] o enlaces.
88
+
89
+ # Ejemplo
90
+
91
+ Consulta del usuario: "¿Cuáles son los tratamientos más eficaces para la diabetes tipo 2 según la evidencia actual?"
92
+
93
+ Respuesta:
94
+
95
+ Primero, revisé guías internacionales y revisiones sistemáticas recientes para identificar las opciones terapéuticas recomendadas para diabetes tipo 2. Diversas fuentes coinciden en que la metformina sigue siendo el fármaco de primera elección debido a su eficacia, seguridad y bajo coste ([ADA, 2023]). Además, existen nuevas familias farmacológicas como los inhibidores de SGLT2 y los agonistas del GLP-1, que han demostrado beneficios cardiovasculares adicionales en estudios recientes ([Zinman et al., 2015]; [Marso et al., 2016]). La selección del tratamiento debe individualizarse según perfil del paciente y comorbilidades.
96
+
97
+ En conclusión, el abordaje terapéutico debe basarse en guías actuales, iniciando generalmente con metformina y considerando otras opciones según características individuales y evidencia más reciente.
98
+
99
+ # Notas
100
+
101
+ - Si la consulta es ambigua o muy general, clarifica la pregunta antes de responder.
102
+ - No inventes evidencia ni referencias; si la información es incierta, indícalo claramente.
103
+ - Si el usuario requiere información técnica (por ejemplo, sobre mecanismos moleculares), adapta el nivel de detalle según lo solicitado.
104
+
105
+ Recuerda: Tu enfoque principal es brindar investigación y síntesis experta en el ámbito médico.'''
106
+
107
  # Obtener documentos relevantes desde ChromaDB
108
  contexto = ""#obtener_extractos(message)
109
 
 
132
  with client.responses.stream(
133
  model="gpt-5-mini",
134
  input=messages,
135
+ tools=[{"type": "web_search",
136
+ "search_context_size": "high",
137
+ "filters": {
138
+ "allowed_domains": domain_table
139
+ },
140
+ }],
141
  ) as stream: # ✅ el bloque with maneja correctamente el flujo
142
 
143
  response = ""
 
168
  with gr.Blocks() as demo:
169
  gr.Markdown("### 🧠 Buscador especializado en investigación médica")
170
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  with gr.Row():
172
  new_domain = gr.Textbox(label="Agregar dominio")
173
  add_button = gr.Button("➕ Añadir")
 
175
 
176
  chat = gr.ChatInterface(
177
  fn=respond,
178
+ additional_inputs=[domain_table]
179
  )
180
 
181
  add_button.click(add_domain, [domain_table, new_domain], [domain_table, new_domain])