Центральный модуль (Фронт + Бэк + ML)

Центральная модель искусственного интеллекта FastBot, получающая текстовый запрос от пользователя и определяющая модуль, решающий поставленную задачу, используя обработку естественного языка. Является инструментом поддержки аналитиков и разработчиков.

Разработка на фронте и бэке

image.png

Необходимо создать модуль, представляющий собой чат-бота, имеющего доступ к данным пользователя, визуализаций и из модели данных.

Расположение:

Нижняя правая часть дашборда в конструкторе на одной вертикальной линии с кнопками "Настройки", "SQL-код", "Сохранить проект".

В закрытом состоянии представляет собой логотип FastBot. При нажатии пользователем на логотип должен открываться чат, уникальный для данного проекта и данного пользователя – каждому чату необходимо присваивать уникальный идентификатор исходя из этих двух критериев.

В верхней части открытого чата должно быть подписано его название – FastBot. При клике на название должна открываться справочная информация о чат-боте и его возможностях (ссылка).

*Альтернативный вариант – добавить кнопку "info" со всей доступной информацией о боте.

Данный модуль будет доступен только для ролей "Аналитик" и выше, поскольку имеет доступ к данным дашборда и может управлять созданием и изменением визуализаций. Для роли "Зритель" будет отсутствовать даже иконка бота. При переходе пользователя в режим просмотра данный модуль деактивируется – чат закрывается, а иконка становится некликабельной, хотя и остаётся в интерфейсе конструктора.

Внутри чат состоит из 4 элементов: сообщений бота, сообщений пользователя, поля ввода нового сообщения, плашек с датой.

Сообщения бота

Наибольшая часть задач бота связана с обработкой визуализаций на дашборде. В случае успешного выполнения запроса передаётся ответ из ML-модели в одно-два слова.  В случае возникновения ошибки возвращается её описание (также из ML-модели). 

Если запрос пользователя не направлен на изменение элемента дашборда, а содержит вопрос по данным, то бот возвращает ответ языковой модели в том виде, в котором он приходит на фронт.

При первом использовании бота данным пользователем (не в конкретном проекте, а в целом) – открытии чата нажатием на логотип – он отправляет следующее сообщение: "Приветствую! Я FastBot, Ваш интеллектуальный помощник в управлении дашбордом! Я могу помочь с обработкой визуализаций, изучением данных, их размещением в проекте и много чем ещё... Чтобы получить подробную информацию о моих возможностях – нажмите на моё имя в чате сверху."

При первом использовании бота данным пользователем в данном проекте в данный день он отправляет следующее сообщение: "Здравствуй, {Имя_Пользователя}! Чем я могу помочь тебе сегодня?".

*Слева от сообщения бота можно размещать его логотип.

Сообщения пользователя

Текстовые запросы от пользователя, отправленные через поле ввода. Каждый уникальный чат хранит всю историю сообщений пользователя за всё время использования данного чата.

*Справа от сообщения пользователя можно размещать нейтральный логотип  image.png либо фото пользователя из его профиля (когда и если будет добавлена такая возможность в панели администратора)

Поле ввода нового сообщения (отправка данных через бэкенд)

Текстовое поле, в которое пользователь может вводить любую комбинацию символов в неограниченном количестве.

В правой части поля ввода должна быть кнопка для отправки сообщения. При нажатии на эту кнопку текстовый запрос от пользователя попадает в секцию "Сообщения пользователя" в чате с ботом, а также происходит отправка следующей информации через бэкенд для ML-модели:

Информация о дате

При отправке сообщений пользователем или ботом также передаётся информация о дате и времени отправки. В чате ведётся группировка сообщений по дням: сообщения разбиваются на отдельные блоки с указанием даты отправки в формате "XX месяца" (например, 12 декабря, 8 сентября) в виде плашки над первым сообщением в этот день (как в Телеграме). Особый формат записи имеют текущий день ("Сегодня") и предшествующий ему ("Вчера").

Принцип работы

Чат-бот должен иметь доступ ко всем объектам на всех страницах* одного дашборда. Под доступом подразумевается возможность сбора информации, изменения параметров, создания новых объектов. 
*На разных страницах одного дашборда должна сохраняться общая для всего проекта история переписки. 

В качестве результата работы модели ИИ с бэкенда возвращается следующее:

Создание новой визуализации (new)

Если модель вернула кодовое слово new, то перед применением параметров из модели необходимо предварительно создать сам объект визуализации в координатах, указанных как отступ слева (X) и отступ сверху (Y). После создания вкладки новой визуализации заполняются данными.

Изменение имеющейся визуализации

Если модель вернула кодовое слово change, то новые визуализации не создаются. Параметры, переданные моделью, подставляются в существующие визуализации

Замена имеющейся визуализации

Если модель вернула кодовое слово replace, то должен выполняться следующий алгоритм:

  1. Удаляется первая визуализация из списка.
  2. Создаётся новая визуализация переданного из модели типа и размещается согласно переданным координатам X и Y.
  3. Новая визуализация заполняется данными из модели.

Алгоритм повторяется для всех преобразуемых визуализаций (с тегом replace)

ML-разработка

FastBot должен состоять из следующих модулей, решающих отдельные задачи:

Для каждой задачи существует отдельное ТЗ с описанием и ссылкой на центральный модуль (этот). Сам центральный модуль должен с помощью обработки естественного языка классифицировать задачу и выбрать модуль для её выполнения на основании текстового запроса от пользователя. Ключевыми словами, по которым возможно определить класс задачи, могут быть:

Наибольшая часть задач бота связана с обработкой визуализаций на дашборде. Для запросов пользователя, связанных с этими задачами, необходимо отправлять в чат краткий ответ:

*В дальнейшем планируется добавить модуль по изучению данных на дашборде – помимо кратких и шаблонных ответов такой модуль должен будет позволить вести осмысленную беседу чат-бота с пользователем по разрешенным.

Отправка данных

Из полученного из фронта и бэка объёма информации центральный модуль оставляет лишь часть необходимых данных для работы задействованного модуля:

Для нейропреобразований:

Для позиционирования виджетов:


Revision #2
Created 10 January 2025 07:51:52 by Артём
Updated 21 January 2025 05:40:24 by Артём