File size: 1,399 Bytes
4a13628 56dc677 c7fc3b6 56dc677 4a13628 56dc677 4a13628 56dc677 |
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 |
from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any
from enum import Enum
from datetime import datetime
class MessageType(str, Enum):
TEXT = "text"
AUDIO = "audio"
class UserMessage(BaseModel):
message_id: str = Field(..., description="Unique message ID")
content: str = Field(..., description="Text content or audio base64")
message_type: MessageType = Field(..., description="Message type")
session_id: str = Field(..., description="User session ID")
timestamp: datetime = Field(default_factory=datetime.now)
class ChatbotResponse(BaseModel):
response_id: str = Field(..., description="Unique response ID")
text_response: str = Field(..., description="Chatbot text response")
audio_response: Optional[str] = Field(None, description="Audio response in base64")
audio_url: Optional[str] = Field(None, description="Generated audio URL")
session_id: str = Field(..., description="User session ID")
timestamp: datetime = Field(default_factory=datetime.now)
class ChatSession(BaseModel):
session_id: str = Field(..., description="Session ID")
user_id: Optional[str] = Field(None, description="User ID")
created_at: datetime = Field(default_factory=datetime.now)
last_activity: datetime = Field(default_factory=datetime.now)
conversation_history: List[Dict[str, Any]] = Field(default_factory=list) |