Spaces:
Sleeping
Sleeping
| """ | |
| Presentation Layer - Pydantic Schemas for API | |
| """ | |
| from datetime import datetime | |
| from typing import List, Optional | |
| from pydantic import BaseModel, Field | |
| class QueryRequest(BaseModel): | |
| """Query request schema""" | |
| query_text: str = Field(..., min_length=1, max_length=5000, description="User question") | |
| department: str = Field(..., description="Department context") | |
| user_id: Optional[str] = Field(None, description="User identifier") | |
| session_id: Optional[str] = Field(None, description="Session identifier") | |
| top_k: int = Field(10, ge=1, le=50, description="Number of results to return") | |
| temperature: float = Field(0.7, ge=0.0, le=1.0, description="LLM temperature") | |
| max_tokens: int = Field(2048, ge=100, le=4096, description="Max tokens in response") | |
| filters: dict = Field(default_factory=dict, description="Additional filters") | |
| class SourceSchema(BaseModel): | |
| """Source citation schema""" | |
| title: str | |
| content: str | |
| relevance_score: float | |
| document_id: str | |
| chunk_index: int | |
| metadata: dict = Field(default_factory=dict) | |
| class QueryResponse(BaseModel): | |
| """Query response schema""" | |
| query_id: str | |
| answer: str | |
| sources: List[SourceSchema] | |
| confidence: float | |
| processing_time_ms: int | |
| tokens_used: int | |
| model: str | |
| class DocumentUploadRequest(BaseModel): | |
| """Document upload request schema""" | |
| department: str = Field(..., description="Department for the document") | |
| metadata: dict = Field(default_factory=dict, description="Additional metadata") | |
| class DocumentResponse(BaseModel): | |
| """Document response schema""" | |
| id: str | |
| title: str | |
| filename: str | |
| file_type: str | |
| file_size: int | |
| department: str | |
| status: str | |
| uploaded_at: datetime | |
| indexed_at: Optional[datetime] = None | |
| metadata: dict = Field(default_factory=dict) | |
| class HealthResponse(BaseModel): | |
| """Health check response""" | |
| status: str | |
| version: str | |
| timestamp: datetime | |
| services: dict = Field(default_factory=dict) | |
| class ErrorResponse(BaseModel): | |
| """Error response schema""" | |
| error: str | |
| detail: Optional[str] = None | |
| request_id: Optional[str] = None | |