# app.py (tu archivo de backend Python)
from flask import Flask, request, jsonify
from flask_cors import CORS # Para manejar CORS
import google.generativeai as genai # Importar la librería de Google Gemini
import os # Para acceder a variables de entorno, donde se recomienda guardar la API Key

app = Flask(__name__)
CORS(app) # Habilita CORS para todas las rutas. En producción, especifica origins.

# --- Configuración de Gemini ---
# Se recomienda encarecidamente NO HARDCODEAR tu API Key directamente aquí.
# Usa variables de entorno para mayor seguridad.
# Puedes establecerla así en tu terminal antes de ejecutar app.py:
# export GEMINI_API_KEY="TU_API_KEY_AQUI" (Linux/macOS)
# $env:GEMINI_API_KEY="TU_API_KEY_AQUI" (PowerShell en Windows)
# set GEMINI_API_KEY=TU_API_KEY_AQUI (CMD en Windows)

# Si por alguna razón la necesitas hardcodeada SOLO PARA PRUEBAS INICIALES

api_key_path = "e:\Dropbox\A - Curso de AI - Python Udemy\pyVertex\my-project-13381ai-3452fb85086a.json"
PROJECT_ID = "my-project-13381ai"
REGION = "us-central1"

gemini_api_key = "AIzaSyAx50JSlCAg5nUTKvXZh52WuvUdJmdkvdc" # ¡CAMBIA ESTO!
genai.configure(api_key=gemini_api_key)

# La forma recomendada: obtenerla de una variable de entorno

#gemini_api_key = os.getenv("GEMINI_API_KEY")

if not gemini_api_key:
    print("ADVERTENCIA: La variable de entorno GEMINI_API_KEY no está configurada.")
    print("Por favor, configúrala o hardcodea la clave solo para pruebas (NO RECOMENDADO EN PRODUCCIÓN).")
    # Si no quieres que se detenga, puedes asignarle una string vacía y manejar el error más tarde
    # o pedirla de alguna otra forma. Para este ejemplo, lanzaremos un error.
    raise ValueError("GEMINI_API_KEY no encontrada. Por favor, configura la variable de entorno.")

genai.configure(api_key=gemini_api_key)

# Seleccionar el modelo de Gemini a usar
# 'gemini-pro' es bueno para texto
# 'gemini-pro-vision' para multimodal (texto e imágenes)
GEMINI_MODEL_NAME = 'gemini-2.5-flash-lite-preview-06-17'

# Inicializar el modelo
gemini_model = genai.GenerativeModel(GEMINI_MODEL_NAME)

@app.route('/chat', methods=['POST'])
def chat_endpoint():
    try:
        data = request.json
        user_message = data.get('message')

        if not user_message:
            return jsonify({"error": "No message provided"}), 400

        # --- AQUÍ ES DONDE INTEGRARÍAS TU OTRA API DE TERCERO ---
        # Ejemplo:
        # info_from_third_api = get_info_from_third_party_api(user_message)
        #
        # Enriquecer el prompt con la información de la API de tercero
        # enriched_prompt = f"El usuario pregunta: '{user_message}'. Además, esta es información relevante de mi sistema: {info_from_third_api}. Responde al usuario basándote en esta información."
        #
        # Por ahora, usaremos el mensaje original:
        enriched_prompt = user_message

        # Envía el mensaje a Gemini
        # Para mantener el contexto de la conversación, usarías chat.send_message
        # Pero para una sola pregunta/respuesta, generate_content es suficiente.
        # Si quieres mantener el historial de chat, necesitarías un manejo de sesiones en tu backend
        # o pasar el historial de mensajes desde el frontend.
        response_gemini = gemini_model.generate_content(enriched_prompt)

        # Acceder al texto de la respuesta
        gemini_content = response_gemini.text

        return jsonify({"reply": gemini_content})

    except Exception as e:
        print(f"Error en el backend: {e}")
        # Puedes añadir más detalle aquí si la clave API es incorrecta, etc.
        if "API key not valid" in str(e):
             return jsonify({"error": "Error de autenticación con Gemini. Revisa tu API Key."}), 500
        return jsonify({"error": str(e)}), 500

if __name__ == '__main__':
    # Ejecuta el backend en un puerto, por ejemplo 5000
    # Asegúrate de que el puerto 5000 esté libre
    app.run(host='0.0.0.0', port=5001, debug=True)