Spaces:
Running
Running
| from pydantic import BaseModel, Field | |
| from typing import List, Optional, Dict, Any | |
| from datetime import datetime | |
| # Source information model | |
| class SourceInfo(BaseModel): | |
| id: str | |
| name: str | |
| category: str | |
| price: str | |
| similarity_score: float | |
| # Chat request and response models | |
| class ChatRequest(BaseModel): | |
| message: str | |
| conversation_id: Optional[str] = None | |
| class ChatResponse(BaseModel): | |
| response: str | |
| sources: List[SourceInfo] # Changed from List[str] to List[SourceInfo] | |
| suggested_questions: List[str] | |
| conversation_id: Optional[str] = None # Make this optional | |
| # Product models | |
| class Product(BaseModel): | |
| id: str | |
| name: str | |
| category: str | |
| description: str | |
| price: float | |
| image_url: Optional[str] = None | |
| tags: List[str] = [] | |
| class SearchRequest(BaseModel): | |
| query: str | |
| category: Optional[str] = None | |
| limit: int = 20 | |
| # Conversation models | |
| class ChatMessage(BaseModel): | |
| role: str # "user" or "assistant" | |
| content: str | |
| timestamp: datetime | |
| class Conversation(BaseModel): | |
| id: str | |
| user_id: str | |
| messages: List[ChatMessage] | |
| created_at: datetime | |
| updated_at: datetime | |
| # Knowledge base models | |
| class Document(BaseModel): | |
| content: str | |
| metadata: Dict[str, Any] = {} | |
| source: str = "upload" | |
| class KnowledgeDocument(BaseModel): | |
| id: str | |
| content: str | |
| embedding: List[float] | |
| metadata: Dict[str, Any] | |
| source: str | |
| created_at: datetime |