File size: 1,465 Bytes
1333c38
1bc6a5b
 
 
1333c38
 
1bc6a5b
 
1333c38
 
 
1bc6a5b
1333c38
1bc6a5b
 
 
 
 
 
1333c38
 
 
 
 
 
 
 
 
 
 
 
 
1bc6a5b
 
 
1333c38
 
 
 
 
 
 
 
1bc6a5b
 
 
 
1333c38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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