arxplorer / src /router /chat.py
Subhadeep Mandal
Fresh deploy
54eb2ce
Raw
History Blame Contribute Delete
1.28 kB
from fastapi import APIRouter, Depends, Request
from ..controller import chat as chat_controller
from ..schema.chat import ChatQueryRequest
from ..lib.auth import get_current_user
from ..lib.api_key_middleware import load_user_api_keys
router = APIRouter()
@router.post("/query")
async def query_paper_endpoint(
payload: ChatQueryRequest,
request: Request,
user_id: int = Depends(get_current_user),
_: int = Depends(load_user_api_keys),
):
"""
Query a paper with conversation history using LangGraph.
Streams back the LangGraph execution updates as Server-Sent Events (SSE).
The conversation history is automatically maintained via checkpointing
using the session_id as the thread_id.
Automatically saves both the user query and assistant response to the message table.
Args:
payload: ChatQueryRequest containing query and parameters
request: FastAPI Request object
user_id: Current authenticated user ID (from JWT token)
Returns:
StreamingResponse with SSE updates showing the progress through
the LangGraph nodes (retrieval, web search, reranking, generation)
"""
return await chat_controller.query_paper(user_id, payload, request)