Baktabek's picture
Upload folder using huggingface_hub
409c17a verified
raw
history blame
2.27 kB
"""
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