Центральный модуль
Центральная модель искусственного интеллекта FastBot, получающая текстовый запрос от пользователя и определяющая модуль, решающий поставленную задачу, используя обработку естественного языка. Является инструментом поддержки аналитиков и разработчиков.
Разработка на фронте и бэке
Необходимо создать модуль, представляющий собой чат-бота, имеющего доступ к данным пользователя, визуализаций и из модели данных.
Расположение:
Нижняя правая часть дашборда в конструкторе на одной вертикальной линии с кнопками "Настройки", "SQL-код", "Сохранить проект".
В закрытом состоянии представляет собой логотип FastBot. При нажатии пользователем на логотип должен открываться чат, уникальный для данного проекта и данного пользователя – каждому чату необходимо присваивать уникальный идентификатор исходя из этих двух критериев.
В верхней части открытого чата должно быть подписано его название – FastBot. При клике на название должна открываться справочная информация о чат-боте и его возможностях (ссылка).
*Альтернативный вариант – добавить кнопку "info" со всей доступной информацией о боте.
Данный модуль будет доступен только для ролей "Аналитик" и выше, поскольку имеет доступ к данным дашборда и может управлять созданием и изменением визуализаций. Для роли "Зритель" будет отсутствовать даже иконка бота. При переходе пользователя в режим просмотра данный модуль деактивируется – чат закрывается, а иконка становится некликабельной, хотя и остаётся в интерфейсе конструктора.
Внутри чат состоит из 4 элементов: сообщений бота, сообщений пользователя, поля ввода нового сообщения, плашек с датой.
Сообщения бота
Наибольшая часть задач бота связана с обработкой визуализаций на дашборде. В случае успешного выполнения запроса передаётся ответ из ML-модели в одно-два слова. В случае возникновения ошибки возвращается её описание (также из ML-модели).
Если запрос пользователя не направлен на изменение элемента дашборда, а содержит вопрос по данным, то бот возвращает ответ языковой модели в том виде, в котором он приходит на фронт.
При первом использовании бота данным пользователем (не в конкретном проекте, а в целом) – открытии чата нажатием на логотип – он отправляет следующее сообщение: "Приветствую! Я FastBot, Ваш интеллектуальный помощник в управлении дашбордом! Я могу помочь с обработкой визуализаций, изучением данных, их размещением в проекте и много чем ещё... Чтобы получить подробную информацию о моих возможностях – нажмите на моё имя в чате сверху."
При первом использовании бота данным пользователем в данном проекте в данный день он отправляет следующее сообщение: "Здравствуй, {Имя_Пользователя}! Чем я могу помочь тебе сегодня?".
*Слева от сообщения бота можно размещать его логотип.
Сообщения пользователя
Текстовые запросы от пользователя, отправленные через поле ввода. Каждый уникальный чат хранит всю историю сообщений пользователя за всё время использования данного чата.
*Справа от сообщения пользователя можно размещать нейтральный логотип либо фото пользователя из его профиля (когда и если будет добавлена такая возможность в панели администратора)
Поле ввода нового сообщения (отправка данных через бэкенд)
Текстовое поле, в которое пользователь может вводить любую комбинацию символов в неограниченном количестве.
В правой части поля ввода должна быть кнопка для отправки сообщения. При нажатии на эту кнопку текстовый запрос от пользователя попадает в секцию "Сообщения пользователя" в чате с ботом, а также происходит отправка следующей информации через бэкенд для ML-модели:
- Сообщение от пользователя текстом из чата
- Уникальный идентификатор для каждой выбранной визуализации
- Ширину и высоту страницы проекта
- Все поля (названия столбцов + их типы данных) из всех моделей данных, используемых в проекте (отдельно от полей для визуализаций)
- Весь набор информации с вкладок "Данные", "Вид" и "События", необходимый для создания и размещения выбранных визуализаций на дашборде.
- Информация о размещении всех визуализаций на дашборде, а именно: название визуализации, отступ от левого края (X), отступ от верхнего края (Y), ширина визуализации (Ш), высота визуализации (В).
Информация о дате
При отправке сообщений пользователем или ботом также передаётся информация о дате и времени отправки. В чате ведётся группировка сообщений по дням: сообщения разбиваются на отдельные блоки с указанием даты отправки в формате "XX месяца" (например, 12 декабря, 8 сентября) в виде плашки над первым сообщением в этот день (как в Телеграме). Особый формат записи имеют текущий день ("Сегодня") и предшествующий ему ("Вчера").
Принцип работы
Чат-бот должен иметь доступ ко всем объектам на всех страницах* одного дашборда. Под доступом подразумевается возможность сбора информации, изменения параметров, создания новых объектов.
*На разных страницах одного дашборда должна сохраняться общая для всего проекта история переписки.
В качестве результата работы модели ИИ с бэкенда возвращается следующее:
- Текстовый ответ пользователю
- Весь набор информации для вкладок "Данные", "Вид" и "События", необходимый для создания и размещения визуализации на дашборде.
- Тип задачи кодовым словом: new, change, replace. Кодовые слова используются для определения типа взаимодействия с дашбордом и имеющимися визуализациями: создание, изменение и замена.
Создание новой визуализации (new)
Если модель вернула кодовое слово new, то перед применением параметров из модели необходимо предварительно создать сам объект визуализации в координатах, указанных как отступ слева (X) и отступ сверху (Y). После создания вкладки новой визуализации заполняются данными.
Изменение имеющейся визуализации
Если модель вернула кодовое слово change, то новые визуализации не создаются. Параметры, переданные моделью, подставляются в существующие визуализации
Замена имеющейся визуализации
Если модель вернула кодовое слово replace, то должен выполняться следующий алгоритм:
- Удаляется первая визуализация из списка.
- Создаётся новая визуализация переданного из модели типа и размещается согласно переданным координатам X и Y.
- Новая визуализация заполняется данными из модели.
Алгоритм повторяется для всех преобразуемых визуализаций (с тегом replace)
ML-разработка
FastBot должен состоять из следующих модулей, решающих отдельные задачи:
- Модуль преобразования виджетов из одного типа в другой.
- Модуль изменения параметров и покраски виджетов.
- Модуль создания прототипов.
- Модуль позиционирования виджетов.
Для каждой задачи существует отдельное ТЗ с описанием и ссылкой на центральный модуль (этот). Сам центральный модуль должен с помощью обработки естественного языка классифицировать задачу и выбрать модуль для её выполнения на основании текстового запроса от пользователя. Ключевыми словами, по которым возможно определить класс задачи, могут быть:
- Модуль преобразования – "преобразуй", "тип", "вид", "поменяй/замени/измени {визуализацию} на", "преврати {визуализацию} в", а также названия типов для изменения: "график", "диаграмма", "таблица", "водопад" и т.п.
- Модуль изменения параметров и покраски – "поменяй/замени/измени {параметр} на", "скругли", "раскрась/перекрась", "цвет/гамма/оттенок/палитра", "добавь к {визуализации}", "размер" и т.п.
- Модуль создания прототипов – "создай/добавь/спроектируй/разработай/подготовь {визуализацию или дашборд}", "виртуальные данные", "прототип", также названия типов для создания: "график", "диаграмма", "таблица", "водопад" и т.п.
- Модуль позиционирования виджетов – "размести", "передвинь/подвинь/перенеси/перемести", "под/над/слева/справа" (и др. предлоги для позиционирования), "отступы/расстояние/промежутки/дистанция" и т.п.
Наибольшая часть задач бота связана с обработкой визуализаций на дашборде. Для запросов пользователя, связанных с этими задачами, необходимо отправлять в чат краткий ответ:
- "Готово! Сделано! Выполнено! Получилось! Успешно!" – в случае успешного выполнения запроса
- Текст ошибки на понятном пользователю языке (н-р, "к сожалению, я не могу разместить на этом дашборде 100500 различных визуализаций") – в случае возникновения ошибки или невозможности выполнить поставленную задачу
*В дальнейшем планируется добавить модуль по изучению данных на дашборде – помимо кратких и шаблонных ответов такой модуль должен будет позволить вести осмысленную беседу чат-бота с пользователем по разрешенным.
Отправка данных
Из полученного из фронта и бэка объёма информации центральный модуль оставляет лишь часть необходимых данных для работы задействованного модуля:
Для нейропреобразований:
- Уникальные идентификаторы преобразуемых визуализаций
- Используемые поля из модели данных с их типами в разрезах, показателях, дополнительных секциях (ширина пузырька, разрезы в шапке) для каждой отдельной визуализации отдельным списком.
- Все поля из всех моделей данных отдельным списком (вне зависимости от того, используются ли они в визуализациях или нет).
- Запрос от пользователя
Для позиционирования виджетов:
- Уникальные идентификаторы используемых визуализаций и групп
- Размеры и положение визуализаций на странице проекта (параметры X, Y, Ш и В)
- Запрос от пользователя