agent_api/lambda_agent_api/client.py

33 lines
No EOL
975 B
Python

from enum import Enum
from pydantic import BaseModel, Field, TypeAdapter
from typing import Annotated, Union, Literal
__all__ = ['EClientMessage', 'MsgUserMessage', 'ClientMessage']
class EClientMessage(str, Enum):
USER_MESSAGE = "USER_MESSAGE"
class MsgUserMessage(BaseModel):
"""
Полное сообщение от пользователя.
"""
type: Literal[EClientMessage.USER_MESSAGE] = EClientMessage.USER_MESSAGE
text: str
"""
Текст сообщения.
"""
ClientMessage = TypeAdapter(Annotated[
Union[MsgUserMessage,],
Field(discriminator="type")
])
"""
Объединяет все типы входящих сообщений в одно для удобной автоматической десериализации.\n
Pydantic сам определит нужный тип в зависимости от поля ``type``.\n
Использование:\n
msg = ClientMessage.model_validate_json(json)
"""