from fastapi import Request, HTTPException, Depends from fastapi.responses import JSONResponse from httpx import get from models.chat import ChatCompletionRequest from models.user import User from services.openai_service.openai_service import generate_completion from auth.security import get_current_user import logging from fastapi import APIRouter from config.messages import SuccessResponse logger = logging.getLogger(__name__) chat_router = APIRouter() @chat_router.post("/completions") async def chat_completions(request_data: ChatCompletionRequest, request: Request, current_user: 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") logger.info(f"Chat completion request from user {current_user.email}") try: openai_response = await generate_completion( request_data.messages, session_identifier, current_user.name, current_user.email ) logger.info(f"OpenAI response generated for user {current_user.email}") # Legacy logging function logger.info(f"Chat completion successful for user {current_user.email}") return JSONResponse({"response": openai_response, "message": SuccessResponse.CHAT_RESPONSE_SUCCESS}) except HTTPException as e: logger.error(f"HTTP error in chat completion for user {current_user.email}: {e.detail}") raise except Exception as e: error_msg = f"Unexpected error in /api/chat/completions for user {current_user.email}: {e}" logger.error(error_msg) raise HTTPException(status_code=500, detail="Error interno del servidor al procesar el chat.")