Update chatbot_nuti.py
Browse files- chatbot_nuti.py +48 -49
chatbot_nuti.py
CHANGED
|
@@ -15,87 +15,86 @@ def guardar_memoria(memoria):
|
|
| 15 |
with open(MEMORIA_FILE, "w", encoding="utf-8") as f:
|
| 16 |
json.dump(memoria, f, ensure_ascii=False, indent=2)
|
| 17 |
|
| 18 |
-
#
|
| 19 |
TEMAS = {
|
| 20 |
"agua": [
|
| 21 |
-
"El agua
|
| 22 |
-
"Si te cuesta beber agua, puedes agregarle pepino,
|
| 23 |
-
"
|
| 24 |
],
|
| 25 |
"desayuno": [
|
| 26 |
-
"El desayuno
|
| 27 |
-
"
|
| 28 |
-
"
|
| 29 |
],
|
| 30 |
-
"
|
| 31 |
-
"
|
| 32 |
-
"
|
| 33 |
-
"
|
| 34 |
-
],
|
| 35 |
-
"cena": [
|
| 36 |
-
"La cena debe ser ligera para descansar bien 🌙. Sopas, ensaladas o huevo son ideales.",
|
| 37 |
-
"Evita comer justo antes de dormir, deja pasar al menos 2 horas.",
|
| 38 |
-
"Si tienes hambre de noche, elige algo liviano como yogurt natural o fruta."
|
| 39 |
-
],
|
| 40 |
-
"ejercicio": [
|
| 41 |
-
"Después de entrenar, come proteína y algo de carbohidrato para recuperarte. 💪",
|
| 42 |
-
"Recuerda hidratarte antes, durante y después del ejercicio.",
|
| 43 |
-
"Un pequeño paseo después de comer mejora la digestión y el ánimo."
|
| 44 |
],
|
| 45 |
"peso": [
|
| 46 |
-
"
|
| 47 |
-
"
|
| 48 |
-
"
|
| 49 |
],
|
| 50 |
-
"
|
| 51 |
-
"
|
| 52 |
-
"
|
| 53 |
-
"
|
| 54 |
]
|
| 55 |
}
|
| 56 |
|
| 57 |
-
|
| 58 |
-
"Tu cuerpo te
|
| 59 |
-
"
|
| 60 |
-
"
|
| 61 |
-
"
|
| 62 |
]
|
| 63 |
|
| 64 |
-
#
|
| 65 |
-
def buscar_respuesta(
|
| 66 |
pregunta = pregunta.lower().strip()
|
| 67 |
memoria = cargar_memoria()
|
|
|
|
|
|
|
| 68 |
if usuario not in memoria:
|
| 69 |
-
memoria[usuario] = {"historial": [], "
|
| 70 |
|
| 71 |
-
|
| 72 |
-
temas_previos = memoria[usuario]["
|
| 73 |
|
| 74 |
-
# Detectar tema
|
| 75 |
tema_detectado = None
|
| 76 |
for tema in TEMAS:
|
| 77 |
if tema in pregunta:
|
| 78 |
tema_detectado = tema
|
| 79 |
break
|
| 80 |
|
| 81 |
-
#
|
| 82 |
if tema_detectado:
|
| 83 |
-
|
| 84 |
-
|
|
|
|
| 85 |
else:
|
| 86 |
-
# Si no hay tema nuevo,
|
| 87 |
-
if
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
|
|
|
|
|
|
| 91 |
else:
|
| 92 |
-
respuesta = random.choice(
|
| 93 |
|
| 94 |
-
historial
|
|
|
|
| 95 |
"fecha": str(datetime.now()),
|
| 96 |
"pregunta": pregunta,
|
| 97 |
"respuesta": respuesta
|
| 98 |
})
|
| 99 |
|
|
|
|
|
|
|
| 100 |
guardar_memoria(memoria)
|
|
|
|
| 101 |
return respuesta
|
|
|
|
| 15 |
with open(MEMORIA_FILE, "w", encoding="utf-8") as f:
|
| 16 |
json.dump(memoria, f, ensure_ascii=False, indent=2)
|
| 17 |
|
| 18 |
+
# --- TEMAS CLAVE --- #
|
| 19 |
TEMAS = {
|
| 20 |
"agua": [
|
| 21 |
+
"El agua regula todo tu cuerpo 💧: digestión, energía y concentración. Trata de tomar un vaso cada hora.",
|
| 22 |
+
"Si te cuesta beber agua sola, puedes agregarle pepino, menta o rodajas de limón. 🍋",
|
| 23 |
+
"Mantenerte hidratado también mejora el ánimo y la piel."
|
| 24 |
],
|
| 25 |
"desayuno": [
|
| 26 |
+
"El desayuno activa tu metabolismo 🌞. Prueba algo con proteína, como yogurt o huevo, más fruta y avena.",
|
| 27 |
+
"Saltarte el desayuno puede afectar tu energía y concentración, especialmente si estás en crecimiento.",
|
| 28 |
+
"Empieza el día con alimentos reales, no procesados: te sentirás con más claridad mental."
|
| 29 |
],
|
| 30 |
+
"ansiedad": [
|
| 31 |
+
"Si comes por ansiedad, prueba algo que te relaje sin comer: respiraciones lentas, música suave o caminar 5 minutos. 🌿",
|
| 32 |
+
"A veces el hambre emocional busca consuelo, no comida. Haz una pausa antes de decidir.",
|
| 33 |
+
"Tener un snack saludable preparado (como nueces o plátano) puede ayudarte a no comer impulsivamente."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
],
|
| 35 |
"peso": [
|
| 36 |
+
"No te enfoques solo en el número de la báscula. Lo que importa es cómo te sientes y tu energía. ❤️",
|
| 37 |
+
"Bajar o subir de peso de forma saludable requiere constancia, no perfección. Paso a paso.",
|
| 38 |
+
"Tu cuerpo cambia contigo: aprende a escucharlo, no a pelear con él."
|
| 39 |
],
|
| 40 |
+
"ejercicio": [
|
| 41 |
+
"Moverte aunque sea 10 minutos al día ya mejora tu circulación y tu humor. 💪",
|
| 42 |
+
"Combinar movimiento y buena comida potencia los resultados, no te castigues si un día descansas.",
|
| 43 |
+
"Después de entrenar, hidrátate y come algo con proteína, te ayudará a recuperarte."
|
| 44 |
]
|
| 45 |
}
|
| 46 |
|
| 47 |
+
MENSAJES_BASE = [
|
| 48 |
+
"Tu cuerpo te acompaña siempre, cuídalo con cariño y paciencia. 💚",
|
| 49 |
+
"Cada día que eliges comer mejor, te estás eligiendo a ti. 🌱",
|
| 50 |
+
"No busques comer perfecto, busca sentirte bien contigo y con tu cuerpo.",
|
| 51 |
+
"Pequeños hábitos constantes crean grandes resultados. 🌟"
|
| 52 |
]
|
| 53 |
|
| 54 |
+
# --- FUNCIÓN PRINCIPAL (más inteligente y contextual) --- #
|
| 55 |
+
def buscar_respuesta(pregunta, historial):
|
| 56 |
pregunta = pregunta.lower().strip()
|
| 57 |
memoria = cargar_memoria()
|
| 58 |
+
|
| 59 |
+
usuario = "default_user"
|
| 60 |
if usuario not in memoria:
|
| 61 |
+
memoria[usuario] = {"historial": [], "temas_previos": []}
|
| 62 |
|
| 63 |
+
historial_usuario = memoria[usuario]["historial"]
|
| 64 |
+
temas_previos = memoria[usuario]["temas_previos"]
|
| 65 |
|
| 66 |
+
# Detectar el tema principal de la pregunta
|
| 67 |
tema_detectado = None
|
| 68 |
for tema in TEMAS:
|
| 69 |
if tema in pregunta:
|
| 70 |
tema_detectado = tema
|
| 71 |
break
|
| 72 |
|
| 73 |
+
# Crear respuesta dinámica
|
| 74 |
if tema_detectado:
|
| 75 |
+
respuesta_base = random.choice(TEMAS[tema_detectado])
|
| 76 |
+
respuesta = f"{respuesta_base} Además, recuerda que cada pequeño paso que das cuenta. 💪"
|
| 77 |
+
temas_previos.append(tema_detectado)
|
| 78 |
else:
|
| 79 |
+
# Si no hay tema nuevo, crear respuesta contextual según historial
|
| 80 |
+
if historial_usuario:
|
| 81 |
+
ultimo_tema = temas_previos[-1] if temas_previos else "alimentación"
|
| 82 |
+
respuesta = (
|
| 83 |
+
f"Sobre lo que mencionaste antes acerca de {ultimo_tema}, "
|
| 84 |
+
f"creo que podrías intentar algo nuevo: {random.choice(TEMAS.get(ultimo_tema, MENSAJES_BASE))}"
|
| 85 |
+
)
|
| 86 |
else:
|
| 87 |
+
respuesta = random.choice(MENSAJES_BASE)
|
| 88 |
|
| 89 |
+
# Guardar historial
|
| 90 |
+
historial_usuario.append({
|
| 91 |
"fecha": str(datetime.now()),
|
| 92 |
"pregunta": pregunta,
|
| 93 |
"respuesta": respuesta
|
| 94 |
})
|
| 95 |
|
| 96 |
+
memoria[usuario]["historial"] = historial_usuario
|
| 97 |
+
memoria[usuario]["temas_previos"] = temas_previos
|
| 98 |
guardar_memoria(memoria)
|
| 99 |
+
|
| 100 |
return respuesta
|