Hamza4100's picture
Upload 20 files
a631409 verified
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