JairoCesar commited on
Commit
2992994
verified
1 Parent(s): 9f64c01

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -2
app.py CHANGED
@@ -320,6 +320,14 @@ MASTER_SYMPTOM_MAP = {
320
  "depresi贸n": {
321
  "frases_es": ["tristeza persistente", "des谩nimo", "depresi贸n"],
322
  "keywords_en": ["depression", "depressant", "antidepressant"]
 
 
 
 
 
 
 
 
323
  }
324
  }
325
 
@@ -612,10 +620,38 @@ def sanitize_text(text):
612
  @retry(wait=wait_random_exponential(min=1, max=10), stop=stop_after_attempt(3))
613
 
614
  def extract_entities_with_gemini(query):
615
- # ... (el prompt es el mismo)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
616
  try:
617
  response = model.generate_content(system_prompt)
618
- # ... (l贸gica de extracci贸n de JSON es la misma)
 
 
 
 
 
 
619
  extracted_data = json.loads(json_text)
620
  # Guardar los s铆ntomas originales para la traducci贸n posterior
621
  extracted_data['sintomas_originales_ia'] = extracted_data.get('sintomas', [])
 
320
  "depresi贸n": {
321
  "frases_es": ["tristeza persistente", "des谩nimo", "depresi贸n"],
322
  "keywords_en": ["depression", "depressant", "antidepressant"]
323
+ },
324
+ "dolor": {
325
+ "frases_es": ["dolor", "molestia", "duele", "ardor"],
326
+ "keywords_en": ["pain", "soreness", "discomfort", "analgesic", "nociceptive"]
327
+ },
328
+ "erupci贸n": {
329
+ "frases_es": ["dermatitis herpetiforme", "erupci贸n con ampollas", "erupci贸n cut谩nea", "se pone rojo", "enrojecimiento", "erupci贸n", "ronchas", "urticaria", "sarpullido", "granitos", "eczema", "rojo"],
330
+ "keywords_en": ["dermatitis", "rash", "urticaria", "eczema", "skin", "redness", "erythema"]
331
  }
332
  }
333
 
 
620
  @retry(wait=wait_random_exponential(min=1, max=10), stop=stop_after_attempt(3))
621
 
622
  def extract_entities_with_gemini(query):
623
+ if not model: return None
624
+ logger.info("Intentando extracci贸n de entidades con Gemini...")
625
+
626
+ # --- PROMPT MEJORADO Y M脕S EXPL脥CITO ---
627
+ system_prompt = f"""
628
+ Eres un asistente de triaje cl铆nico experto. Tu 煤nica tarea es analizar la consulta de un usuario y extraer de forma exhaustiva dos tipos de informaci贸n:
629
+ 1. `alimentos`: Una lista de todos los alimentos, bebidas o ingredientes mencionados.
630
+ 2. `sintomas`: Una lista de TODAS las sensaciones, signos f铆sicos, colores, y localizaciones anat贸micas descritas. S茅 muy detallado.
631
+
632
+ Devuelve la respuesta 脷NICAMENTE en formato JSON estricto. No incluyas explicaciones.
633
+
634
+ EJEMPLO DETALLADO:
635
+ Consulta de Ejemplo: "Cuando como mucha carne me duele, hincha y se pone rojo el primer dedo del pie."
636
+ Respuesta JSON de Ejemplo:
637
+ {{
638
+ "alimentos": ["carne"],
639
+ "sintomas": ["dolor", "hinchaz贸n", "rojo", "dedo del pie"]
640
+ }}
641
+
642
+ Ahora, procesa la siguiente consulta real:
643
+ Consulta: "{query}"
644
+ """
645
+
646
  try:
647
  response = model.generate_content(system_prompt)
648
+ json_text_match = re.search(r'```json\s*(\{.*?\})\s*```', response.text, re.DOTALL)
649
+ if json_text_match:
650
+ json_text = json_text_match.group(1)
651
+ else:
652
+ # Fallback para respuestas sin markdown
653
+ json_text = re.search(r'\{.*\}', response.text, re.DOTALL).group(0)
654
+
655
  extracted_data = json.loads(json_text)
656
  # Guardar los s铆ntomas originales para la traducci贸n posterior
657
  extracted_data['sintomas_originales_ia'] = extracted_data.get('sintomas', [])