Глава 9: Оркестрация нескольких под-чат-ботов из одного интерфейса чата

При создании чат-бота с помощью Dialogflow вы можете заметить, что в какой-то момент вы достигнете точки, когда ваш чат-бот будет работать хуже и станет сложным в обслуживании. Если у вас 1500 намерений в одном агенте, скорее всего, у вас будут намерения с довольно похожими обучающими фразами. Способ решить эту проблему — на панели настроек Dialogflow, на вкладке Настройки ML, изменить порог машинного обучения для оценки уверенности. Если возвращаемое значение меньше порогового значения, то будет вызвано резервное намерение, или, если резервные намерения не определены, никакое намерение не будет активировано. Это может решить вашу проблему на тот момент, но что, если у вашего агента более 2000 намерений?

И как бы вы поддерживали это, особенно при работе с большими командами?

Представьте, что вы работаете на крупное предприятие, такое как банк. Чат-боту необходимо отвечать на вопросы по банковским счетам, ипотеке и общим банковским вопросам. Когда вы добавляете все эти намерения в одного агента Dialogflow, у вас, скорее всего, будут намерения, конфликтующие друг с другом. Фактически, в традиционном банке люди работают в командах. Есть команда, работающая над чат-ботами для банковских счетов против ипотеки и так далее. Эти команды не знают о существовании намерений Dialogflow друг друга.

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

Как и со всеми агентами Dialogflow, вы можете создать только одного агента на проект Google Cloud, поэтому каждый под-агент и мега-агент будут связаны со своим собственным проектом Google Cloud. Функция small talk не будет работать, но вы можете включать статьи базы знаний для каждого под-агента. Мега-агент может иметь не более десяти под-агентов. Каждый агент Dialogflow может иметь 2000 намерений. Таким образом, это даст вам максимум 20 тыс. намерений.

Создание мега-агента

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

Представьте, что вы розничный продавец медиа (см. Рисунок 9-1). Ваш магазин продает видеоигры и фильмы. Пользователи чат-бота могут задавать вопросы о видеоиграх, на которые ответит чат-бот видеоигр, или о фильмах, на которые ответит чат-бот фильмов.


Рисунок 9-1. Архитектурный обзор того, как работает мега-агент

Чтобы настроить функцию мега-агента, вам нужно будет сначала иметь (или создать) «обычных» агентов Dialogflow, которые позже станут под-агентами.

  1. Создайте нового агента из выпадающего меню под логотипом. (См. Рисунок 9-2.)
  2. Вы дадите новому агенту имя, такое как mega-agent-media-retailer, а затем переключите переключатель Установить как мега-агент, затем нажмите сохранить.

Рисунок 9-2. Настройка мега-агента
  1. После того, как вы создали мега-агента, вы увидите новый пункт меню, Под-агенты, в вашем меню Dialogflow. Кроме того, если имя вашего мега-агента не занимает слишком много символов, вы увидите слово «MEGA» рядом с именем агента. (Обратите внимание на Рисунок 9-3.)

Рисунок 9-3. Как мега-агент отображается в меню

Когда вы впервые настраиваете мега-агента, вам нужно будет назначить под-агентов. Нажмите Нет под-агентов пока. Добавить первого.

  1. Вы попадете на новый экран (Рисунок 9-4), и сможете начать выбирать других агентов (из проектов Google Cloud), которые доступны вашей учетной записи пользователя Dialogflow (учетная запись Google). При этом вы также можете видеть имя проекта Google Cloud, выбирать среду Dialogflow или включать/исключать функцию базы знаний. Нажмите сохранить.

Рисунок 9-4. Определение под-агентов
  1. Мега-агенту потребуется доступ к каждому под-агенту, и мы можем сделать это через страницу ролей IAM в консоли Google Cloud (Рисунок 9-5), добавив адрес электронной почты сервисного аккаунта к каждому под-агенту. Вот как мы это делаем.
  2. Находясь в Dialogflow, убедитесь, что мега-агент все еще активен. Щелкните значок шестеренки настроек рядом с именем мега-агента, который откроет панель настроек. Когда вы прокрутите вниз на вкладке Общие, вы увидите идентификатор проекта, на который вы можете щелкнуть. Это откроет консоль Google Cloud. Перейдите на страницу IAM & Admin ➤ Сервисные аккаунты.
  3. Скопируйте или запишите адрес сервисного аккаунта мега-агента, например:

dialogflow-@mega-agent-media-retailer-.iam.gserviceaccount.com

Кстати, этому проекту потребуется включенный API Dialogflow. Если он правильный, он уже включен по умолчанию, но лучше перепроверить. Сначала выберите проект в синей верхней панели (Рисунок 9-6) и используйте форму поиска для поиска API Dialogflow. Когда вы увидите синюю ссылку Отключить API, вы будете знать, что он включен.


Рисунок 9-5. Найдите адрес сервисного аккаунта мега-агента в консоли Google Cloud

Рисунок 9-6. Убедитесь, что API Dialogflow включен
  1. Мы повторим шаг 4 для каждого под-агента, щелкнув идентификатор проекта в Dialogflow, чтобы открыть консоль Google Cloud для проектов под-агентов. Но теперь мы перейдем на страницу IAM & Admin ➤ IAM.
  2. Нажмите кнопку Добавить вверху.
  3. На следующем выдвижном экране вы можете вставить адрес электронной почты сервисного аккаунта (из шага 4, см. Рисунок 9-7) в качестве участника. В качестве роли используйте фильтр для поиска Клиент API Dialogflow. (Роли Владелец проекта, Редактор проекта или Администратор Dialogflow также подойдут, но из соображений безопасности всегда лучше предоставлять наименьшие/абсолютно необходимые разрешения вашим сервисным аккаунтам.)

Рисунок 9-7. Мы добавляем адрес сервисного аккаунта мега-агента к настройкам IAM каждого под-агента с ролью Клиент API Dialogflow

Повторите этот шаг для каждого под-агента и нажмите Сохранить.

  1. Отсюда вы можете протестировать своего мега-агента в симуляторе Dialogflow. Однако, если вы хотите интегрировать это в реальное приложение, вам, скорее всего, потребуется загрузить сервисный аккаунт на ваш локальный диск. (См. Главу 10.)
  2. Чтобы протестировать функцию мега-агента в Dialogflow, убедитесь, что вы все еще находитесь в проекте мега-агента. Вы можете начать вводить вопросы в симуляторе, например:
    • «Какая твоя любимая видеоигра?» Он вернет ответ от под-агента видеоигр.
    • «Какие фильмы выходят на DVD?» Он вернет ответ от под-агента фильмов.

Совет: Если вы хотите использовать функцию мега-агента при работе с интеграциями, такими как Google Assistant, вам нужно будет добавить роль IAM Агент службы Dialogflow к Сервисному аккаунту каждого агента (мега и под).

Использование SDK

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

Однако также возможно указать одного или нескольких под-агентов для запроса detect intent, установив поле subAgents в QueryParameters.

{
 "queryInput": {
  "text": {
   "text": "How can I open a new bank account?",
   "languageCode": "en-US"
  }
 },
 "queryParams": {
  "subAgents": [
   {"project": "projects/dialogflow-mortgages"},
   {"project": "projects/dialogflow-bankaccounts"}
  ]
 }
}

Как работает биллинг

Ценообразование основано на количестве намерений, использованных для выполнения запроса пользователя. Если запрос явно указывает под-агентов, это сумма всех намерений для предоставленных под-агентов. Если запрос не указывает под-агентов, это сумма всех намерений для под-агентов мега-агента. Таким образом, когда любой запрос делается с потенциалом для любого из N намерений в качестве совпадения, все N намерений должны быть проверены. Dialogflow должен искать по всем N этим намерениям, поэтому, когда N велико, цена будет увеличена.

Резюме

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

Исходный код доступен на GitHub через страницу продукта книги, расположенную по адресу www.apress.com/978-1-4842-7013-4.

Агенты, которые я использовал для этих примеров:

  • _mega-agent-media-retailer
  • _sub-agent: movies
  • sub-agent: dialogflowcookbook (видеоигры) (_dialogflow-agent)

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

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

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