Интеграция и настройка NLP

Начало работы с Dialogflow

Dialogflow — это платформа для обучения естественному языку, которая позволит вашему боту лучше понимать требования и желания пользователей. 

Сервис доступен по ссылке: https://dialogflow.cloud.google.com/#/login

В этой статье мы расскажем вам с чего начать работу и как создать свой первый проект в Dialogflow.

Создание проекта

Перед началом работы следует пройти регистрацию. Зарегистрироваться на сайте сервиса Dialogflow можно только при помощи аккаунта Google по кнопке:

image.png

После прохождения регистрации перед вами откроется рабочее пространство Dialogflow.

Основным понятием в работе с DF является Агент — это проект сервиса DF в котором будет создаваться, настраиваться и храниться база знаний вашего бота. Для начала следует создать своего первого Агента. Для этого нажмите на кнопку Create Agent в правом нижнем углу рабочей зоны или в левом меню DF.

Рисунок1.png

В открывшемся диалоговом окне следует отредактировать следующие поля:

Рисунок2.png

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

Автоматически в данном разделе всегда создаются намерения Default Fallback Intent и Default Welcome Intent. Их, как и в последующем созданные вами намерения, можно удалить одним из способов:

Рисунок3.png

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

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

Поздравляем, вы создали свой первый проект в Dialogflow!

Интеграция с Dialogflow

Для того, чтобы бот смог использовать базу знаний вашего проекта, необходимо произвести интеграцию сервиса Dialogflow с платформой Metabot24. Это делается с помощью уникального ключа, связывающего вашего бота и агента DF.

Получение уникального ключа

Для начала следует зайти в настройки созданного вами проекта при помощи нажатия на иконку настроек соответствующего Агента в левом меню DF.

Снимок экрана 2023-02-12 140845.png

Если вы еще не создавали свой проект на сервисе, можете узнать как это сделать в разделе Начало работы с Dialogflow.

В настройках Агента нажмите на ссылку в поле Project ID. Данная ссылка откроет перед вами окно Google Cloud — консоль настроек.

Снимок экрана 2023-02-12 140930.png

Если того потребует сервис — пройдите регистрацию.

Управлять настройками консоли может только тот Google  аккаунт, который является создателем агента в Dialogflow. В некоторых браузерах привязывается верхнеуровнево Google аккаунт в настройках для синхронизации. Если аккаунт в Dialogflow отличается от аккаунта в браузере, то перед входом в консоль необходимо сменить настройки браузера или открыть консоль в другом браузере без аккаунта.

В новом аккаунте в появившемся окне выбора страны выберите ближайшую страну СНГ — Казахстан. Это никак не повлияет на работу интеграции.

Далее откройте боковое меню нажатием на иконку в левом верхнем углу. В блоке More Products перейдите в раздел API & Services подраздел Credentials.

Снимок экрана 2023-02-12 141129.png

В открывшемся окне следует создать учетные данные. Для этого нажмите на кнопку Create Credentials и выберите Help me choose.

Снимок экрана 2023-02-12 142520.png

Далее в открывшемся окне следует выполнить следующие действия:

    1. В блоке Credential Type, необходимо указать какой API будет использоваться, выбрав Dialogflow API.

    2. Указать параметры: Application data и No, I'm using them.

    3. Нажать на кнопку NEXT.

изображение.png

    4. В блоке Service account details указать Название сервисного аккаунта латинскими буквами и нажать на кнопку Create and Continue.

изображение (1).png

    5. В блоке Grant this service account access to project указать роль в поле Role – Project – Owner.

    6. Нажать на кнопку Continue.

изображение (2).png

    7. В следующем диалоговом окне нажать кнопку DONE.

изображение (4).png

Теперь в разделе Service Accounts появился созданный нами аккаунт.

Для создания нового авторизационного ключа нажмите на иконку редактирования аккаунта.

Снимок экрана 2023-02-12 143948.png

В открывшемся окне перейдите в раздел Keys и выберете в выпадающем списке Add key пункт Create new key.

Снимок экрана 2023-02-12 144641.png

Выберите тип ключа JSON и создайте его кнопкой Create.

Снимок экрана 2023-02-12 144841.png

Браузер автоматически скачает файл с закрытым ключом, предложив его сохранить на диск.

Рекомендуем сохранить файл для дальнейшего копирования ключа на платформу.

В информационном сообщении вы получите уведомление об успешном создании и скачивании закрытого ключа.

Теперь файл с ключом можно открыть любым текстовым редактором и скопировать весь текст в буфер обмена.

Передача уникального ключа боту

Выберите бот на платформе Metabot24, который хотите связать с DF.

В разделе Настройки бота выберите пункт Интеграции. Затем нажмите на кнопку Новая привязка чтобы создать новую интеграцию.

Снимок экрана 2023-02-12 145836.png

В боте может быть создано больше 1 одной интеграции с агентами Dialoglow. Для работы с обоими одновременно необходимо указать у интеграции Код для обращений в боте.

Последним шагом заполните следующие параметры в открывшемся диалоговом окне:

Нажмите кнопку Создать.

image.png

После этого интеграция успешно создана и бот готов к обучению через Dialogflow.

Как проверить какой агент настроен

При наличии нескольких ботов в бизнесе и нескольких интеграций ДФ необходимо контролировать и проверять какие именно интеграции настроены.

Для этого заходим в раздел Интеграции в выбранном боте и выбираем интеграцию с Dialogflow. В авторотационном ключе будет указано id проекта.

Снимок экрана 2024-06-25 145131.png

Сверяем его с id проекта в настройках агента Dialogflow.

Снимок экрана 2024-06-25 145239.png

Подключение нескольких интеграций

При использовании Dialogflow с контекстами, возникла необходимость в создании ботов с использованием нескольких агентов Dialogflow, для этого есть возможность настраивать несколько интеграций.

Одновременное использование нескольких предварительно обученных нейронных сетей будет полезно для тех кому необходимо:

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

Настройка нескольких интеграций

Подключение нескольких интеграций Dialogflow производится в разделе главного меню Настройки бота в подразделе Интеграции.

В сервисе Dialogflow должно быть создано несколько Агентов, минимум 2 и настроены учетные данные в разделе API & Services в подразделе Credentials.

Далее необходимо создать интеграции с указанием следующих параметров:

image.png

В списке Интеграции с ботом, интеграция по умолчанию отмечена серым цветом под ID интеграции. 

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

Снимок экрана 2024-07-10 131416.png

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

С NLP интеграциями так же можно работать с помощью методов JS. Все методы и их описание можно посмотреть в Справочнике по функциям JS

Dialogflow: Small talk

Ваш бот может научиться поддерживать светскую беседу без дополнительного развития и отвечать предопределенными фразами. Для этого в Dialogflow существует форма Small talk, которую можно использовать, чтобы настроить ответы на самые популярные запросы.

Перед прочтением рекомендуем ознакомиться с уроком по Созданию бота с поддержкой NLP

Для того чтобы бот отвечал на обращение пользователя не описанные в намерениях, необходимо создать скрипт Живой разговор:

image.png

Для того чтобы вывести Small Talk ответ бота по распознанному NLP Action, в скрипт нужно добавить команду Отправить текст и в поле Текст указать {{ $nlpLastReponseText }}. Таким образом бот пришлет пользователю сообщение с ответом, полученным от DialogFlow Small Talk.

В блоке Меню необходимо добавить пункт меню Повторяем, применяя следующие параметры:

image.png

Именно для того, чтобы логика распознавания намерения вначале проверялась в базе знаний NLP, мы установили у пункта меню опцию Скрыть весь пункт меню. Таким образом, меню существует в логике, но не видно на экране. 

В Dialogflow нужно включить функцию Живой разговор, где в свою очередь его тоже можно обучить. Для этого нужно перейти в раздел Small talk, активировав параметр Enable.

image.png

Ниже в разделе Small Talk Customization Progress нужно настроить ответы на возможные фразы и вопросы от пользователей по тематикам. Порядковое перечисление строк будет означать, что у бота на данный ответ может быть использован один из выбранных вариантов ответа.

image.png

Если вы захотите добавить в ответе абзацное разделение, то нажмите Shift + Enter

Обучение бота

Чтобы обучить бота отвечать на вопросы клиентов, следуйте инструкции ниже.

Создайте скрипт с NLP распознаванием

В свойствах скрипта с подсказкой, как задать вопрос, должны быть настроены следующие параметры: 

 

image.png

В редакторе скрипта нужно добавить текст, призывающий задать вопрос, а в меню добавить скрытый пункт. Этот пункт не заведет пользователя в тупиковый сценарий, а будет слушать ввод. Если сделать скрипт без меню, то при вводе текста внутри этого скрипта, бот сбросит диалог, а не приведет в нужный ответ.

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

image.png

Создайте скрипты-NLP намерения

Выполнение данных скрипта подразумевают реакцию на вопрос пользователя, распознанный DF .

Главным условием работы данных скриптов является установка значения в поле NLP Намерение. Когда намерение в Dialogflow найдено, оно ищется по базе скриптов и сравнивается со значениями полей NLP Намерение. Если найдено полное совпадение, то скрипт с совпадающим значением вступает в работу. 

NLP намерение лучше называть по аналогии с названием скрипта, но без пробела. Например для скрипта "Заказать услугу" намерение лучше назвать "заказать_услугу".

image.png

Рекомендуем также прописывать нумерацию намерений, чтобы легче работать с базой. Например: 01_заказать консультацию.

Скрипт простого ответа на вопрос должен содержать команду с выводом атрибута {{$nlpLastResponseText}}. Данный атрибут будет возвращен DF после распознавания вопроса и содержать ответ на вопрос указанный в намерении DF.

 

Для исправной работы в поле NLP Намерение скрипта следует указать .*, чтобы в данный скрипт попадали все распознанные намерения не относящиеся к другим скриптам.

image.png

Отдельные скрипты-ответы в поле NLP Намерение должны содержать намерение соответствующее названию скрипта и могут содержать одну или несколько команд.

В вашем боте может быть множество скриптов намерений и создаются они все по аналогии.

Некорректный ввод

Скрипт, который будет выполняться в том случае, если пользователь ввел вопрос/намерение или фразу не заложенные в базе знаний вашего бота.

В свойствах данного скрипта следует установить тип Fallback:

Снимок экрана 2023-08-28 132010.png

Далее в редакторе скрипта добавьте команду Отправить текст. В данной команде необходимо сообщить пользователю, что его запрос не распознан и порекомендовать его перефразировать, например, "Извините не понял. Сформулируйте свой вопрос по-другому."

 

Последним этапом добавьте команду Повторить вопрос.

Создание намерений в Dialogflow

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

Для работы нам понадобится сервис Dialogflow.

Перед тем как приступать к созданию намерений пройдите уроки Начало работы с Dialogflow и Интеграция с Dialogflow

В привязанном к вашему боту агенту мы будем создавать намерения, с помощью которых бот сможет распознавать текстовые запросы пользователя и подбирать правильные ответы из базы знаний. По кнопке Create Intent создаем новое намерение.

Снимок экрана 2023-02-13 141817.png

Для каждого скрипта с NLP намерением в боте создаем свое намерение DF с идентичным наименованием.

Внимание! При обучении бота, чем больше вы введете однородных по смыслу запросов и синонимов ключевых слов, тем более точнее ваш бот будет понимать ваших пользователей.

В раздел Training phrases надо добавить различные варианты на тему того, что могут написать пользователи. Например для намерения вызова оператора:

Снимок экрана 2023-02-13 142411.png

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

Применение вариантов с перестановкой слов приветствуется. Знаки вопроса и прочие знаки препинания здесь прописывать не нужно.

Для намерений с однозначным ответом в поле Responses добавьте текстовый ответ. Он и будет выводиться в атрибут nlpLastResponseText.

image.png

В процессе обучения бота нужно проверять правильность вводимых значений. Для этого, в поле Try it now необходимо указать один из введенных вариантов обращения и система должна предоставить ссылку на нужное намерение.

Снимок экрана 2023-02-13 142648.png

После ввода всех вариантов возможных обращений необходимо сохранить намерение, нажав на кнопку Save.

 

Таким же образом создайте остальные намерения для вашего бота.