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

1. Обзор

Последнее обновление: 07.08.2023

Что вы построите

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

Что вы узнаете

  • Как включить соответствующие API
  • Как Dialogflow автоматически заполняет значения параметров формы страницы на основе параметров Intent
  • Как настроить обработчики событий в Dialogflow
  • Как включить генеративный резервный вариант для обработчиков событий, не соответствующих условиям, используемых в потоках и при заполнении параметров.
  • Как настроить собственную текстовую подсказку для обработки как базовых, так и специфических ситуаций общения с агентом.
  • Как правильно писать описания намерений и параметров для генерации обработчиков повторных запросов для обязательных параметров (в дополнение к пользовательским запросам)
  • Как протестировать своего агента и смоделировать вопросы клиентов, которые запускают резервный вариант генеративного ответа.

Что вам понадобится

  • Проект Google Cloud
  • Браузер, например, Chrome

2. Настройка

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

Включите API Dialogflow с помощью облачной консоли.

  1. Откройте консоль Google Cloud в своем браузере.
  2. В консоли Google Cloud перейдите в библиотеку API , чтобы просмотреть API и сервисы, которые можно включить.
  3. Воспользуйтесь строкой поиска в верхней части страницы библиотеки API, найдите Dialogflow API , а затем щелкните по найденному сервису.
  4. Нажмите кнопку «Включить» , чтобы активировать API Dialogflow в вашем проекте Google Cloud.

Использование интерфейса командной строки gcloud (альтернативный вариант)

В качестве альтернативы, API можно включить с помощью следующей команды gcloud:

gcloud services enable dialogflow.googleapis.com

Если API был успешно активирован, вы должны увидеть сообщение, похожее на следующее:

Operation "operations/..." finished successfully.

Получите код

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

Чтобы скачать исходный код:

  1. Откройте новую вкладку браузера, перейдите в репозиторий агента и клонируйте его из командной строки.
  2. Исходный агент был экспортирован в виде JSON-пакета. Распакуйте файл, изучите настройки агента, ознакомьтесь с определением потока Liveaboards.json и, наконец, просмотрите страницы потока, интенты и сущности.

3. Создайте нового агента.

Откройте консоль Dialogflow

Для выполнения оставшихся шагов в этом практическом задании вы будете использовать консоль Dialogflow CX вместе со своим проектом Google Cloud.

  1. В браузере перейдите в консоль Dialogflow CX .
  2. Выберите проект Google Cloud, который хотите использовать, или создайте новый проект.
  3. В консоли Dialogflow CX вы должны увидеть список агентов.

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

Создайте нового агента Dialogflow CX.

  1. Чтобы восстановить агент, загруженный из репозитория GitHub, необходимо создать новый агент. В консоли Dialogflow CX нажмите «Создать новый агент» в правом верхнем углу страницы.

Create a brand new agent

  1. Выберите опцию «Создать собственного агента».

Choose the option

  1. Заполните форму, указав настройки агента ниже, и нажмите «Создать» , чтобы создать агента.
  • В качестве отображаемого имени выберите: Divebooker
  • В качестве местоположения выберите: us-central1
  • Выберите предпочитаемый часовой пояс
  • Выберите en - English в качестве языка по умолчанию.
  1. Dialogflow автоматически откроет для вас агента. Но это еще не все!

Восстановить агента Divebooker

  1. Вернитесь на страницу списка агентов, найдите только что созданного агента. Нажмите на соответствующую опцию. 78d2781c655810e7.png а затем нажмите кнопку «Восстановить» .
  2. Выберите опцию «Загрузить» , а затем перетащите или выберите ZIP-файл, который вы ранее скачали из репозитория GitHub.
  3. Нажмите кнопку «Восстановить» , чтобы импортировать предоставленного нами агента.

Click the Restore button to import the agent we have provided

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

4. Проверьте агента.

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

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

Неразрешенное намерение

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

Click Test Agent to open the Simulator

  1. Введите приветствие своему агенту, например, Hello , и спросите: what is a liveaboard? . Вопрос не соответствует ни одному из намерений, отображается стандартное сообщение типа «Извините, я не уверен, как помочь». Вы можете проверить, было ли вызвано встроенное событие sys.no-match-default, просмотрев исходный ответ в симуляторе.

Greet the agent and ask what a liveabord is

Прокрутите страницу почти до конца JSON-ответа. Обратите внимание, что при поиске соответствующего намерения Dialogflow обнаруживает, что это NO_MATCH, и генерирует событие no-match.

Check that sys.no-match-default event was raised by Dialogflow

  1. Перейдите на вкладку «Создание» и откройте стартовую страницу процесса Liveaboards .

Switch to the Build tab and open the Start Page of the Liveaboards flow.

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

  1. Щелкните обработчик события sys.no-match-default и прокрутите вниз до раздела «Ответы агента» . Dialogflow предоставляет список альтернативных ответов, но вы также можете определить различные типы ответных сообщений, чтобы предоставить конечному пользователю не только текстовые ответы.

Look at the pre-defined agent responses

Теперь перейдём к счастливому пути!

Счастливый путь

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

  1. На панели «Симулятор» нажмите значок «Сброс» , чтобы начать новый разговор с агентом.

Reset to start a new conversation

Consider changing to vertical view for a better UX

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

Test the happy path

  1. Откройте стартовую страницу и щелкните маршрут head.send.group.request . Прокрутите вниз до раздела «Переход» , который указывает Dialogflow, на какую страницу следует перейти при совпадении этого намерения.

Transition to Collect Further Info page

  1. Закройте определение маршрута и разверните страницу «Сбор дополнительной информации» . Обратите внимание на заполнение поля и список параметров.

Collect Further Info page

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

  1. Перейдите на вкладку «Управление» и в разделе «Намерения» щелкните намерение запроса группы head.send . Ознакомьтесь с предоставленными для этого намерения тренировочными фразами и аннотированными частями этих фраз.

Look at the training phrases provided for this intent and the annotated parts of the training phrases.

  1. Рассмотрим обучающую фразу «Мне нужно организовать поездку в Коста-Рику для 15 дайверов». «Коста-Рика» помечена как пункт назначения , а «15» — как количество гостей . При аннотировании частей обучающей фразы Dialogflow распознает, что эти части являются лишь примерами реальных значений, которые будут предоставлены конечными пользователями во время выполнения. Именно поэтому для исходного ввода «Вы предлагаете чартерные рейсы на Галапагосские острова?» Dialogflow извлек параметр пункта назначения из «Галапагосских островов».

Далее мы рассмотрим, что произойдет, если мы не предоставим агенту корректные данные при запросе на заполнение параметра формы.

Неверный ввод

  1. На панели «Симулятор» нажмите значок «Сброс» , чтобы начать новый разговор с агентом.
  2. Выразите намерение забронировать поездку группой, но на этот раз не говорите агенту, куда вы хотите поехать, а когда вас попросят указать пункт назначения, ответьте случайным образом, не указывая Коста-Рику, Галапагосские острова или Мексику.

Enter an invalid destination

  1. На вкладке «Управление» в разделе «Ресурсы» щелкните «Типы сущностей» . Обратите внимание на две вкладки: на вкладке «Система» вы найдете системные сущности, используемые в данный момент вашим агентом. На вкладке «Пользовательские» представлен список пользовательских сущностей, созданных для сопоставления данных, специфичных для этого агента.

Destination custom entity

  1. Щелкните по целевой сущности, чтобы узнать, каким значениям она соответствует. «Европа» отсутствует в списке и не является синонимом.
  2. На блок-схеме разверните страницу «Сбор дополнительной информации» , содержащую параметры формы. Щелкните параметр назначения .
  3. На панели параметров прокрутите вниз до раздела «Обработчики событий повторного запроса» , затем щелкните обработчик событий по умолчанию «Нет совпадения» .

Этот обработчик событий на уровне параметров специально предназначен для обработки недопустимого ввода данных конечным пользователем во время заполнения формы. Поскольку «Европа» является неожиданным вводом, было вызвано событие sys.no-match-default, и был вызван соответствующий обработчик повторного запроса, определенный для этого события. В разделе «Agent says» перечислены два альтернативных сообщения для повторного запроса.

Static alternative re-prompt messages when the end-user enters an invalid destination.

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

Достижения в области автоматического распознавания речи (ASR) означают, что мы почти всегда точно знаем, что сказали пользователи. Однако определить, что именно имели в виду пользователи, по-прежнему остается сложной задачей. Высказывания часто нельзя понять изолированно; их можно понять только в контексте. В следующем разделе этого практического занятия мы рассмотрим, как новейшие генеративные большие языковые модели (LLM) от Google могут помочь вернуть диалог в нужное русло и продвинуть разговор вперед.

5. Включить резервный вариант для генерации

Что представляет собой функция генеративного резервного варианта?

Функция генеративного резервного варианта — это функция Dialogflow CX, которая использует большие языковые модели (LLM) Google для генерации ответов виртуального агента.

Чем это помогает?

Между основными сценариями использования встречается ряд довольно распространенных запросов пользователей, таких как повторение сказанного агентом, если пользователь не понял, удержание линии по просьбе пользователя и краткое изложение разговора. В первом проведенном нами тесте агент не смог ответить на вопрос «Что такое дайвинг-сафари?», потому что мы не создали для этого намерение и не разработали сценарий обработки подобных общих вопросов, связанных с дайвингом и дайвинг-сафари.

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

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

Включите резервный вариант генерации для всего события отсутствия совпадения в потоке.

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

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

Мы начнем включать генеративный резервный вариант для всего потока Liveaboards , связанного с событием no-match-default.

  1. Разверните стартовую страницу процесса.
  2. В разделе «Обработчики событий» выберите sys.no-match-default .
  3. Установите флажок «Включить резервный вариант генеративного ответа» в разделе «Ответы агента» , затем нажмите «Сохранить».

Check Enable generative fallback under Agent responses

Save to enable generative fallback on the Liveaboards Start Page

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

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

  1. Откройте страницу «Сбор дополнительной информации» , содержащую параметры формы. Щелкните параметр «Количество гостей» .
  2. Перейдите к обработчику события "Нет соответствия" (прокрутите вниз до раздела " Обработчики событий повторного запроса" , затем щелкните обработчик события "Нет соответствия" по умолчанию ).

Navigate to the target No-match event handler (scroll down to the Reprompt event handlers section, then click the No-match default event handler)

  1. Установите флажок «Включить резервный вариант генерации» в разделе «Ответы агента».

Enable generative fallback on parameter number-of-guest

  1. Наконец, нажмите «Сохранить».
  2. Теперь повторите те же шаги, чтобы включить генеративный резервный вариант для адреса назначения и адреса электронной почты.

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

6. Настройте резервный вариант генеративного алгоритма.

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

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

Выберите уже заданную подсказку

  1. В консоли Dialogflow CX нажмите «Настройки агента».

Go to Agent Settings

  1. Перейдите на вкладку ML , а затем на подвкладку Generative AI .

Generative AI sub-tab

В стандартной комплектации функция включает два шаблона для ввода текста: шаблон по умолчанию (который не отображается) и шаблон- пример , который поможет вам написать собственные шаблоны.

  1. Выберите шаблон «Пример» и нажмите кнопку «Редактировать» в правой части выпадающего списка, чтобы просмотреть его.

Click the Edit button on the right side of the template dropdown to inspect it.

С помощью предопределенной подсказки виртуальный агент может обрабатывать основные диалоговые ситуации. Например:

  • Поприветствуйте пользователя и попрощайтесь с ним.
  • Повторите сказанное агентом на случай, если пользователь не понял.
  • Удерживайте линию, когда пользователь об этом попросит.
  • Подведите итоги разговора.

Давайте попробуем задать конкретный текстовый запрос для агента Divebooker!

7. Сформулируйте собственное задание.

  1. Скопируйте приведенный ниже текст и вставьте его в текстовое поле.
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can $route-descriptions

The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}

Then the human asked:
$last-user-utterance

You say:
  1. Выберите «Сохранить как новый шаблон» , чтобы сохранить новый запрос в качестве нового шаблона (выберите новое имя шаблона), и нажмите «Сохранить» в правом нижнем углу панели.

Create a custom text prompt specific for the agent and save as a new template

  1. Чтобы сделать созданное окно запроса активным, необходимо также сохранить настройки.

Save the new settings

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

Для создания эффективных вопросов следуйте следующим рекомендациям:

  1. Дайте четкое и краткое описание задачи, которую вы хотите поручить магистратуре. Ни больше, ни меньше. Описание должно быть полным и лаконичным.
  2. Кроме того, задание должно быть конкретным и четко сформулированным, избегая расплывчатых или двусмысленных формулировок.
  3. Разбейте сложные задачи на более мелкие, более управляемые части. Разделив задачу на более мелкие шаги, вы поможете модели сосредоточиться на одном деле за раз и снизите вероятность ошибок или путаницы.
  4. Для повышения качества ответов добавьте примеры в ваше задание. LLM учится на примерах в контексте, понимая, как отвечать.

При создании запроса, помимо описания контекста на естественном языке, можно также использовать следующие заполнители:

  • $conversation Разговор между агентом и пользователем, за исключением последнего высказывания пользователя. Вы можете изменить префиксы реплик (например: "Human", "AI" или "You", "Agent") в текстовом поле.
  • $last-user-utterance Последнее высказывание пользователя.
  • $flow-description Описание потока активного процесса.
  • $route-descriptions Описание активных намерений.

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

8. Добавьте описания потока и намерений.

Добавьте описание потока.

  1. Чтобы добавить описание к процессу Liveaboards , перейдите в настройки процесса, наведя курсор мыши на нужный процесс в разделе « Процессы» .

Access the flow settings by hovering your mouse over the flow in the Flows section.

  1. Выберите нужные параметры. 78d2781c655810e7.png кнопка.
  2. Выберите настройки потока и добавьте следующее описание (или аналогичное): search, find and book liveaboards .

Add a description to the Liveaboards flow

  1. Нажмите «Сохранить».

Добавьте описание намерения.

  1. Теперь добавим хорошее описание к интенту head.send.group.request . Перейдите на вкладку «Управление» , выберите «Интенты» в разделе «Ресурсы» и выберите интент head.send.group.request .
  2. Добавьте следующее описание: assist users with group or full charter reservations. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands

Обратите внимание, что в описании содержится важная информация, такая как минимальное и максимальное количество пассажиров, разрешенное на борту судна. Имейте это в виду!

  1. Нажмите «Сохранить».

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

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

9. Повторно проверьте своего агента.

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

Нажмите «Тестовый агент» , чтобы снова открыть симулятор.

Test agent again

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

Retest the agent and ask again what is a liveaboard

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

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

 Ask the agent if it can help you find a scuba diving course

That's right, at the moment we haven't designed the agent to assist with scuba courses. How does the agent know that? In the text prompt we have clearly outlined what the agent can and can't assist with. " At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts"

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

Retest the happy scenario and be creative in the dialogue

Retest the happy scenario and be creative in the dialogue

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

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

К сожалению, в разговоре могут возникнуть непредвиденные ситуации. Давайте проведём другой тест: на этот раз, когда вас спросят о количестве гостей, скажите число больше 15.

Provide a number of guests greater than 15

Provide a number of guests greater than 15

Здесь следует отметить несколько моментов:

  1. Почему число 20 не является допустимым? Потому что в описании намерения мы установили ограничение на количество гостей: « Агент собирает такую ​​информацию, как период отправления, пункт назначения, количество гостей (мин. 4, макс. 15 человек), контактные данные». Генеративный ответ, который вернул LLM: «Извините, мы можем помочь только с групповыми бронированиями до 15 гостей», полностью соответствует установленным нами ограничениям на количество гостей. Для дальнейшего подтверждения этого, number-of-guests — это пользовательская сущность RegExp, которая соответствует только числам в диапазоне от 4 до 15.
  2. Разговор продолжается, потому что в итоге пользователь по-прежнему хочет получить предложение на 15 дайверов. Такое часто случается в непринужденных беседах, мы довольно часто меняем свое мнение! Обратите внимание, как агент ведет себя конструктивно и мягко направляет пользователя обратно к успешному варианту.

Разработка диалога предполагает создание сценария для одной половины диалога, надеясь, что он будет достаточно надежным, чтобы любой пользователь мог вмешаться и выполнить другую половину. При проектировании с учетом «длинного хвоста» (контекста диалога, который может возникнуть на каждом этапе), разработчикам необходимо сосредоточиться на том, что пользователь может сказать на каждом шаге диалога, чтобы определить маршруты, обработчики и параметры. Именно поэтому мы добавили функцию генеративного резервного варианта в Dialogflow CX: это позволяет разработчикам сосредоточиться на принципах проектирования диалога, а не на деталях реализации, чтобы обеспечить пользователям надежный диалоговый опыт.

Давайте проведём ещё один тест, на этот раз снова бросим вызов боту, предложив ему место, которого нет в списке доступных направлений, например, Мальдивы. Затем мы быстро взглянем на то, что происходит за кулисами.

Challenge the bot again with a place which is not in the list of available destinations like the Maldives

Обратите внимание, что, поскольку мы также включили резервный генеративный механизм для события no-match для целевого параметра, запрос отправляется в большую языковую модель для генерации сгенерированного ответа. Обычные предписанные ответы (в разделе «Agent says») игнорируются.

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

Это настраиваемый текстовый запрос в Dialogflow, где заполнители выделены жирным шрифтом:

You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can $route-descriptions

The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}

Then the human asked:
$last-user-utterance

You say:

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

llm_input:
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help search, find and book liveaboards.

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can assist users who are looking for a group reservation or a full charter. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands.

The conversation between the human and you so far was:
Human: Hi, my name's Alessia
AI Hi Alessia, what can I help you with today?
Human: Can you help me find a nice boat for myself and my family?
AI To assist you with that I need to collect the details of your travel and then we'll get back to you with an offer shortly.
Where would you like to go? We can organize a charter in Costa Rica, Galapagos Islands and several locations around Mexico

Then the human asked:
The kids want to go to the Maldives

llm_output:
You say:
I'm sorry Alessia, we can only help you with liveaboards in Costa Rica, Galapagos Islands and several locations around Mexico.

Аналогично ранее проведенному тесту, ответ, отправляемый пользователю, генерируется моделью и основан на информации, предоставленной нами в описании намерения: « Пункт назначения должен быть одним из следующих в Тихом океане: Коста-Рика, Мексика, Галапагосские острова ».

Изменить список запрещенных фраз

Функция генеративного резервного варианта может быть настроена несколькими способами:

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

До сих пор мы рассматривали первые два способа. Давайте изучим третий.

  1. В настройках агента перейдите на вкладку ML , а затем на подвкладку Generative AI .
  2. В раздел «Запрещенные фразы» добавьте в список следующие предложения:
  3. Dangerous country
  4. Hateful place
  5. Medical assistance
  6. Нажмите « Сохранить ».
  7. Нажмите значок «Сброс» и повторите последний сценарий. Вместо предложения «Прекрасное место для дайвинга по всему миру» введите одну из запрещенных фраз.

Test one of the banned phrases

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

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

10. Поздравляем!

Отлично справились с лабораторной работой! Пора отдохнуть!

Cbo Chill

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

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

Не стесняйтесь тестировать другие ситуации для общения и изучать другие доступные функции Dialogflow CX и генеративного ИИ .

Уборка

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

  • Перейдите в консоль Dialogflow CX и удалите все созданные вами агенты.
  • В консоли Google Cloud перейдите на страницу API и сервисов и отключите API Dialogflow.

Дополнительная информация

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

Лицензия

Данная работа распространяется под лицензией Creative Commons Attribution 2.0 Generic.