from pydantic import BaseModel from typing import List from datetime import datetime from .bot import BotInfo class Url(BaseModel): url: str query: str | None = None attachment: bool | None = None class Content(BaseModel): type: str text: str | None = None image_url: Url | None = None audio_url: Url | None = None pdf_url: Url | None = None video_url: Url | None = None class BaseMessage(BaseModel): id: str content: str | List[Content] class Message(BaseMessage): role: str like: bool | None created_at: datetime | None class ChatMessage(BaseModel): id: int | None = None model: str query: str bot_id: int retry: bool = False class Chat(BaseModel): id: int title: str created_at: datetime bot: BotInfo class ChatHistory(Chat): messages: List[Message] class Chats(BaseModel): chats: List[Chat] page: int total_count: int last_page: int class Like(BaseModel): like: bool | None class Title(BaseModel): title: str class Archive(BaseModel): archive: bool = False class RelatedQuestions(BaseModel): questions: List[str] class MessageStream(BaseModel): chat_id: str chat_title: str content: str ai_message_id: str human_message_id: str