Autobot Instructions: Difference between revisions

From Bloomex Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 5: Line 5:
Операторы должны быть онлайн 24/7 и почти всегда отвечают на однотипные вопросы. Поэтому было принято решение создать комплекс ПО, позволяющий перехватывать из чатов поддержки вопросы и перенаправлять их в простейший ИИ для генерации ответов.
Операторы должны быть онлайн 24/7 и почти всегда отвечают на однотипные вопросы. Поэтому было принято решение создать комплекс ПО, позволяющий перехватывать из чатов поддержки вопросы и перенаправлять их в простейший ИИ для генерации ответов.


ИИ создан на базе IBM Watson и в данном документе не описывается. Необходимым и достаточным условием для его интеграции в комплекс ПО является наличие точки доступа (эндпойнта), при отравлении на которую сообщения определенного формата ИИ формирует и отправляет в ответ сообщение, пригодное для помещения в чат, как ответа оператора. Точку доступа и валидность ответа обеспечивает программа на языке Python.
ИИ создан на базе IBM Watson и в данном документе не описывается. Необходимым и достаточным условием для его интеграции в комплекс ПО является наличие точки доступа (эндпойнта), при отравлении на которую сообщения определенного формата ИИ формирует и отправляет в ответ сообщение, пригодное для помещения в чат, как ответа оператора.  
 
Точку доступа и валидность ответа обеспечивает программа на языке Python.
 
При невозможности ответа (трудный вопрос, нецензурная лексика, ключевые слова типа «возврат денег», просьба вызвать оператора) ИИ создает и отправляет ответ со специальным признаком «отдать чат оператору».
При невозможности ответа (трудный вопрос, нецензурная лексика, ключевые слова типа «возврат денег», просьба вызвать оператора) ИИ создает и отправляет ответ со специальным признаком «отдать чат оператору».
Таким образом, алгоритм работы связующей части ПО, реализующей объединение всех фреймворков (связующее ПО получило название «Автобот» в отличие от «Чатбота» - бот действует автоматически), выглядит так:
Таким образом, алгоритм работы связующей части ПО, реализующей объединение всех фреймворков (связующее ПО получило название «Автобот» в отличие от «Чатбота» - бот действует автоматически), выглядит так:
1. При создании нового чата пользователем сайта, или при написании им сообщения основной фреймворк LHC должен отправить на входной эндпойнт Автобота сообщение, несущее исчерпывающую информацию о создании сообщения или изменении состояния чата.  
 
(Информация для разработчиков: для уменьшения дополнительной нагрузки на основной чат необходимо
# При создании нового чата пользователем сайта, или при написании им сообщения основной фреймворк LHC должен отправить на входной эндпойнт Автобота сообщение, несущее исчерпывающую информацию о создании сообщения или изменении состояния чата.
# Автобот при получении сообщения помещает его во входную очередь(1) для последующей обработки. Причины применения очереди — надо вынести обработку в асинхронный поток для сокращения до минимума времени ответа основному чату
# Обработчик (консьюмер) очереди(1) анализирует сообщение (валидация, проверка классов). При необходимости создает объект для помещения в сокет (нужды фронтенда). По окончании предварительной обработки проверяется наличие динамической очереди(2) (топика). При отсутствии очередь создается и в нее помещается валидное сообщение. Динамическая очередь(2) имеет префикс, совпадающий с id чата. Разбивка на динамические очереди очень важна, так как сообщения должны обрабатываться чатботом строго последовательно в пределах чата, но сообщения из разных чатов не должны блокировать друг друга. (Информация для разработчиков — при удалении чата оператором реализовано удаление динамической очереди. Риск неправильного удаления ничтожен и компенсируется возможностью повторного создания очереди).
# Для каждой динамической очереди(2) создается свой консьюмер, связанный с ней именной точкой обмена (эксчейндж). Данные сущности являются связью брокера rabbitMQ и Автобота. Собственно брокер с версии 4 является неотъемлемой частью Автобота. Консьюмер ожидает посылки сообщения из очереди (push). При получении сообщения формирует запрос в ИИ Watson и ожидает ответа. При получении ответа или истечению времени ожидания консьюмер закрывает соединение с именованной очередью(2) и вызывает валидатор контракта (существует контракт между Автоботом и Чатботом — наличие и содержание необходимых полей, наличие дополнительных полей, расшифровка значений информационных флагов). При отрицательной валидации вызывается «Dummy Bot» — класс Автобота, формирующий один стандартный ответ типа «Оставайтесь в чате, мы вызываем оператора» или что-то подобное и устанавливающий флаг статуса ответа «alarm» для скорейшего вызова оператора.
# При положительной валидации консьюмер динамической очереди(2) отправляет на внутренний эндпойнт запрос, фактически содержащий ответ ИИ. При отрицательной — заглушку от Dummy Bot. Таком образом, на эндпойнт всегда приходит валидный ответ. Класс обработки запроса помещает ответ в общую очередь(3) ответов бота. Это необходимо для освобождения консьюмера, который «держит» эндпойнт ИИ. В момент удержания ИИ не может принимать новые сообщения (для строго последовательной обработки сообщений).
# Обработчик общей очереди(3) ответов бота либо помещает сообщения в базу LHC и обновляет окно чата (принудительно) или дополнительно вызывает оператора или вызывает оператора без помещения сообщения. Дополнительно отправляет уведомления в сокет (нужды фронта) и помещает дословный ответ бота в любом случае в специальную таблицу, недоступную для LHC, которая позволит увидеть история ответов бота даже пр принудительном удалении чата оператором.
# Сваггер имеет кроме указанных эндпойнотов еще те, которые потребны для нужд фронта (общим счетом около 10-ти). Работа фронта не рассматривается.

Revision as of 12:45, 20 May 2024

Описание

Для обратной связи пользователей сайтов группы Blooxex©K применяется свободный фреймворк LivehelperChat (далее LHC). Он по умолчанию интегрирован в заглавную страницу сайта продаж и опционально в остальные страницы

Операторы должны быть онлайн 24/7 и почти всегда отвечают на однотипные вопросы. Поэтому было принято решение создать комплекс ПО, позволяющий перехватывать из чатов поддержки вопросы и перенаправлять их в простейший ИИ для генерации ответов.

ИИ создан на базе IBM Watson и в данном документе не описывается. Необходимым и достаточным условием для его интеграции в комплекс ПО является наличие точки доступа (эндпойнта), при отравлении на которую сообщения определенного формата ИИ формирует и отправляет в ответ сообщение, пригодное для помещения в чат, как ответа оператора.

Точку доступа и валидность ответа обеспечивает программа на языке Python.

При невозможности ответа (трудный вопрос, нецензурная лексика, ключевые слова типа «возврат денег», просьба вызвать оператора) ИИ создает и отправляет ответ со специальным признаком «отдать чат оператору».

Таким образом, алгоритм работы связующей части ПО, реализующей объединение всех фреймворков (связующее ПО получило название «Автобот» в отличие от «Чатбота» - бот действует автоматически), выглядит так:

  1. При создании нового чата пользователем сайта, или при написании им сообщения основной фреймворк LHC должен отправить на входной эндпойнт Автобота сообщение, несущее исчерпывающую информацию о создании сообщения или изменении состояния чата.
  2. Автобот при получении сообщения помещает его во входную очередь(1) для последующей обработки. Причины применения очереди — надо вынести обработку в асинхронный поток для сокращения до минимума времени ответа основному чату
  3. Обработчик (консьюмер) очереди(1) анализирует сообщение (валидация, проверка классов). При необходимости создает объект для помещения в сокет (нужды фронтенда). По окончании предварительной обработки проверяется наличие динамической очереди(2) (топика). При отсутствии очередь создается и в нее помещается валидное сообщение. Динамическая очередь(2) имеет префикс, совпадающий с id чата. Разбивка на динамические очереди очень важна, так как сообщения должны обрабатываться чатботом строго последовательно в пределах чата, но сообщения из разных чатов не должны блокировать друг друга. (Информация для разработчиков — при удалении чата оператором реализовано удаление динамической очереди. Риск неправильного удаления ничтожен и компенсируется возможностью повторного создания очереди).
  4. Для каждой динамической очереди(2) создается свой консьюмер, связанный с ней именной точкой обмена (эксчейндж). Данные сущности являются связью брокера rabbitMQ и Автобота. Собственно брокер с версии 4 является неотъемлемой частью Автобота. Консьюмер ожидает посылки сообщения из очереди (push). При получении сообщения формирует запрос в ИИ Watson и ожидает ответа. При получении ответа или истечению времени ожидания консьюмер закрывает соединение с именованной очередью(2) и вызывает валидатор контракта (существует контракт между Автоботом и Чатботом — наличие и содержание необходимых полей, наличие дополнительных полей, расшифровка значений информационных флагов). При отрицательной валидации вызывается «Dummy Bot» — класс Автобота, формирующий один стандартный ответ типа «Оставайтесь в чате, мы вызываем оператора» или что-то подобное и устанавливающий флаг статуса ответа «alarm» для скорейшего вызова оператора.
  5. При положительной валидации консьюмер динамической очереди(2) отправляет на внутренний эндпойнт запрос, фактически содержащий ответ ИИ. При отрицательной — заглушку от Dummy Bot. Таком образом, на эндпойнт всегда приходит валидный ответ. Класс обработки запроса помещает ответ в общую очередь(3) ответов бота. Это необходимо для освобождения консьюмера, который «держит» эндпойнт ИИ. В момент удержания ИИ не может принимать новые сообщения (для строго последовательной обработки сообщений).
  6. Обработчик общей очереди(3) ответов бота либо помещает сообщения в базу LHC и обновляет окно чата (принудительно) или дополнительно вызывает оператора или вызывает оператора без помещения сообщения. Дополнительно отправляет уведомления в сокет (нужды фронта) и помещает дословный ответ бота в любом случае в специальную таблицу, недоступную для LHC, которая позволит увидеть история ответов бота даже пр принудительном удалении чата оператором.
  7. Сваггер имеет кроме указанных эндпойнотов еще те, которые потребны для нужд фронта (общим счетом около 10-ти). Работа фронта не рассматривается.