chat.py 1.4 KB

12345678910111213141516171819202122232425262728293031
  1. from fastapi import Request, HTTPException, Depends
  2. from fastapi.responses import JSONResponse
  3. from httpx import get
  4. from models.chat import ChatCompletionRequest
  5. from models.user import User
  6. from services.openai_service.openai_service import generate_completion
  7. from services.logging_service import log_llm_response
  8. from auth.security import get_current_user
  9. import logging
  10. from fastapi import APIRouter
  11. from config.messages import SuccessResponse
  12. logger = logging.getLogger(__name__)
  13. chat_router = APIRouter()
  14. @chat_router.post("/completions")
  15. async def chat_completions(request_data: ChatCompletionRequest, request: Request, current_user: User = Depends(get_current_user)):
  16. """Get chat completions from OpenAI"""
  17. # Uses session_token (which is the antiAbuseToken) as an identifier for logging
  18. session_identifier = request.session.get("antiAbuseToken", "unknown_session")
  19. try:
  20. openai_response = await generate_completion(request_data.messages, session_identifier, current_user.name, current_user.email)
  21. log_llm_response(request_data.user, openai_response)
  22. return JSONResponse({"response": openai_response, "message": SuccessResponse.CHAT_RESPONSE_SUCCESS})
  23. except HTTPException as e:
  24. raise e
  25. except Exception as e:
  26. logger.error(f"Unexpected error in /api/chat/completions: {e}")
  27. raise HTTPException(status_code=500, detail="Error interno del servidor al procesar el chat.")