from fastapi import Request, HTTPException, Depends from fastapi.responses import JSONResponse from httpx import get from models.chat import ChatCompletionRequest from services.openai_service.openai_service import generate_completion from services.logging_service import log_llm_response from auth.security import get_current_user import logging from fastapi import APIRouter logger = logging.getLogger(__name__) chat_router = APIRouter() @chat_router.post("/completions") async def chat_completions(request_data: ChatCompletionRequest, request: Request, current_user=Depends(get_current_user)): """Get chat completions from OpenAI""" # Uses session_token (which is the antiAbuseToken) as an identifier for logging session_identifier = request.session.get("antiAbuseToken", "unknown_session") try: openai_response = await generate_completion(request_data.messages, session_identifier, current_user.nombre, current_user.email) log_llm_response(request_data.user, openai_response) return JSONResponse({"response": openai_response}) except HTTPException as e: raise e except Exception as e: logger.error(f"Unexpected error in /api/chat/completions: {e}") raise HTTPException(status_code=500, detail="Error interno del servidor al procesar el chat.")