Spaces:
Running
Running
Download backend/api/schemas.py from HarryDataScience/documind-ai: direct link, hf CLI and curl.
- Browser
- Download file 3.22 kB
-
https://huggingface.co/spaces/HarryDataScience/documind-ai/resolve/main/backend/api/schemas.py
- Command line
-
hf download hf://spaces/HarryDataScience/documind-ai/backend/api/schemas.py
-
curl -L -o schemas.py https://huggingface.co/spaces/HarryDataScience/documind-ai/resolve/main/backend/api/schemas.py
3.22 kB
| """ | |
| DocuMind AI β API Schemas | |
| Pydantic models for all API request and response bodies. | |
| These enforce type safety and auto-generate OpenAPI docs. | |
| """ | |
| from pydantic import BaseModel, Field | |
| from typing import List, Literal, Optional | |
| # ββ Upload βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class UploadResponse(BaseModel): | |
| success: bool | |
| doc_id: str | |
| filename: str | |
| total_pages: int | |
| total_chunks: int | |
| file_size_kb: float | |
| message: str | |
| job_id: Optional[str] = None | |
| status: Optional[str] = None | |
| # ββ Documents ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class DocumentInfo(BaseModel): | |
| doc_id: str | |
| filename: str | |
| total_pages: int | |
| total_chunks: int | |
| file_size_kb: float | |
| class DocumentListResponse(BaseModel): | |
| documents: List[DocumentInfo] | |
| total: int | |
| class DeleteResponse(BaseModel): | |
| success: bool | |
| message: str | |
| # ββ Query ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class ChatTurn(BaseModel): | |
| """One earlier chat message, used only to resolve follow-up questions.""" | |
| role: Literal["user", "assistant"] | |
| content: str = Field(..., max_length=4000) | |
| class QueryRequest(BaseModel): | |
| question: str = Field( | |
| ..., | |
| min_length=3, | |
| max_length=1000, | |
| examples=["What are the main findings of this document?"] | |
| ) | |
| doc_ids: Optional[List[str]] = Field( | |
| default=None, | |
| description="Restrict search to specific document IDs. None = search all." | |
| ) | |
| top_k: Optional[int] = Field( | |
| default=None, | |
| ge=1, | |
| le=20, | |
| description="Number of chunks to retrieve. Defaults to setting in .env" | |
| ) | |
| history: Optional[List[ChatTurn]] = Field( | |
| default=None, | |
| max_length=10, | |
| description="Up to 10 recent chat turns used to resolve follow-up questions.", | |
| ) | |
| class SourceInfo(BaseModel): | |
| doc_name: str | |
| page_number: int | |
| text: str | |
| similarity: float | |
| class QueryResponse(BaseModel): | |
| answer: str | |
| sources: List[SourceInfo] | |
| query: str | |
| model_used: str | |
| latency_ms: float | |
| chunks_retrieved: int | |
| is_grounded: bool | |
| confidence: str | |
| # ββ Health βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class HealthResponse(BaseModel): | |
| status: str | |
| app_name: str | |
| version: str | |
| model: str | |
| embedding_model: str | |
| documents_count: int | |
| groq_configured: bool | |
| vector_backend: str = "chroma" | |