81 lines
1.3 KiB
Python
81 lines
1.3 KiB
Python
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
|