import os
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from dotenv import load_dotenv
from groq import Groq

app = FastAPI()

# Cargar variables de entorno desde el archivo .env
load_dotenv()

# Configurar CORS para permitir solicitudes desde todos los orígenes
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # Permitir solicitudes desde cualquier origen
    allow_credentials=True,
    allow_methods=["POST"],
    allow_headers=["*"],
)

# Crear cliente Groq con la clave API cargada desde las variables de entorno
client = Groq(api_key=os.environ.get("GROQ_API_KEY"))

@app.post("/v1/chat/completions/")
def chat_completions(payload: dict):
    try:
        # Obtener los datos necesarios del payload
        messages = payload.get("messages")
        model = payload.get("model")
        temperature = payload.get("temperature", 0.5)  # Valor por defecto
        max_tokens = payload.get("max_tokens", 1024)  # Valor por defecto
        top_p = payload.get("top_p", 1)  # Valor por defecto
        stream = payload.get("stream", False)  # Valor por defecto

        # Llamar al método del cliente Groq para realizar la tarea deseada
        result = client.chat.completions.create(
            messages=messages,
            model=model,
            temperature=temperature,
            max_tokens=max_tokens,
            top_p=top_p,
            stream=stream
        )

        # Retornar el resultado del procesamiento
        return result
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

if __name__ == "__main__":
    import uvicorn

    # Ejecutar la aplicación utilizando uvicorn en el puerto 1234
    # uvicorn.run(app, host="localhost", port=1234)

    # Configurar uvicorn para soportar HTTPS con un certificado y clave privada
    uvicorn.run(
        app,
        host="0.0.0.0",
        port=443,
        ssl_keyfile="/etc/letsencrypt/live/radargps.com.ar/privkey.pem",
        ssl_certfile="/etc/letsencrypt/live/radargps.com.ar/fullchain.pem",
    )

#arrancar el servidor con:
# uvicorn app:app --host localhost --port 1234
