Создание чат-бота с помощью Microsoft Bot Framework Composer и составных объектов

Откройте для себя возможности составных объектов LUIS с помощью Composer

Введение

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

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

  • Холст Дизайна
  • Конфигурация диалога
  • Собственный код
  • Истории машинного обучения

Bot Framework Composer относится к категории Конфигурация диалоговых окон.

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

Или, по крайней мере, дизайн, который можно импортировать в структуру чат-бота и выполнить.

Это позволяет быстро развертывать возможности чат-бота.

При использовании этого подхода часто возникают следующие проблемы:

  • Сложные потоки не могут быть размещены практически
  • Массивная избыточность
  • Точная программная настройка не всегда возможна
  • Отступление трудно реализовать
  • Вложенные меню и диалоговые узлы трудно зайти
  • Конечные пути часто приводят к резервному распространению



Что такое Bot Framework Composer

Bot Framework Composer — это инструмент с открытым исходным кодом, основанный на пакете SDK Bot Framework.

Ключевые аспекты включают в себя:

  • Холст визуального редактирования для потоков разговоров
  • В контекстном редактировании для понимания языка (NLU)
  • Инструменты для обучения, тестирования и управления компонентами понимания языка (NLU) и QnA
  • Генерация языка и система шаблонов
  • Готовый к использованию исполняемый файл среды выполнения бота

Интеграция Composer с LUIS позволяет использовать мощное понимание естественного языка в диалоговом дизайне. В Composer можно определить файл .lu, который можно локально развернуть из Composer в LUIS в облаке.

Файл .lu содержит в стиле Markdown простые текстовые определения для понятий LUIS. Различные концепции, выраженные в формате файла .lu.

Одним из таких понятий являются составные объекты.

Разложение сущности

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

Начнем с определения одного объекта, называемого

  • Подробности о поездке.

Внутри этой сущности мы определили три подсущности. Вы можете думать об этом как о вложенных объектах или подтипах. Определены три подтипа:

  • Временные рамки
  • Режим
  • Город

Отсюда у нас есть подтип для City:

  • Из города
  • В город

Глядя на это изображение, становится ясно, как можно установить иерархию и ввести структуру сущностей.



Объединение Composer с составными объектами

Сначала нам нужно создать два диалога:

  • Приветствие
  • Путешествовать

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

Отсюда мы можем создать второй диалоговый поток под названием Путешествие.

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

Эти примеры намерений определяются в диалоговом окне.

Примеры сущностей также определяются здесь через файл .lu.

Позже мы увидим, как при запуске бота через composer конфигурации NLU отправляются в LUIS в облаке.

Триггерные фразы (намерение: #Путешествие) можно ввести для диалогового окна Путешествие.

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

- I want to travel
- We are thinking of traveling
- We are planning a trip
- Our family is looking at traveling
- Shortly we will plan a vacation
- We are planning our annual trip

В LUIS после развертывания из Composer это выглядит следующим образом.

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

  • Сложный
  • Контекстуальный
  • Композитный

Ниже приведен файл .lu, используемый для определения объектов в Composer.

- # TravelInfo
- {TravelDetail={TimeFrame=2 august}} we need to travel from {TravelDetail={City={FromCity=berlin}}} to {TravelDetail={City={ToCity=paris}}} by {TravelDetail={Mode=train}}
- i would like to take a {TravelDetail={Mode=bus}} from {TravelDetail={City={FromCity=madrid}}} to {TravelDetail={City={ToCity=lisbon}}} {TravelDetail={timeframe=tomorrow}}
- in {TravelDetail={timeframe=two weeks}} time i must travel by {TravelDetail={Mode=train}} from {TravelDetail={City={FromCity=athens}}} to {TravelDetail={City={ToCity=berlin}}}
- {TravelDetail={timeframe=monday}} we need to take the {TravelDetail={Mode=train}} from {TravelDetail={City={FromCity=paris}}} to {TravelDetail={City={ToCity=rome}}}
- on {TravelDetail={timeframe=3 august}} i am leaving {TravelDetail={City={FromCity=paris}}} for {TravelDetail={City={ToCity=lisbon}}} by {TravelDetail={Mode=train}}
- {TravelDetail={timeframe=thursday}} i want to take a {TravelDetail={Mode=plane}} from {TravelDetail={City={FromCity=paris}}} to {TravelDetail={City={ToCity=amsterdam}}}
- composite TravelDetail = [timeframe, ToCity, FromCity, Mode]

Глядя на узел пользовательского ввода, подсказка от чат-бота определяется в Bot Asks, а на User вкладке Input ожидаемые ответы: определяется с помощью файла .lu.

На этом этапе также можно извлечь значения.

И, наконец, в разговоре можно использовать различные параметры, извлеченные из пользовательского ввода.

- So you want to go to ${dialog.ToCity} from ${dialog.FromCity} by ${dialog.Mode} on ${dialog.timeframe}?



Тестирование вашего бота

Чат-бот инициализируется нажатием синей кнопки Запустить бота в правом верхнем углу. После инициализации бота нажмите Проверить в эмуляторе.

Эмулятор Bot Framework — это настольное приложение, которое позволяет разработчикам ботов тестировать и отлаживать своих ботов локально или удаленно. Используя эмулятор, вы можете общаться со своим ботом и проверять сообщения, которые ваш бот отправляет и получает. Эмулятор отображает сообщения так, как они появляются в пользовательском интерфейсе веб-чата, и регистрирует запросы и ответы JSON, когда вы обмениваетесь сообщениями со своим ботом. Прежде чем развернуть бота в облаке, запустите его локально и протестируйте с помощью эмулятора. Вы можете протестировать своего бота с помощью эмулятора, даже если вы еще не создали его с помощью Azure Bot Service или не настроили для работы на любых каналах.

Эмулятор можно скачать здесь.

Из разговора выше видно, как объекты могут быть извлечены контекстуально и представлены обратно в качестве подтверждения. Это делает разговор очень естественным и человечным.

Из-за составного характера сущностей мы также можем извлечь города и т. д.

Результат взаимодействия с LUIS доступен для проверки в Bot Emulator. Это помогает при устранении неполадок, чтобы определить, связана ли проблема с результатами LUIS или Composer.

{
  "recognizerResult": {
    "alteredText": null,
    "entities": {
      "City": [
        "Bonn",
        "Berlin"
      ],
      "FromCity": [
        "Bonn"
      ],
      "Mode": [
        "train"
      ],
      "ToCity": [
        "Berlin"
      ],
      "TravelDetail": [
        "Thursday",
        "train",
        "Bonn",
        "Berlin"
      ],
      "timeframe": [
        "thursday"
      ]
    },
    "intents": {
      "TextInput_Response_USYSvV": {
        "score": 0.9555109
      }
    },
    "text": "On thursday we are taking the train from Bonn to Berlin"
  }
}

Из этого файла JSON видно, что сущность с именем TravelDetail имеет четыре значения:

  • Четверг
  • тренироваться
  • Бонн
  • Берлин

Города можно дополнительно разбить на:

  • Бонн
  • Берлин

И Т. Д.

Вывод

У Microsoft комплексный подход к чат-ботам в частности и AI Assistants в целом. Когда дело доходит до сред NLU, LUIS является мировым лидером в области типов сущностей и структур данных с вспомогательными инструментами.

Добавьте возможности Azure, чтобы объединить LUIS с Bot Framework и

  • родной код,
  • Композитор или
  • мощные виртуальные агенты,

и у вас есть мощная диалоговая среда ИИ.

Эта среда может быть дополнена когнитивными функциями Azure.

Подробнее здесь:





Cobus Greyling — Medium
В IBM Watson Assistant добавлена ​​новая функция под названием «Действия
. Эта новая функция позволяет пользователям создавать диалоги…cobusgreyling.medium.com»