| 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 | |