from pydantic import BaseModel, Field from config import settings class QueryRequest(BaseModel): question: str = Field(..., min_length=1, description="User question") k: int = Field( default=settings.default_top_k, ge=settings.min_top_k, le=settings.max_top_k, description="Top-k chunks to retrieve", ) class TimingPayload(BaseModel): retrieval_seconds: float generation_seconds: float total_seconds: float class QueryResponse(BaseModel): question: str answer: str sources: list[str] timing: TimingPayload