Глава 5: Управление ботом

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

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

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

Проверка агента

Когда вы создаете чат-бота, который становится немного более продвинутым, вы легко столкнетесь с большим количеством намерений и сущностей. Возможно, вы даже работаете с командой в рамках вашего проекта Dialogflow — различные UX-дизайнеры работают над несколькими намерениями. Там, где работают люди, случаются ошибки. Это может стать проблемой при обучении вашей модели Dialogflow.

Распространенные ошибки, которые можно допустить в Dialogflow:

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

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

Щелкните пункт меню Валидация. Функция проверки агента включена по умолчанию. Если вы ее не найдете, вы можете включить переключатель Проверка агента в настройках Настройки ➤ Настройки ML.

Как только вы щелкнете Валидация в меню Dialogflow (и агент будет обучен), вы увидите результаты проверки (как показано на Рисунке 5-1).


Рисунок 5-1. Готовая проверка


Понимание результатов проверки

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

Результаты проверки предоставляют список предупреждений и ошибок, которые следует исправить, чтобы улучшить качество и производительность вашего агента. Он может находить проблемы на (глобальном) уровне агента, в намерениях или сущностях. Если у вашего агента есть информация или предупреждения, вы можете проигнорировать их и запустить своего агента.

Это только для информационных целей, но вы лишили бы себя качества агента, не используя эту функцию; по сути, это проверка агента Dialogflow «из коробки», бесплатно!

Проблемы могут представлять различные уровни серьезности. Только сообщения Info, Warning и Error отображаются на экране Валидация. Настройки Critical и Unspecified доступны в SDK (или на страницах конкретных намерений/сущностей). Все они описаны в Таблице 5-1.

Таблица 5-1. Различные уровни серьезности
Уровень Описание
INFO Агент не следует лучшим практикам.
WARNING Агент может вести себя не так, как ожидалось.
ERROR Агент может испытывать частичные сбои.
CRITICAL Агент может полностью отказать.
SEVERITY UNSPECIFIED Не указано. Это значение никогда не должно использоваться.

Рисунок 5-2 показывает некоторые примеры проверки.


Рисунок 5-2. Примеры проверки


В этом примере я выделяю следующие критерии:

  • Намерение Give_Your_Name показывает предупреждение о том, что мне нужно будет добавить больше обучающих фраз с разнообразными примерами для улучшения модели NLU.
  • MyFirstGame-Console-GetContext содержит сущность Dreamcast и SNES, которая не была определена в пользовательской сущности @product. Кроме того, ей также нужно больше обучающих фраз.

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

Примечание: Одновременно отображается не более 5000 проблем. Если у вас более 5000 проблем, вы можете не увидеть уменьшения счетчика до тех пор, пока не останется менее 5000.

Помимо экрана проверки, когда вы посещаете страницы списков намерений или сущностей, любые намерения или сущности с ошибками проверки показывают индикатор ошибки (! значок) рядом с именем.

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

Щелчок по этому индикатору показывает список ошибок для намерения или сущности. По умолчанию отображаются только ошибки с серьезностью CRITICAL или ERROR.

Проверка через SDK

Также возможно запустить проверку из вашего кода через SDK (ValidationResult). Это может быть удобно, если вы создаете свои собственные конвейеры CI/CD, и перед тем, как вывести вашего агента в производство, вы можете захотеть сначала запустить проверку агента.

Вот пример того, как вы могли бы реализовать это для Node.js.

Ответ ValidationResult может выглядеть как Листинг 5-1.

Листинг 5-1. Реализация Cloud Function

{
"validationErrors": [
 {
  "severity": "ERROR",
  "entries": [
   "projects/my-project/agent/intents/58b44b2d-4967-4a81-b017-12623dcd5d28/parameters/bf6fdf55-b862-4101-b5b1-36f1423629d0"
  ],
  "errorMessage": "Parameter 'test' has an empty value."
 },
 {
  "severity": "WARNING",
  "entries": [
   "projects/my-project/agent/intents/271e3808-3c91-4e6b-89e8-47951abcec8d"
  ],
  "errorMessage": "Intent 'app.current.update' does not have enough unique training phrases. Consider adding more different examples."
 },
 {
  "severity": "ERROR",
  "entries": [
   "projects/my-project/agent/intents/26e64b1b-eaa7-4ce2-be46-631a501fccbe/trainingPhrases/a650375e-083c-4bb5-9794-ba9453e51282",
   "projects/my-project/agent/intents/58b44b2d-4967-4a81-b017-12623dcd5d28/trainingPhrases/1d947780-22d3-4f80-8d7a-3f86efbf0be3"
  ],
  "errorMessage": "Multiple intents share training phrases which are too similar:\n - Intent 'app.notifications.open': training phrase 'open all notifications settings'\n - Intent 'app.current.notifications.open': training phrase 'open notifications settings'"
 }
]}

Как вы видели, Dialogflow предоставляет готовую функцию проверки и обзора агента. Она включена по умолчанию, и вы можете получить к ней доступ через консоль Dialogflow или через API.

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

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

Улучшение модели машинного обучения Dialogflow с помощью встроенного обучения

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

Выберите пункт меню Обучение в меню Dialogflow.

Когда вы открываете инструмент (см. Рисунок 5-3), он показывает историю разговоров в обратном хронологическом порядке (последнее высказывание первым).

Он покажет высказывание пользователя, количество запросов (шагов разговора в разговоре), количество раз, когда не было найдено совпадения, дату, когда произошел разговор, и кнопку обновления (вы будете использовать ее, когда переопределите процессы обучения для такого контента).


Рисунок 5-3. Встроенное обучение Dialogflow


Когда вы щелкаете строку в списке разговоров, он открывает разговор в представлении обучения, как показано на Рисунке 5-4. Представление обучения показывает список шагов разговора и предоставляет элементы управления для добавления этих данных к вашим обучающим данным.


Рисунок 5-4. Встроенное обучение Dialogflow, улучшение обнаружения


Это место, где вы можете сделать следующее:

  • Вы можете изменить намерение (или, если намерение не было сопоставлено, назначить намерение), чтобы в следующий раз он знал, какое намерение выбрать вместо этого.
  • Вы можете повысить рейтинг совпадения намерения, обучая модель Dialogflow тому, что обнаруженное намерение было правильным.
  • Вы можете понизить рейтинг совпадения намерения, обучая модель Dialogflow тому, что обнаруженное намерение было неправильным.
  • Вы можете удалить данные. Возможно, потому что это были фиктивные данные, и вы не хотите обучать свою модель на них.
  • Вы можете выбрать высказывание пользователя и аннотировать определенные слова, например, когда у вас есть высказывание пользователя: Я хочу заказать последнюю игру Star Wars Battlefront. Вы можете выбрать название Star Wars Battlefront и научить Dialogflow, что это на самом деле сущность @fps_games.

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

С помощью кнопки загрузки в правом верхнем углу экрана вы можете загружать разговоры в виде обычных текстовых файлов. Один файл .txt должен содержать каждую фразу высказывания пользователя в строке (разделенную символами новой строки). Возможно загрузить несколько (до 10) файлов .txt, или вы можете загрузить zip-архив с файлами .txt, если он не превышает 3 МБ.

Запросы не отправляются в API detect intent. Поэтому контексты не активируются, и никакие намерения не сопоставляются. В идеале файлы должны содержать только данные, полезные в качестве обучающих фраз. Порядок выражений конечного пользователя не важен.

Какие данные следует загружать? Подумайте о журналах разговоров; возможно, у вас есть журналы чатов между людьми или разговоры онлайн-поддержки клиентов с вопросами из электронной почты, форума или FAQ, в основном все, что релевантно для чат-бота. Возможно, вы отслеживаете социальные сети, такие как Twitter, чтобы увидеть, что спрашивают люди. Или, возможно, у вас есть аудиозаписи контакт-центра, которые вы можете преобразовать в текст через API Speech-to-Text в Google Cloud. Однако старайтесь избегать длинных, неразговорных высказываний пользователя. И старайтесь избегать вещей, которые не были сказаны конечными пользователями (например, ответы живых агентов).

Примечание: Инструмент обучения использует данные истории агента для загрузки разговоров, поэтому ведение журнала должно быть включено на панели настроек. Это включено по умолчанию, но работа с регулируемыми компаниями, такими как банки и страховые компании в Европе, может потребовать отключения этой функции.

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

Резюме

В этой главе объясняется, как вы можете просмотреть конфигурацию вашего агента Dialogflow ES (например, намерения и сущности), проверив вашего агента. С помощью этой готовой функции вы можете отслеживать качество вашего агента. Мы также рассмотрели, как вы можете запустить проверку через SDK; это может быть удобно, если вы создаете свои собственные конвейеры CI/CD.

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

Дополнительные материалы

Предыдущая глава    Следующая глава

Другие статьи по этой теме: