File size: 6,122 Bytes
0c0cae7 21fc81d 0c0cae7 4be0570 0c0cae7 4be0570 0c0cae7 21fc81d 4be0570 21fc81d f787aea 21fc81d 0c0cae7 f787aea 0c0cae7 f787aea 0c0cae7 21fc81d f787aea 21fc81d f787aea 21fc81d 0c0cae7 f787aea 0c0cae7 4be0570 f787aea 21fc81d 4be0570 f787aea 21fc81d f787aea 21fc81d f787aea 21fc81d 4be0570 21fc81d 4be0570 21fc81d f787aea 21fc81d f787aea 21fc81d f787aea 21fc81d 4be0570 2c71b00 4be0570 2c71b00 4be0570 2c71b00 4be0570 2c71b00 4be0570 2c71b00 4be0570 2c71b00 4be0570 2c71b00 4be0570 2c71b00 4be0570 f787aea 21fc81d f787aea 21fc81d f787aea 0c0cae7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | import random
import json
import os
from datetime import datetime
MEMORIA_FILE = "memoria_nuti.json"
PERFIL_FILE = "perfil_usuario.json" # Archivo donde se guarda info del usuario
# --- Funciones de carga y guardado --- #
def cargar_memoria():
if os.path.exists(MEMORIA_FILE):
with open(MEMORIA_FILE, "r", encoding="utf-8") as f:
return json.load(f)
return {}
def guardar_memoria(memoria):
with open(MEMORIA_FILE, "w", encoding="utf-8") as f:
json.dump(memoria, f, ensure_ascii=False, indent=2)
def obtener_perfil_usuario():
"""Lee condición alimenticia y alergias desde el perfil."""
if os.path.exists(PERFIL_FILE):
with open(PERFIL_FILE, "r", encoding="utf-8") as f:
perfil = json.load(f)
return {
"condicion": perfil.get("condicion", "").lower(),
"alergias": perfil.get("alergias", "").lower()
}
return {"condicion": "", "alergias": ""}
# --- Temas clave --- #
TEMAS = {
"agua": [
"El agua regula todo tu cuerpo 💧: digestión, energía y concentración. Trata de tomar un vaso cada hora.",
"Si te cuesta beber agua sola, puedes agregarle pepino, menta o rodajas de limón. 🍋",
"Mantenerte hidratado también mejora el ánimo y la piel."
],
"desayuno": [
"El desayuno activa tu metabolismo 🌞. Prueba algo con proteína, como yogurt o huevo, más fruta y avena.",
"Saltarte el desayuno puede afectar tu energía y concentración, especialmente si estás en crecimiento.",
"Empieza el día con alimentos reales, no procesados: te sentirás con más claridad mental."
],
"ansiedad": [
"Si comes por ansiedad, prueba algo que te relaje sin comer: respiraciones lentas, música suave o caminar 5 minutos. 🌿",
"A veces el hambre emocional busca consuelo, no comida. Haz una pausa antes de decidir.",
"Tener un snack saludable preparado (como nueces o plátano) puede ayudarte a no comer impulsivamente."
],
"peso": [
"No te enfoques solo en el número de la báscula. Lo que importa es cómo te sientes y tu energía. ❤️",
"Bajar o subir de peso de forma saludable requiere constancia, no perfección. Paso a paso.",
"Tu cuerpo cambia contigo: aprende a escucharlo, no a pelear con él."
],
"ejercicio": [
"Moverte aunque sea 10 minutos al día ya mejora tu circulación y tu humor. 💪",
"Combinar movimiento y buena comida potencia los resultados, no te castigues si un día descansas.",
"Después de entrenar, hidrátate y come algo con proteína, te ayudará a recuperarte."
]
}
MENSAJES_BASE = [
"Tu cuerpo te acompaña siempre, cuídalo con cariño y paciencia. 💚",
"Cada día que eliges comer mejor, te estás eligiendo a ti. 🌱",
"No busques comer perfecto, busca sentirte bien contigo y con tu cuerpo.",
"Pequeños hábitos constantes crean grandes resultados. 🌟"
]
# --- Respuesta inteligente y contextual --- #
def buscar_respuesta(pregunta, historial):
pregunta = pregunta.lower().strip()
memoria = cargar_memoria()
perfil = obtener_perfil_usuario()
condicion = perfil["condicion"]
alergias = perfil["alergias"]
usuario = "default_user"
if usuario not in memoria:
memoria[usuario] = {"historial": [], "temas_previos": []}
historial_usuario = memoria[usuario]["historial"]
temas_previos = memoria[usuario]["temas_previos"]
# Detectar tema principal
tema_detectado = None
for tema in TEMAS:
if tema in pregunta:
tema_detectado = tema
break
# Generar respuesta base
if tema_detectado:
respuesta_base = random.choice(TEMAS[tema_detectado])
respuesta = f"{respuesta_base} Además, recuerda que cada pequeño paso que das cuenta. 💪"
temas_previos.append(tema_detectado)
else:
if historial_usuario:
ultimo_tema = temas_previos[-1] if temas_previos else "alimentación"
respuesta = (
f"Sobre lo que mencionaste antes acerca de {ultimo_tema}, "
f"creo que podrías intentar algo nuevo: {random.choice(TEMAS.get(ultimo_tema, MENSAJES_BASE))}"
)
else:
respuesta = random.choice(MENSAJES_BASE)
# --- Ajustes personalizados según condición --- #
if condicion:
if "diabet" in condicion:
respuesta += "\n\n💡 Como tienes diabetes, controla los azúcares simples y elige frutas de bajo índice glucémico."
elif "hipertens" in condicion:
respuesta += "\n\n💡 Consejo para tu hipertensión: modera la sal y los alimentos procesados."
elif "lactosa" in condicion:
respuesta += "\n\n🥛 Ojo con los lácteos: elige sin lactosa o bebidas vegetales."
elif "celia" in condicion or "gluten" in condicion:
respuesta += "\n\n🌾 Evita el gluten. Prefiere avena sin gluten, arroz o quinoa."
elif "anemia" in condicion:
respuesta += "\n\n🥬 Agrega alimentos ricos en hierro como lentejas, espinacas y carne magra."
elif "colesterol" in condicion:
respuesta += "\n\n❤️ Reduce frituras y elige aguacate, nueces y aceite de oliva."
else:
respuesta += f"\n\n🤖 Estoy tomando en cuenta tu condición: {condicion}."
# --- Ajustes adicionales según alergias --- #
if alergias:
alergias_lista = [a.strip() for a in alergias.split(",")]
respuesta += "\n\n⚠️ También recordaré tus alergias para evitar riesgos: "
respuesta += ", ".join(alergias_lista) + "."
respuesta += "\nTen cuidado con etiquetas de productos y avísame si notas alguna reacción."
# Guardar historial
historial_usuario.append({
"fecha": str(datetime.now()),
"pregunta": pregunta,
"respuesta": respuesta
})
memoria[usuario]["historial"] = historial_usuario
memoria[usuario]["temas_previos"] = temas_previos
guardar_memoria(memoria)
return respuesta
|