models
Pydantic-модели для запросов и ответов Яндекс Диалогов, а также для валидации конфигурации (config.yaml) через e_lib.Config.
Определяет структуры данных, используемые для валидации входящих запросов от Алисы, формирования ответов навыка LostAndFound и загрузки конфигурации приложения.
1""" 2Pydantic-модели для запросов и ответов Яндекс Диалогов, а также 3для валидации конфигурации (config.yaml) через e_lib.Config. 4 5Определяет структуры данных, используемые для валидации входящих 6запросов от Алисы, формирования ответов навыка LostAndFound 7и загрузки конфигурации приложения. 8""" 9 10from typing import Any, Dict, List 11from pydantic import BaseModel, Field 12 13 14class Meta(BaseModel): 15 """Мета-информация о запросе: локаль, часовой пояс, идентификатор клиента.""" 16 17 locale: str 18 timezone: str 19 client_id: str 20 interfaces: Dict[str, Any] 21 22 23class User(BaseModel): 24 """Информация о пользователе Яндекс Диалогов.""" 25 26 user_id: str 27 28 29class Application(BaseModel): 30 """Информация о приложении, с которого отправлен запрос.""" 31 32 application_id: str 33 34 35class Session(BaseModel): 36 """Данные сессии запроса: идентификаторы сообщения, сессии, навыка и пользователя.""" 37 38 message_id: int 39 session_id: str 40 skill_id: str 41 user: User 42 application: Application 43 user_id: str 44 new: bool 45 46 47class Nlu(BaseModel): 48 """NLU-составляющая запроса: токены, сущности и интенты.""" 49 50 tokens: List[str] 51 entities: List 52 intents: Dict 53 54 55class Markup(BaseModel): 56 """Разметка запроса, указывающая на опасный контекст.""" 57 58 dangerous_context: bool 59 60 61class Request(BaseModel): 62 """Тело запроса от Яндекс Алисы: команда, оригинальная фраза, NLU и разметка.""" 63 64 command: str 65 original_utterance: str 66 nlu: Nlu 67 markup: Markup 68 type: str 69 70 71class AliceRequest(BaseModel): 72 """ 73 Полный входящий запрос от Яндекс Алисы. 74 75 Содержит мета-информацию, данные сессии, тело запроса и версию протокола. 76 """ 77 78 meta: Meta 79 session: Session 80 request: Request 81 version: str 82 83 84class AliceResponse(BaseModel): 85 """ 86 Модель ответа навыка Яндекс Алисы. 87 88 Включает текст ответа, данные сессии и версию протокола. 89 """ 90 91 response: Dict[str, Any] 92 session: Dict[str, Any] 93 version: str = "1.0" 94 95 96class LLMParseResult(BaseModel): 97 """ 98 Результат парсинга LLM для LostAndFound. 99 100 Содержит команду (INSERT/UPDATE/QUERY), вещь и место. 101 """ 102 103 command: str # "INSERT", "UPDATE", or "QUERY" 104 thing: str = "" 105 place: str = "" 106 107 108class LangfuseCleanerConfig(BaseModel): 109 """Конфигурация ассистента очистки Langfuse.""" 110 111 NAME: str 112 ENABLED: bool 113 PROJECT: str 114 RETENTION_DAYS: int = 7 115 TIME: str 116 117 118class LLMWarmupConfig(BaseModel): 119 """Конфигурация ассистента прогрева LLM.""" 120 121 NAME: str 122 ENABLED: bool 123 PROMPT: str = "Привет" 124 MODEL: str = "e.anisimov/eagent" 125 RETRIES: int = 3 126 DELAY: int = 5 127 128 129class AssistantsConfig(BaseModel): 130 """Секция Assistants конфигурации приложения.""" 131 132 LangfuseCleaner: LangfuseCleanerConfig 133 LLMWarmup: LLMWarmupConfig 134 135 136class AppConfig(BaseModel): 137 """Корневая конфигурация приложения из config.yaml.""" 138 139 USERS: Dict[str, List[str]] = Field(default_factory=dict) 140 Assistants: AssistantsConfig
15class Meta(BaseModel): 16 """Мета-информация о запросе: локаль, часовой пояс, идентификатор клиента.""" 17 18 locale: str 19 timezone: str 20 client_id: str 21 interfaces: Dict[str, Any]
Мета-информация о запросе: локаль, часовой пояс, идентификатор клиента.
Информация о пользователе Яндекс Диалогов.
30class Application(BaseModel): 31 """Информация о приложении, с которого отправлен запрос.""" 32 33 application_id: str
Информация о приложении, с которого отправлен запрос.
36class Session(BaseModel): 37 """Данные сессии запроса: идентификаторы сообщения, сессии, навыка и пользователя.""" 38 39 message_id: int 40 session_id: str 41 skill_id: str 42 user: User 43 application: Application 44 user_id: str 45 new: bool
Данные сессии запроса: идентификаторы сообщения, сессии, навыка и пользователя.
48class Nlu(BaseModel): 49 """NLU-составляющая запроса: токены, сущности и интенты.""" 50 51 tokens: List[str] 52 entities: List 53 intents: Dict
NLU-составляющая запроса: токены, сущности и интенты.
56class Markup(BaseModel): 57 """Разметка запроса, указывающая на опасный контекст.""" 58 59 dangerous_context: bool
Разметка запроса, указывающая на опасный контекст.
62class Request(BaseModel): 63 """Тело запроса от Яндекс Алисы: команда, оригинальная фраза, NLU и разметка.""" 64 65 command: str 66 original_utterance: str 67 nlu: Nlu 68 markup: Markup 69 type: str
Тело запроса от Яндекс Алисы: команда, оригинальная фраза, NLU и разметка.
72class AliceRequest(BaseModel): 73 """ 74 Полный входящий запрос от Яндекс Алисы. 75 76 Содержит мета-информацию, данные сессии, тело запроса и версию протокола. 77 """ 78 79 meta: Meta 80 session: Session 81 request: Request 82 version: str
Полный входящий запрос от Яндекс Алисы.
Содержит мета-информацию, данные сессии, тело запроса и версию протокола.
85class AliceResponse(BaseModel): 86 """ 87 Модель ответа навыка Яндекс Алисы. 88 89 Включает текст ответа, данные сессии и версию протокола. 90 """ 91 92 response: Dict[str, Any] 93 session: Dict[str, Any] 94 version: str = "1.0"
Модель ответа навыка Яндекс Алисы.
Включает текст ответа, данные сессии и версию протокола.
97class LLMParseResult(BaseModel): 98 """ 99 Результат парсинга LLM для LostAndFound. 100 101 Содержит команду (INSERT/UPDATE/QUERY), вещь и место. 102 """ 103 104 command: str # "INSERT", "UPDATE", or "QUERY" 105 thing: str = "" 106 place: str = ""
Результат парсинга LLM для LostAndFound.
Содержит команду (INSERT/UPDATE/QUERY), вещь и место.
109class LangfuseCleanerConfig(BaseModel): 110 """Конфигурация ассистента очистки Langfuse.""" 111 112 NAME: str 113 ENABLED: bool 114 PROJECT: str 115 RETENTION_DAYS: int = 7 116 TIME: str
Конфигурация ассистента очистки Langfuse.
119class LLMWarmupConfig(BaseModel): 120 """Конфигурация ассистента прогрева LLM.""" 121 122 NAME: str 123 ENABLED: bool 124 PROMPT: str = "Привет" 125 MODEL: str = "e.anisimov/eagent" 126 RETRIES: int = 3 127 DELAY: int = 5
Конфигурация ассистента прогрева LLM.
130class AssistantsConfig(BaseModel): 131 """Секция Assistants конфигурации приложения.""" 132 133 LangfuseCleaner: LangfuseCleanerConfig 134 LLMWarmup: LLMWarmupConfig
Секция Assistants конфигурации приложения.
137class AppConfig(BaseModel): 138 """Корневая конфигурация приложения из config.yaml.""" 139 140 USERS: Dict[str, List[str]] = Field(default_factory=dict) 141 Assistants: AssistantsConfig
Корневая конфигурация приложения из config.yaml.