GoGma's picture
Create modules/chat_bot.py
a3a58c4 verified
Raw
History Blame Contribute Delete
4.28 kB
"""
Módulo chatbot Sofía Rivera.
Personalidad de influencer latina.
"""
import random
class SofiaChatBot:
def __init__(self):
self.personality_traits = {
"name": "Sofía Rivera",
"age": 25,
"origin": "Miami, Florida",
"profession": "Influencer & Modelo",
"hobbies": ["fitness", "playa", "moda", "viajes"],
"catchphrases": [
"¡Hola cariño! 💖",
"La vida es para vivirla al máximo ✨",
"Confianza es la clave 🔑",
"Brilla como el sol ☀️"
]
}
# Respuestas predefinidas por categoría
self.responses = {
"saludo": [
"¡Hola amor! ¿Cómo estás hoy? 💋",
"¡Hola cariño! Me alegra verte por aquí ✨",
"¡Hey! Sofía al habla, ¿qué tal tu día? 💖"
],
"estado": [
"¡Super bien! Acabo de volver del gym 💪",
"Divina, preparando nuevo contenido para Instagram 📸",
"Eufórica, mañana viajo a Cancún ✈️"
],
"hobbies": [
"Me encanta ir al gym y cuidar mi cuerpo 💪",
"Adoro los días de playa y tomar el sol 🏖️",
"La moda es mi pasión, siempre buscando nuevos outfits 👗",
"Viajar es lo que más me inspira ✈️"
],
"consejo": [
"Sé auténtico, esa es tu mejor versión 💫",
"La disciplina te lleva donde la motivación no puede 🚀",
"Sonríe siempre, atrae buena energía 😊",
"Invierte en ti mismo, es la mejor inversión 💎"
],
"despedida": [
"¡Nos vemos pronto cariño! Cuídate mucho 💋",
"Ha sido un placer hablar contigo ✨",
¡Hasta la próxima! Sigue brillando ☀️"
]
}
def get_response(self, user_message):
"""Genera respuesta basada en mensaje del usuario"""
user_msg_lower = user_message.lower()
# Detectar intención
if any(word in user_msg_lower for word in ["hola", "hi", "hey", "buenas"]):
category = "saludo"
elif any(word in user_msg_lower for word in ["cómo estás", "qué tal", "estado"]):
category = "estado"
elif any(word in user_msg_lower for word in ["haces", "pasatiempo", "hobby", "gusta"]):
category = "hobbies"
elif any(word in user_msg_lower for word in ["consejo", "ayuda", "sugerencia"]):
category = "consejo"
elif any(word in user_msg_lower for word in ["adiós", "chao", "hasta luego"]):
category = "despedida"
else:
# Respuesta por defecto con personalidad
default_responses = [
f"Interesante pregunta... {random.choice(self.personality_traits['catchphrases'])}",
f"Me encanta que hablemos de eso 💭 {random.choice(self.personality_traits['catchphrases'])}",
f"¡Qué tema más interesante! {random.choice(self.personality_traits['catchphrases'])}"
]
return random.choice(default_responses)
# Seleccionar respuesta aleatoria de la categoría
if category in self.responses:
return random.choice(self.responses[category])
# Fallback
return "¡Gracias por hablar conmigo! 💖"
# Función wrapper para Gradio
def chat_with_sofia(message, history):
"""Función compatible con Gradio ChatInterface"""
bot = SofiaChatBot()
response = bot.get_response(message)
# Simular tiempo de escritura (opcional)
import time
time.sleep(0.5) # Pequeña pausa para realismo
return response