Глава 8: Создание многоязычного чат-бота
Dialogflow поддерживает множество языков; возможно создание многоязычных чат-ботов. При создании агента Dialogflow вам нужно выбрать язык по умолчанию, например, английский. Впоследствии вы можете добавить другие языки.
Эта глава предоставит вам обзор языков, которые поддерживает Dialogflow Essentials. Она покажет вам, как создать многоязычного виртуального агента. Будет объяснено, как выглядит экспорт многоязычного бота и как вы можете программно определять языки через API Dialogflow. Эта глава завершится использованием службы перевода для автоматического перевода ответов вашего бота на лету.
Языки агента
Существует две категории языков:
- Корневые языки: Это языки, такие как английский (en), которые не указывают локаль.
- Языки, специфичные для локали: Это языки, такие как английский-США (en-US), которые указывают локаль как конкретный регион или страну.
Вам следует в первую очередь проектировать вашего агента для многоязычности на корневом языке и настраивать его для языков, специфичных для локали, только по мере необходимости. Рисунки 8-1 и 8-2 покажут языки, поддерживаемые на момент написания.
Рисунок 8-1. Обзор всех языков и поддерживаемых функций, доступных в Dialogflow Essentials (часть 1)
Рисунок 8-2. Обзор всех языков и поддерживаемых функций, доступных в Dialogflow Essentials (часть 2)
Примечание: В качестве лучшей практики вам следует завершить работу над вашим агентом на языке по умолчанию перед добавлением дополнительных языков.
Создание многоязычного агента
Чтобы добавить язык, нажмите кнопку + рядом с существующими языками (маркеры, см. Рисунок 8-3). Это перенесет вас на вкладку Языки настроек агента. В качестве альтернативы вы можете перейти на панель Настройки Dialogflow и выбрать вкладку Языки.
Рисунок 8-3. Языковые маркеры для переключения языка агента
Выберите язык из выпадающего меню Выбрать дополнительный язык. (Вы можете прокручивать мышью более 20 различных языков; см. Рисунок 8-4.)
Рисунок 8-4. Выбор языков
Нажмите Сохранить.
Вы можете переключаться между языками, щелкая синие и серые языковые маркеры под именем агента.
Агент Dialogflow будет использовать все свои настройки совместно, но уникальными для языка являются обучающие фразы намерения, ответы намерения и записи сущностей. Их вам нужно будет локализовать, чтобы ваш многоязычный агент заработал.
Вы можете использовать симулятор, выбрав нужный язык перед тестированием ваших разговоров.
От выбора интеграции зависит, как языки поддерживаются и представляются пользователю, например:
- При создании бота для Google Assistant, Actions on Google возьмет язык Dialogflow и сможет развернуть действие Assistant на определенном языке для определенного региона.
- Встроенная интеграция Веб-демо поддерживает только английский язык, поэтому многоязычные агенты не поддерживаются, но встроенная интеграция Dialogflow Messenger поддерживает многоязычных агентов, если вы установите язык-код элемента HTML при интеграции фрагмента на ваш веб-сайт. С помощью серверного кодирования, например, вы можете создать переключатель, который представляет чат-бота на правильном языке на основе щелчка кнопки или IP-адреса.
- При создании собственной интеграции для веб-сайта или мобильного приложения вам нужно будет определить намерение через SDK. Вызовы detectIntent принимают код языка в качестве параметра как часть объекта TextInput QueryInput. Вы увидите пример позже в этой главе.
Примечание: Не смешивайте обучающие фразы на разных языках в одном агенте, как в следующем примере. Вы, скорее всего, повредите модель машинного обучения, сделав это.
Пользователь: Я хочу купить Xbox series X (английский)
Агент: Сколько контроллеров вам нужно?
Пользователь: mujhe 2 kantrolar chaahie (хинди)
Агент: Хорошо, я закажу Xbox series X с двумя контроллерами.
Экспорт многоязычного агента Dialogflow ES
При экспорте агента Dialogflow через панель настроек (Рисунок 8-5) вы получите zip-файл. Этот zip-файл будет содержать JSON-файлы намерений и сущностей.
Рисунок 8-5. Экспорт zip-архива для предварительного просмотра языковых файлов в вашем редакторе
Для намерений настройки намерения, а также ответы находятся в файле x_Intent.json.
Обучающие фразы для каждого конкретного языка находятся в файле x_Intent_usersays_
- intents/Default Welcome Intent.json
- intents/Default Welcome Intent_usersays_en.json
- intents/Default Welcome Intent_usersays_nl.json
Для сущностей настройки сущности находятся в JSON-файле сущности. Ключи и значения записи на их конкретном языке находятся в файле x_entries_
- entities/product_color.json
- entities/products_color_entries_en.json
- entities/products_color_entries_nl.json
Совет: Если вы хорошо владеете редактором кода и вам удобно читать JSON-файлы, это может сэкономить вам некоторое время на перевод агентов Dialogflow через редактор кода.
Обнаружение многоязычных намерений через SDK
Если вы хотите встроить свой разговорный ИИ в пользовательскую веб-интеграцию (см. Главу 11), полезно знать, что вы можете установить поле languageCode в вызове detectIntent при определении текстового ввода в queryInput:
const responses = await sessionClient.detectIntent({
queryInput: {
text: {
// Запрос для отправки агенту dialogflow
text: 'hello',
// Язык, используемый клиентом (en-US)
languageCode: 'en-US',
},
},
});
Когда Dialogflow получает запрос detectIntent, и язык не был передан, Dialogflow обрабатывает запрос, используя язык по умолчанию.
Когда Dialogflow получает запрос detectIntent, который не предоставляет язык, поддерживаемый агентом, применяются следующие правила:
- Когда запрос предоставляет язык, специфичный для локали, который агент не поддерживает, но связанный корневой язык агента поддерживается, Dialogflow обрабатывает запрос, используя корневой язык.
- Извлечение системных сущностей является исключением из предыдущего правила. Извлечение системных сущностей использует предоставленный язык, специфичный для локали, даже если агент не поддерживает язык, специфичный для локали.
Работа со службой перевода
Предположим, вы хотите использовать в Dialogflow другой язык, отличный от поддерживаемых языков Dialogflow. В этом случае, возможно, можно вручную создать решение, которое переводит каждое входящее высказывание пользователя на базовый язык перед обнаружением намерения с помощью Dialogflow. Обычно это работает в не слишком сложных диалогах, предполагая, что переведенные высказывания пользователя будут как-то похожи на обучающие фразы, на которых было обучено намерение. Ответы могут быть переведены вами непосредственно в консоли Dialogflow или, возможно, поступать из базы данных через выполнение.
Рисунок 8-6. Архитектура языковой службы реального времени
Чтобы создать подобное решение (см. архитектуру на Рисунке 8-6), вам нужно будет создать пользовательскую интеграцию. См. Главу 11, чтобы прочитать больше об этой теме. Если вы заинтересованы в создании и оптимизации ваших веб-перехватчиков для многоязычной поддержки, посмотрите Главу 10.
Резюме
Эта глава делится всей информацией о создании чат-бота, который поддерживает несколько языков. Мы рассмотрели структуру файлов экспорта многоязычного агента, как обнаруживать многоязычные намерения с помощью SDK и как вы можете интегрировать это со службой перевода.
Дополнительные материалы
- Документация Dialogflow по многоязычным чат-ботам
https://cloud.google.com/dialogflow/es/docs/agents-multilingual - Поддерживаемые языки Dialogflow
https://cloud.google.com/dialogflow/es/docs/reference/language
Другие статьи по этой теме:
- Практическое руководство по созданию агентов ИИ
- Выявление и масштабирование сценариев использования ИИ
- Агенты ИИ