Архитектура платформы

Ядро Платформы (Core)

Определения

Ядро Платформы – бекэнд, набор сервисов, обеспечивающих ключевой функционал Платформы.

NB Информация часто обновляется и будет дополняться.

Ключевые микросервисы Ядра

Тип

Микросервис

Зона ответственности микросервиса

Dialog Service

dialog

Контролирует процесс общения с собеседником, действует согласно обученному сценарию, сохраняя контекст общения (чата) в отдельном хранилище (Redis).

Message Storing

message-storing

Хранит сообщения, сессии, чаты и роутит AMQP сообщения в зависимости от мода текущей сессии в чате.

System Box

system-box

Обрабатывает команды на исполнение внешних запросов, конструирует запрос в указанный сервис, мапирует данные из ответа на запрос. Обрабатывает входящий запрос.

Messenger Controller

messenger-controller

Обрабатывает новые сообщения Собеседника из коннектора к мессенджеру, перенаправляет их в шину. Обрабатывает сообщения Бота и Оператора и перенаправляет их обратно в коннектор к мессенджеру.

messenger-api

Хранит Каналы и запущенные коннекторы, обрабатывает пользовательский CRUD Каналов.

Bot Builder API

botbuilder-api

Хранит данные о сценарии Бота (Дерево Диалога, NLU модели, интенты, файлы), обрабатывает пользовательский CRUD этих данных. Обрабатывает команды на обучение, импорт, экспорт, добавляет данные к запросам и перенаправляет их в шину сообщений. Работает с S3 для хранения файлов для ответа Бота, экспортируемые конфиги Бота. Оповещает подписанных клиентов об изменениях переменных контекста в дебаг панели.

strategy-debug

Обрабатывает сообщения Бота и, в случае если сообщение из тестового канала, запрашивает сбор контекста у dialog сервиса.

Strategy Controllers

strategy-train

Обрабатывает команду на обучениеДерева Диалога, выполняет проверки/конвертации/обработки по пайплайну обучения, выдает успех/фейл обучения обратно в шину.

strategy-validation

Обрабатывает команду валидации сценария, возвращает результат валидации в шину.

strategy-conversion

Обрабатывает команду конвертации сценария (из дерева слотов в граф нод), возвращает результат конвертации в шину.

strategy-config

Обрабатывает команды импорта, экспорта (дерева слотов) и кодирования (графа нод) диалоговых сценариев. Импорт и экспорт работают с конфигами JSON формата, кодирование производится в формат DSL dialog сервиса (тоже некоторого JSON формата). Возвращает результат обработки конфига в шину.

NLU

data-processing

Обрабатывает команды на обработку регулярных выражений в тексте Собеседника.

nlu-gateway

Является «фасадом» над операциями создания/удаления NLU моделей, а также их использованием (отправка текстов на обработку в эти модели).

nlu-model-controller

Обрабатывает набор команд на обучение/удаление/парсинг NLU моделей, пересылает сообщения на конкретные NLU сервисы хранит структуру NLU конвейера (в каком порядке должны вызываться сервисы для выполнения обработки текста).

nlu-average-vector-composer

Возвращает среднее арифметическое над набором векторов (на входе вектора слов, на выходе вектор текста).

nlu-elmo-vectorizer

Возвращает контекстно-зависимое векторное представление каждого слова в тексте (на вход упорядоченный набор слов, на выходе упорядоченный набор векторов слов). Использует нейросетевую языковую модель ELMo.

nlu-lower-case-transformer

Преобразует упорядоченный набор слов в упорядоченный набор тех же слов в нижнем регистре.

nlu-nltk-splitter

Разбивает текст на упорядоченный набор слов.

nlu-punctuation-filter

Удаляет из упорядоченного набора слов слова, которые являются пунктуацией. Пунктуационные токены задаются через словарь.

nlu-svc-intent-classifier

Обучает модели машины опорных векторов, сохраняет в удаленном хранилище, использует для обработки векторов текстов чтобы получить намерение текста (целевое значение модели). В случае многоклассовой классификации используется подход one-vs-one.

Admin API

administrator-api

Хранит сущности (компании, проекты, боты), обрабатывает пользовательский CRUD этих сущностей. NB! имеет side effect – при создании Бота отправляет запрос на создание тестового канала в messenger-api сервис

Auth Service

authorization

Хранит Пользователей и их авторизованные сессии в Платформе. Обрабатывает пользовательский CRUD users и команды на вход, проверку авторизации и выход и регистрацию Пользователей.

NB! имеет side effect – при регистрации: 1) отправляет запрос на создание компании в administrator-api сервис 2) отправляет запрос на отправку email в mailing сервис

Utils

mailing

Обрабатывает команды на отправку письма из платформы на определенный почтовый адрес. Хранит шаблоны писем в виде jinja2.

billing

task-manager

Запускает команды по таймеру, отправляет команды в шину.

Last updated