|
|
from pydantic import BaseModel, Field, validator |
|
|
from typing import List, Dict, Any, Optional |
|
|
|
|
|
class QueryRequest(BaseModel): |
|
|
query: str = Field(..., min_length=1, max_length=1000, description="The query text to search for") |
|
|
|
|
|
@validator('query') |
|
|
def validate_query(cls, v): |
|
|
if not v.strip(): |
|
|
raise ValueError('Query cannot be empty or contain only whitespace') |
|
|
return v.strip() |
|
|
|
|
|
class SourceDocument(BaseModel): |
|
|
source: str |
|
|
text: str |
|
|
score: float |
|
|
|
|
|
class QueryResponse(BaseModel): |
|
|
answer: str |
|
|
source_documents: List[Dict[str, Any]] |
|
|
|
|
|
class ErrorResponse(BaseModel): |
|
|
error: str |
|
|
detail: str |
|
|
status_code: int |
|
|
timestamp: Optional[str] = None |
|
|
|
|
|
class UploadResponse(BaseModel): |
|
|
filename: str |
|
|
message: str |
|
|
num_chunks_stored: int |
|
|
|