chat.py 1.2 KB

1234567891011121314151617181920212223242526272829
  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 services.openai_service import generate_completion
  6. from services.logging_service import log_llm_response
  7. from auth.security import get_current_user
  8. import logging
  9. from fastapi import APIRouter
  10. logger = logging.getLogger(__name__)
  11. chat_router = APIRouter()
  12. @chat_router.post("/completions")
  13. async def chat_completions(request_data: ChatCompletionRequest, request: Request):
  14. """Get chat completions from OpenAI"""
  15. # Uses session_token (which is the antiAbuseToken) as an identifier for logging
  16. session_identifier = request.session.get("antiAbuseToken", "unknown_session")
  17. try:
  18. openai_response = await generate_completion(request_data.messages, session_identifier)
  19. log_llm_response(request_data.user, openai_response)
  20. return JSONResponse({"response": openai_response})
  21. except HTTPException as e:
  22. raise e
  23. except Exception as e:
  24. logger.error(f"Unexpected error in /api/chat/completions: {e}")
  25. raise HTTPException(status_code=500, detail="Error interno del servidor al procesar el chat.")