JairoCesar commited on
Commit
d380a25
·
verified ·
1 Parent(s): 5bd6c08

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -3
app.py CHANGED
@@ -60,7 +60,9 @@ def get_gemini_client():
60
  try:
61
  return genai.Client(
62
  api_key=api_key,
63
- http_options=types.HttpOptions(timeout=15.0) # 15 segundos
 
 
64
  )
65
  except Exception as e:
66
  logger.warning(f"❌ Error instanciando cliente Gemini: {e}")
@@ -573,9 +575,12 @@ def get_compounds_for_food(food_name, food_map):
573
  return food_map[fuzzy_matches[0]]
574
 
575
  # 4. Búsqueda por subcadena dentro del diccionario
 
 
 
576
  matched_compounds = set()
577
  for key, compounds in food_map.items():
578
- if key in food_clean or food_clean in key:
579
  matched_compounds.update(compounds)
580
 
581
  if matched_compounds:
@@ -677,7 +682,11 @@ def reinforce_entities_with_keywords(entities, query, food_map, master_symptom_m
677
  query_sanitized = sanitize_text(query)
678
  current_foods = set(entities.get("alimentos", []))
679
  for food_keyword in food_map.keys():
680
- if food_keyword in query_sanitized:
 
 
 
 
681
  current_foods.add(food_keyword)
682
 
683
  if not current_foods:
 
60
  try:
61
  return genai.Client(
62
  api_key=api_key,
63
+ # OJO: HttpOptions.timeout se define en MILISEGUNDOS (no en segundos).
64
+ # timeout=15.0 equivalía a 15 ms -> toda llamada expiraba de inmediato.
65
+ http_options=types.HttpOptions(timeout=15000) # 15000 ms = 15 segundos
66
  )
67
  except Exception as e:
68
  logger.warning(f"❌ Error instanciando cliente Gemini: {e}")
 
575
  return food_map[fuzzy_matches[0]]
576
 
577
  # 4. Búsqueda por subcadena dentro del diccionario
578
+ # Antes: "key in food_clean" permitía falsos positivos con claves cortas
579
+ # (p.ej. "res" o "ajo" dentro de otra palabra). Ahora se exige que la
580
+ # clave aparezca como palabra completa dentro del nombre del alimento.
581
  matched_compounds = set()
582
  for key, compounds in food_map.items():
583
+ if re.search(r'\b' + re.escape(key) + r'\b', food_clean) or food_clean in key:
584
  matched_compounds.update(compounds)
585
 
586
  if matched_compounds:
 
682
  query_sanitized = sanitize_text(query)
683
  current_foods = set(entities.get("alimentos", []))
684
  for food_keyword in food_map.keys():
685
+ # Antes: "food_keyword in query_sanitized" (subcadena simple).
686
+ # Esto producía falsos positivos con claves cortas: "ajo" coincidía
687
+ # dentro de "trabajo", "res" dentro de "interesante", "pan" dentro
688
+ # de "hispano", etc. Se usa \b para exigir palabra completa.
689
+ if re.search(r'\b' + re.escape(food_keyword) + r'\b', query_sanitized):
690
  current_foods.add(food_keyword)
691
 
692
  if not current_foods: