27 lines
956 B
Python
27 lines
956 B
Python
import asyncio
|
|
from fastapi import APIRouter
|
|
from fastapi.responses import StreamingResponse
|
|
|
|
from app.deps import AuthDep
|
|
from app.services.lightrag_service import lightrag_service
|
|
|
|
router = APIRouter(prefix="/chat")
|
|
|
|
|
|
@router.get("")
|
|
async def chat(query: str, document_id: str, auth: AuthDep) -> StreamingResponse: # noqa: ARG001
|
|
"""
|
|
SSE 流式占位。后续会调用 LightRAG + OpenAI。
|
|
当前直接返回 mock 文字,确保前端链路可用。
|
|
"""
|
|
|
|
async def event_stream() -> asyncio.AsyncGenerator[str, None]:
|
|
reply = await lightrag_service.query(query_text=query, user_id="placeholder-user")
|
|
chunks = [reply[: len(reply) // 2 or 1], reply[len(reply) // 2 or 1 :]]
|
|
for chunk in chunks:
|
|
yield f"data: {chunk}\n\n"
|
|
await asyncio.sleep(0.1)
|
|
yield "data: [DONE]\n\n"
|
|
|
|
return StreamingResponse(event_stream(), media_type="text/event-stream")
|