JairoCesar commited on
Commit
3d689e2
verified
1 Parent(s): 4471cba

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -0
app.py CHANGED
@@ -261,7 +261,36 @@ FOOD_NAME_TO_FOODB_KEY = {
261
  "vino": ["wine", "red wine", "white wine"]
262
  }
263
 
 
264
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
265
  # --- L脫GICA DE B脷SQUEDA Y AN脕LISIS ---
266
  # (Todas las funciones auxiliares se mantienen igual que en la versi贸n anterior)
267
  def sanitize_text(text):
@@ -501,6 +530,8 @@ if submitted:
501
  else:
502
  with st.spinner("馃 Interpretando tu caso y buscando pistas con IA..."):
503
  entities = extract_and_infer_with_gemini(query, lista_condiciones)
 
 
504
  st.session_state.entities = entities
505
  if entities and (entities.get("alimentos") or entities.get("sintomas")):
506
  info_str = f"IA identific贸 - Alimentos: {', '.join(entities.get('alimentos',[])) or 'Ninguno'}, S铆ntomas: {', '.join(entities.get('sintomas',[])) or 'Ninguno'}"
 
261
  "vino": ["wine", "red wine", "white wine"]
262
  }
263
 
264
+ # --- A脩ADE ESTA FUNCI脫N NUEVA EN TU C脫DIGO ---
265
 
266
+ def reinforce_entities_with_keywords(entities, query, food_map):
267
+ """
268
+ Revisa la salida de la IA y a帽ade alimentos clave si fueron omitidos.
269
+ Esta es una red de seguridad contra las fallas de extracci贸n de la IA.
270
+ """
271
+ if not entities:
272
+ entities = {"alimentos": [], "sintomas": []}
273
+
274
+ query_sanitized = sanitize_text(query)
275
+ current_foods = entities.get("alimentos", [])
276
+
277
+ # Si la IA ya encontr贸 alimentos, los sanitizamos para la comparaci贸n
278
+ current_foods_sanitized = {sanitize_text(f) for f in current_foods}
279
+
280
+ # Iteramos por nuestra lista de alimentos conocidos
281
+ for food_keyword in food_map.keys():
282
+ # Si una palabra clave de alimento est谩 en la consulta...
283
+ if food_keyword in query_sanitized:
284
+ # ...y la IA NO la incluy贸 en su lista...
285
+ if food_keyword not in current_foods_sanitized:
286
+ # ...la a帽adimos nosotros.
287
+ logger.info(f"Red de seguridad: La IA omiti贸 '{food_keyword}', a帽adi茅ndolo manualmente.")
288
+ current_foods.append(food_keyword)
289
+
290
+ entities["alimentos"] = list(set(current_foods)) # Eliminar duplicados
291
+ return entities
292
+
293
+
294
  # --- L脫GICA DE B脷SQUEDA Y AN脕LISIS ---
295
  # (Todas las funciones auxiliares se mantienen igual que en la versi贸n anterior)
296
  def sanitize_text(text):
 
530
  else:
531
  with st.spinner("馃 Interpretando tu caso y buscando pistas con IA..."):
532
  entities = extract_and_infer_with_gemini(query, lista_condiciones)
533
+ # --- A脩ADE ESTA L脥NEA PARA ACTIVAR LA RED DE SEGURIDAD ---
534
+ entities = reinforce_entities_with_keywords(entities, query, FOOD_TO_COMPOUND_MAP)
535
  st.session_state.entities = entities
536
  if entities and (entities.get("alimentos") or entities.get("sintomas")):
537
  info_str = f"IA identific贸 - Alimentos: {', '.join(entities.get('alimentos',[])) or 'Ninguno'}, S铆ntomas: {', '.join(entities.get('sintomas',[])) or 'Ninguno'}"