Настройка и создание многоязычных агентов

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

При создании агента вы указываете его основной язык.

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

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

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

Список поддерживаемых языков см. в разделе "Поддержка языков".

Note

Классические чат-боты поддерживают только один язык. Для получения дополнительной информации о преобразовании классического чат-бота в агента смотрите Upgrade to Copilot Studio unified authoring.

Добавление языков в агент

  1. Перейдите на страницу настроек агента и выберите языки.

  2. Выберите "Добавить язык".

  3. На панели Добавление языков выберите языки, которые нужно добавить в агент, и нажмите кнопку Добавить.

  4. Просмотрите список языков и закройте страницу «Настройки ».

Управление локализацией для многоязычного агента

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

Подготовьте локализованный контент

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

  1. Перейдите на страницу настроек вашего агента и выберите Языки.

  2. На странице «Языки » в списке вторичных языков выберите «Загрузить » для нужного вам языка.

  3. В панели Обновления локализаций выберите формат JSON или ResX, чтобы скачать текущий файл локализации для этого языка.

    Note

    Загруженный файл содержит последнюю версию локализации агента. Чтобы скачать предыдущие версии файла локализации, откройте решение агента.

  4. Откройте загруженный файл и замените строки основного языка соответствующим переведенным текстом.

  5. Вернитесь в панель локализаций обновления , выберите « Просмотр» и загрузите переведённый файл.

  6. Закройте панель локализаций обновления и страницу настроек .

Обновление локализованного контента

Если вы меняете основные языковые строки, необходимо также обновлять содержимое на вторичных языках. Этот процесс включает в себя как новое, так и измененное содержимое. Инкрементные изменения не переводятся автоматически. Вы должны скачать файл JSON или ResX на вторичном языке и обновить непереведённые строки с помощью предпочитаемого процесса локализации.

Следующий сценарий является типичным для рабочего процесса для переведенного содержимого. Ранее вы перевели свой основной язык (en-US) на дополнительный язык (fr-FR), а также добавили и изменили содержимое на основном языке. Когда вы скачаете файл локализации для второго языка, любые новые строки находятся на первом языке (en-US), а ранее переведённые строки остаются на вторичном языке (fr-FR). Однако ранее переведённые строки, чей исходный текст был изменён с момента последней загрузки файла локализации, всё равно отображаются в том виде, в каком они были переведены на вторичный язык. Поскольку идентификаторы строк не меняются, строки второго и основного могут выйти из синхронизации после изменений в основном языке. Убедитесь, что сравнение нового файла локализации с последней загрузкой версии — чтобы выявить изменения строк на первом языке — является частью процесса локализации.

Сделайте динамический контент из Adaptive Cards доступным для локализации

Файлы локализации не включают смешанные строки из Adaptive Cards. Если необходимо локализовать адаптивную карточку, где строка может включать как статический текст, так и переменные (динамическое содержимое), используйте следующее решение. Процедура показывает, как использовать узел Set text variable для хранения полной строки с статическим текстом и переменными в промежуточной переменной. Затем вы ссылаетесь только на промежуточную переменную в вашей адаптивной карте. Когда вы скачаете файл локализации для вашего агента, значение промежуточной переменной с статическим текстом и ссылками на переменную становится доступно для локализации в рамках действия setVariable .

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

  1. Добавьте узел Set variable value перед вашей Adaptive Card. Этот шаг создаёт представление YAML, которое можно обновить с помощью редактора кода для преобразования узла в узел Set text variable . Нельзя создавать узлы Set text variable напрямую с авторского холста.

  2. В узле значения переменной Set создайте новую переменную, но пока не устанавливайте её.

  3. Откройте редактор кода для вашей темы.

  4. В редакторе кода найдите часть, представляющую узел значения переменной Set , и замените kind: SetVariable на kind: SetTextVariable. Это изменение преобразует ваш узел значения переменной Set в узел Set text variable .

  5. Закройте редактор кода.

  6. Выберите нижнее поле узла Set text variable и введите полную строку с статическим текстом и переменными, которые хотите показать на вашей Adaptive Card. Вставьте переменную так же, как вставляете переменную в сообщение.

  7. Обновите свою адаптивную карту с ссылкой на эту новую переменную.

  8. Сохраните тему. Теперь вы можете скачать файл локализации и проверить, что он содержит динамический контент для ваших Adaptive Cards.

Узнайте больше в контенте Localize Adaptive Card.

Проверьте многоязычный агент

  1. Откройте тестовую панель.

  2. Выберите три точки (...) в верхней части тестовой панели и выберите нужный язык. Тестовая панель перезагружается, на этот раз используя выбранный язык. Авторский холст остаётся на основном языке, и вы не сможете сохранить изменения в теме, пока не переключитесь обратно на основной язык.

  3. Для тестирования агента введите сообщение на выбранном языке.

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

Заставьте агента перейти на другой язык

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

Чтобы изменить текущий язык агента, установите User.Languageсистемную переменную на один из вторичных языков вашего агента. Этот выбор мгновенно меняет язык, на котором говорит ваш агент.

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

Note

Эта функция доступна только для агентов с включенной генеративной оркестровкой .

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

Предупреждение

Этот динамический метод переключения языка несовместим с браузерным распознаванием языков. После того как тема, динамически обнаруживающая язык пользователя, устанавливает User.Language переменную, браузерное обнаружение языка перестаёт действовать для этого пользователя, даже если тема позже будет отключена или удалена. Если хотите экспериментировать или проверить оба подхода, используйте отдельный тест-агент. После тестирования динамического переключения языка необходимо очистить сохраняющееся состояние пользовательского языка, прежде чем пытаться проверить обнаружение языка через браузер.

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

  1. Убедитесь, что ваш агент настроен поддерживать все нужные языки.

  2. Создайте тему.

  3. Замените тип триггера по умолчанию для темы на «Получено сообщение».

  4. Добавьте подсказку к вашей теме:

    1. Выберите значок «Добавить» узла под узлом триггера.

    2. Выберите «Добавить инструмент>: Новое задание».

    3. В редакторе запросов введите представительное имя вашего запроса, например «Обнаружение языка».

    4. В панели инструкций введите «Определить, на каком языке написано это сообщение: ».

    5. Внизу панели «Инструкции » выберите « Добавить содержимого » и «Текст». Появляется окно с приглашением ввести имя и образец сообщения.

    6. Для имени введите «Сообщение». Для примерных данных введите «Сообщение от пользователя» и выберите Закрыть.

    7. В панели отклика Model переключите формат Output на JSON.

    8. Выберите Тест. Ваш запрос показывает буквальный JSON с одним свойством, идентифицирующим язык как английский.

      Скриншот запроса, настроенного на определение языка сообщения.

    9. Нажмите кнопку "Сохранить". На холсте появляется узел Prompt .

  5. Настройте узел Prompt :

    1. Для ввода выберите системную переменнуюActivity.Text (текст входящего сообщения).
    2. Для выходасоздайте новую переменную под названием DetectedLanguage.
  6. Ветви логики на основе обнаруженного языка:

    1. Добавьте условие под узлом Prompt .

    2. Основывайте условие на пользовательской переменной DetectedLanguage.structuredOutput.language, которая содержит имя обнаруженного языка.

    3. Добавьте ветку состояния для каждого языка, который нужно обнаружить.

    4. Под каждой ветвью добавьте узел значения переменной Set , чтобы установить User.Language системную переменную соответственно. Следующее изображение показывает тему с условием переключения между голландским и английским.

      Скриншот темы, которая обнаруживает и переключает язык агентов.

Восстановить обнаружение языка на основе браузера

Когда агент, настроенный на динамическое переключение языка , устанавливает системную User.Language переменную, выбранный язык сохраняется как переопределение для пользователя агента. Предпочитаемый язык пользователя определяется в следующем порядке приоритета:

  1. Языковые предпочтения явно устанавливаются пользователем и сохраняются как переопределение для этого пользователя (высший приоритет).
  2. Входящее сообщение от пользователя на языке, соответствующем одному из поддерживаемых агентом языков (Activity.Locale).
  3. Основной язык агента (запасной вариант).

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

  • Отправьте /debug clearstate агенту. Эта команда очищает языковое переопределяние из состояния пользователя.

Устранение неполадок многоязычного агента

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

Поведение многоязычного агента для языков, которые не настроены

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

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

Поведение многоязычного агента при отсутствии переводов

Если вы добавляете сообщения агенту на его основном языке, но не загружаете переводы новых сообщений, агент показывает непереведённые изменения на своём основном языке. Всегда убедитесь, что переводы up-to-date после внесения изменений в агента.

Файлы локализации не содержат строки смешанного типа из Adaptive Cards. Если вам нужно локализовать Adaptive Cards, где строка может содержать как статический текст, так и переменные (динамический контент), нужно использовать обходной путь. Узнайте, как хранить смешанную строку в текстовой переменной перед использованием в Адаптивной Карте.

Ошибки при публикации мультиязычного агента

Когда вы пытаетесь опубликовать многоязычный агент, вы можете увидеть сообщение об ошибке «Валидация для бота сработала» с исходным кодом ошибки ответа. SynonymsNotUnique Эта ошибка означает, что ваш файл локализации содержит либо дублирующиеся синонимы, либо синоним, соответствующий значению DisplayName . Обычно эта ошибка возникает, когда в узле содержится один Entity.Definition.'closedListItem' из следующих сценариев:

  • Один из элементов Synonyms не уникален.
  • Один из элементов Synonyms имеет то же значение, что и элемент DisplayName.

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

Чтобы исправить ошибку, просмотрите JSON или ResX файл для второго языка и выявите случаи, когда это может присутствовать.