import os import logging from flask import Flask, render_template, request, jsonify from models.chatbot_model import MentalHealthChatbot app = Flask(__name__) # Configurar el registro de errores logging.basicConfig( level=logging.ERROR, format='%(asctime)s %(levelname)s %(name)s %(threadName)s : %(message)s', handlers=[ # Cambiamos a /tmp/error.log para que sea escribible en Hugging Face Spaces logging.FileHandler("/tmp/error.log"), logging.StreamHandler() ] ) logger = logging.getLogger(__name__) # Crear una instancia del chatbot con el modelo fine-tuned try: chatbot = MentalHealthChatbot(model_path='models/bert_emotion_model') except Exception as e: logger.error(f"Error al inicializar el chatbot: {e}") raise @app.route('/') def index(): try: return render_template('index.html') except Exception as e: logger.error(f"Error al renderizar index.html: {e}") return "Error al cargar la página de inicio.", 500 @app.route('/chatbot') def chatbot_page(): try: return render_template('chatbot.html') except Exception as e: logger.error(f"Error al renderizar chatbot.html: {e}") return "Error al cargar la página del chatbot.", 500 @app.route('/get_response', methods=['POST']) def get_bot_response(): try: user_input = request.form.get('message', '').strip() if not user_input: logger.warning("Mensaje vacío recibido del usuario.") return jsonify({'response': "Por favor, ingresa un mensaje."}), 400 response_data = chatbot.generate_response(user_input) # Obtenemos el texto, pero ignoramos audio_path, ya que no generamos audio en el servidor response_text = response_data.get('text', "Lo siento, no pude procesar tu mensaje.") # Devolvemos solo el texto (y, si quieres, emoción, confianza, etc.) return jsonify({'response': response_text}) except Exception as e: logger.error(f"Error en /get_response: {e}") return jsonify({'response': "Lo siento, ha ocurrido un error al procesar tu solicitud."}), 500 if __name__ == '__main__': # Ajustamos para leer la variable de entorno PORT (o usar 7860 por defecto) port = int(os.environ.get("PORT", 7860)) app.run(host="0.0.0.0", port=port, debug=True)