chat.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 auth.security import get_current_user
  8. import logging
  9. from fastapi import APIRouter
  10. from config.messages import SuccessResponse
  11. logger = logging.getLogger(__name__)
  12. chat_router = APIRouter()
  13. @chat_router.post("/completions")
  14. async def chat_completions(request_data: ChatCompletionRequest, request: Request, current_user: User = Depends(get_current_user)):
  15. """Get chat completions from OpenAI"""
  16. # Uses session_token (which is the antiAbuseToken) as an identifier for logging
  17. session_identifier = request.session.get("antiAbuseToken", "unknown_session")
  18. logger.info(f"Chat completion request from user {current_user.email}")
  19. try:
  20. openai_response = await generate_completion(
  21. request_data.messages,
  22. session_identifier,
  23. current_user.name,
  24. current_user.email
  25. )
  26. logger.info(f"OpenAI response generated for user {current_user.email}")
  27. # Legacy logging function
  28. logger.info(f"Chat completion successful for user {current_user.email}")
  29. return JSONResponse({"response": openai_response, "message": SuccessResponse.CHAT_RESPONSE_SUCCESS})
  30. except HTTPException as e:
  31. logger.error(f"HTTP error in chat completion for user {current_user.email}: {e.detail}")
  32. raise
  33. except Exception as e:
  34. error_msg = f"Unexpected error in /api/chat/completions for user {current_user.email}: {e}"
  35. logger.error(error_msg)
  36. raise HTTPException(status_code=500, detail="Error interno del servidor al procesar el chat.")