Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, Field | |
| from typing import Optional, List | |
| from datetime import datetime | |
| import uuid | |
| class MessageRequest(BaseModel): | |
| question: str = Field(..., min_length=1, max_length=2000, description="User question") | |
| conversation_id: Optional[str] = Field(None, description="Conversation ID for context") | |
| class SourceDocument(BaseModel): | |
| content: str | |
| source: str | |
| page: Optional[int] = None | |
| chunk_id: Optional[str] = None | |
| class MessageResponse(BaseModel): | |
| answer: str | |
| conversation_id: str | |
| sources: List[SourceDocument] = [] | |
| timestamp: str = Field(default_factory=lambda: datetime.utcnow().isoformat() + "Z") | |
| class IngestRequest(BaseModel): | |
| metadata: Optional[dict] = None | |
| class IngestResponse(BaseModel): | |
| message: str | |
| documents_processed: int | |
| chunks_created: int | |
| filename: str | |
| class ConversationMessage(BaseModel): | |
| role: str # "user" or "assistant" | |
| content: str | |
| sources: List[SourceDocument] = [] | |
| timestamp: str = Field(default_factory=lambda: datetime.utcnow().isoformat() + "Z") | |
| class Conversation(BaseModel): | |
| id: str = Field(default_factory=lambda: str(uuid.uuid4())) | |
| title: str = "New Conversation" | |
| messages: List[ConversationMessage] = [] | |
| created_at: str = Field(default_factory=lambda: datetime.utcnow().isoformat() + "Z") | |
| updated_at: str = Field(default_factory=lambda: datetime.utcnow().isoformat() + "Z") | |
| class ConversationListItem(BaseModel): | |
| id: str | |
| title: str | |
| message_count: int | |
| created_at: str | |
| updated_at: str | |
| class HealthResponse(BaseModel): | |
| status: str = "healthy" | |
| version: str = "1.0.0" | |
| environment: str = "development" | |
| class VectorStatsResponse(BaseModel): | |
| total_vectors: int = 0 | |
| total_documents: int = 0 | |
| index_name: str = "" | |
| dimension: int = 384 | |
| error: Optional[str] = None | |
| class DocumentInfo(BaseModel): | |
| name: str | |
| size: int # bytes | |
| type: str # PDF, Markdown, etc. | |
| uploaded_at: str | |