from typing import Optional from fastapi import APIRouter from fastapi.responses import StreamingResponse from pydantic import BaseModel from app.services.chat_service import generate_response from app.utils.streaming import stream_response router = APIRouter() class ChatRequest(BaseModel): user_query: str user_id: Optional[str] = "alekhya" @router.post("/chat") async def chat(request: ChatRequest): response = await generate_response( request.user_id, request.user_query ) return StreamingResponse( stream_response( response, request.user_id, request.user_query ), media_type="text/plain" )