| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 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.")
|