SurfSense/surfsense_backend/app/schemas/chats.py

63 lines
1.2 KiB
Python
Raw Normal View History

from typing import Any
from pydantic import BaseModel, ConfigDict
from app.db import ChatType
2025-03-14 18:53:14 -07:00
from .base import IDModel, TimestampModel
2025-03-14 18:53:14 -07:00
class ChatBase(BaseModel):
type: ChatType
title: str
initial_connectors: list[str] | None = None
messages: list[Any]
2025-03-14 18:53:14 -07:00
search_space_id: int
2025-03-14 18:53:14 -07:00
2025-08-02 21:20:36 -07:00
class ChatBaseWithoutMessages(BaseModel):
type: ChatType
title: str
search_space_id: int
2025-03-14 18:53:14 -07:00
class ClientAttachment(BaseModel):
name: str
content_type: str
2025-03-14 18:53:14 -07:00
url: str
class ToolInvocation(BaseModel):
tool_call_id: str
tool_name: str
2025-03-14 18:53:14 -07:00
args: dict
result: dict
# class ClientMessage(BaseModel):
# role: str
# content: str
# experimental_attachments: Optional[List[ClientAttachment]] = None
# toolInvocations: Optional[List[ToolInvocation]] = None
2025-03-14 18:53:14 -07:00
class AISDKChatRequest(BaseModel):
messages: list[Any]
data: dict[str, Any] | None = None
2025-03-14 18:53:14 -07:00
class ChatCreate(ChatBase):
pass
2025-03-14 18:53:14 -07:00
class ChatUpdate(ChatBase):
pass
2025-03-14 18:53:14 -07:00
class ChatRead(ChatBase, IDModel, TimestampModel):
model_config = ConfigDict(from_attributes=True)
2025-08-02 21:20:36 -07:00
class ChatReadWithoutMessages(ChatBaseWithoutMessages, IDModel, TimestampModel):
model_config = ConfigDict(from_attributes=True)