Files
ai-contract-platform/backend/app/api/chat.py
T

30 lines
1021 B
Python

from fastapi import APIRouter, Depends
from fastapi.responses import StreamingResponse
from app.api.reviews import require_current_user
from app.clients.shared_ai_platform import SharedAIPlatformClient, get_shared_ai_platform_client
from app.schemas.chat import ChatStreamRequest
router = APIRouter(prefix="/chat", tags=["chat"])
ROUTE_PERMISSION_SCOPE = "chat"
ROUTE_PERMISSION_ACTIONS = {
"stream": "chat:stream",
}
@router.post("/stream")
def stream_chat(
payload: ChatStreamRequest,
shared_ai_platform_client: SharedAIPlatformClient = Depends(get_shared_ai_platform_client),
current_user: dict = Depends(require_current_user),
):
review_context = (
payload.review_context.model_dump(mode="json", by_alias=True, exclude_none=True)
if payload.review_context
else None
)
return StreamingResponse(
shared_ai_platform_client.stream_answer(current_user, payload.conversation_id, payload.message, review_context),
media_type="text/event-stream",
)