caissaa23 commited on
Commit
4be0570
·
verified ·
1 Parent(s): 64d1fad

Update chatbot_nuti.py

Browse files
Files changed (1) hide show
  1. chatbot_nuti.py +36 -26
chatbot_nuti.py CHANGED
@@ -4,9 +4,9 @@ import os
4
  from datetime import datetime
5
 
6
  MEMORIA_FILE = "memoria_nuti.json"
7
- PERFIL_FILE = "perfil_usuario.json" # Nuevo archivo para leer los datos de salud
8
 
9
- # --- Cargar y guardar memoria de conversación --- #
10
  def cargar_memoria():
11
  if os.path.exists(MEMORIA_FILE):
12
  with open(MEMORIA_FILE, "r", encoding="utf-8") as f:
@@ -17,7 +17,18 @@ def guardar_memoria(memoria):
17
  with open(MEMORIA_FILE, "w", encoding="utf-8") as f:
18
  json.dump(memoria, f, ensure_ascii=False, indent=2)
19
 
20
- # --- Temas clave y mensajes base --- #
 
 
 
 
 
 
 
 
 
 
 
21
  TEMAS = {
22
  "agua": [
23
  "El agua regula todo tu cuerpo 💧: digestión, energía y concentración. Trata de tomar un vaso cada hora.",
@@ -53,20 +64,13 @@ MENSAJES_BASE = [
53
  "Pequeños hábitos constantes crean grandes resultados. 🌟"
54
  ]
55
 
56
- # --- Detectar condición del usuario (enfermedad o restricción alimenticia) --- #
57
- def obtener_condicion_usuario():
58
- if os.path.exists(PERFIL_FILE):
59
- with open(PERFIL_FILE, "r", encoding="utf-8") as f:
60
- perfil = json.load(f)
61
- return perfil.get("condicion", "").lower()
62
- return ""
63
-
64
-
65
- # --- Función principal: Respuesta inteligente y contextual --- #
66
  def buscar_respuesta(pregunta, historial):
67
  pregunta = pregunta.lower().strip()
68
  memoria = cargar_memoria()
69
- condicion = obtener_condicion_usuario()
 
 
70
 
71
  usuario = "default_user"
72
  if usuario not in memoria:
@@ -75,14 +79,14 @@ def buscar_respuesta(pregunta, historial):
75
  historial_usuario = memoria[usuario]["historial"]
76
  temas_previos = memoria[usuario]["temas_previos"]
77
 
78
- # Detectar tema de la pregunta
79
  tema_detectado = None
80
  for tema in TEMAS:
81
  if tema in pregunta:
82
  tema_detectado = tema
83
  break
84
 
85
- # Crear respuesta base dinámica
86
  if tema_detectado:
87
  respuesta_base = random.choice(TEMAS[tema_detectado])
88
  respuesta = f"{respuesta_base} Además, recuerda que cada pequeño paso que das cuenta. 💪"
@@ -97,30 +101,36 @@ def buscar_respuesta(pregunta, historial):
97
  else:
98
  respuesta = random.choice(MENSAJES_BASE)
99
 
100
- # --- Ajustar respuesta según condición del usuario --- #
101
  if condicion:
102
  if "diabet" in condicion:
103
- respuesta += "\n\n💡 Como tienes diabetes, recuerda cuidar tus carbohidratos y preferir frutas con bajo índice glucémico (como manzana o fresa)."
104
  elif "hipertens" in condicion:
105
- respuesta += "\n\n💡 Consejo para tu hipertensión: reduce el consumo de sal, embutidos y comida procesada. Prefiere alimentos frescos."
106
  elif "lactosa" in condicion:
107
- respuesta += "\n\n🥛 Ojo con los lácteos: elige versiones sin lactosa o bebidas vegetales (avena, almendra o soya)."
108
  elif "celia" in condicion or "gluten" in condicion:
109
- respuesta += "\n\n🌾 Recuerda evitar harinas con gluten y optar por avena sin gluten, arroz o quinoa."
110
  elif "anemia" in condicion:
111
- respuesta += "\n\n🥬 Consejo para tu anemia: incluye alimentos ricos en hierro como lentejas, espinacas y carne magra."
112
  elif "colesterol" in condicion:
113
- respuesta += "\n\n❤️ Para controlar el colesterol, evita frituras y opta por aguacate, nueces y aceite de oliva."
114
  else:
115
- respuesta += f"\n\n🤖 Estoy considerando tu condición alimenticia: {condicion}. Ajustaré mis recomendaciones a eso."
116
 
117
- # Guardar historial actualizado
 
 
 
 
 
 
 
118
  historial_usuario.append({
119
  "fecha": str(datetime.now()),
120
  "pregunta": pregunta,
121
  "respuesta": respuesta
122
  })
123
-
124
  memoria[usuario]["historial"] = historial_usuario
125
  memoria[usuario]["temas_previos"] = temas_previos
126
  guardar_memoria(memoria)
 
4
  from datetime import datetime
5
 
6
  MEMORIA_FILE = "memoria_nuti.json"
7
+ PERFIL_FILE = "perfil_usuario.json" # Archivo donde se guarda info del usuario
8
 
9
+ # --- Funciones de carga y guardado --- #
10
  def cargar_memoria():
11
  if os.path.exists(MEMORIA_FILE):
12
  with open(MEMORIA_FILE, "r", encoding="utf-8") as f:
 
17
  with open(MEMORIA_FILE, "w", encoding="utf-8") as f:
18
  json.dump(memoria, f, ensure_ascii=False, indent=2)
19
 
20
+ def obtener_perfil_usuario():
21
+ """Lee condición alimenticia y alergias desde el perfil."""
22
+ if os.path.exists(PERFIL_FILE):
23
+ with open(PERFIL_FILE, "r", encoding="utf-8") as f:
24
+ perfil = json.load(f)
25
+ return {
26
+ "condicion": perfil.get("condicion", "").lower(),
27
+ "alergias": perfil.get("alergias", "").lower()
28
+ }
29
+ return {"condicion": "", "alergias": ""}
30
+
31
+ # --- Temas clave --- #
32
  TEMAS = {
33
  "agua": [
34
  "El agua regula todo tu cuerpo 💧: digestión, energía y concentración. Trata de tomar un vaso cada hora.",
 
64
  "Pequeños hábitos constantes crean grandes resultados. 🌟"
65
  ]
66
 
67
+ # --- Respuesta inteligente y contextual --- #
 
 
 
 
 
 
 
 
 
68
  def buscar_respuesta(pregunta, historial):
69
  pregunta = pregunta.lower().strip()
70
  memoria = cargar_memoria()
71
+ perfil = obtener_perfil_usuario()
72
+ condicion = perfil["condicion"]
73
+ alergias = perfil["alergias"]
74
 
75
  usuario = "default_user"
76
  if usuario not in memoria:
 
79
  historial_usuario = memoria[usuario]["historial"]
80
  temas_previos = memoria[usuario]["temas_previos"]
81
 
82
+ # Detectar tema principal
83
  tema_detectado = None
84
  for tema in TEMAS:
85
  if tema in pregunta:
86
  tema_detectado = tema
87
  break
88
 
89
+ # Generar respuesta base
90
  if tema_detectado:
91
  respuesta_base = random.choice(TEMAS[tema_detectado])
92
  respuesta = f"{respuesta_base} Además, recuerda que cada pequeño paso que das cuenta. 💪"
 
101
  else:
102
  respuesta = random.choice(MENSAJES_BASE)
103
 
104
+ # --- Ajustes personalizados según condición --- #
105
  if condicion:
106
  if "diabet" in condicion:
107
+ respuesta += "\n\n💡 Como tienes diabetes, controla los azúcares simples y elige frutas de bajo índice glucémico."
108
  elif "hipertens" in condicion:
109
+ respuesta += "\n\n💡 Consejo para tu hipertensión: modera la sal y los alimentos procesados."
110
  elif "lactosa" in condicion:
111
+ respuesta += "\n\n🥛 Ojo con los lácteos: elige sin lactosa o bebidas vegetales."
112
  elif "celia" in condicion or "gluten" in condicion:
113
+ respuesta += "\n\n🌾 Evita el gluten. Prefiere avena sin gluten, arroz o quinoa."
114
  elif "anemia" in condicion:
115
+ respuesta += "\n\n🥬 Agrega alimentos ricos en hierro como lentejas, espinacas y carne magra."
116
  elif "colesterol" in condicion:
117
+ respuesta += "\n\n❤️ Reduce frituras y elige aguacate, nueces y aceite de oliva."
118
  else:
119
+ respuesta += f"\n\n🤖 Estoy tomando en cuenta tu condición: {condicion}."
120
 
121
+ # --- Ajustes adicionales según alergias --- #
122
+ if alergias:
123
+ alergias_lista = [a.strip() for a in alergias.split(",")]
124
+ respuesta += "\n\n⚠️ También recordaré tus alergias para evitar riesgos: "
125
+ respuesta += ", ".join(alergias_lista) + "."
126
+ respuesta += "\nTen cuidado con etiquetas de productos y avísame si notas alguna reacción."
127
+
128
+ # Guardar historial
129
  historial_usuario.append({
130
  "fecha": str(datetime.now()),
131
  "pregunta": pregunta,
132
  "respuesta": respuesta
133
  })
 
134
  memoria[usuario]["historial"] = historial_usuario
135
  memoria[usuario]["temas_previos"] = temas_previos
136
  guardar_memoria(memoria)