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

1. Обзор

Последнее обновление: 7 августа 2023 г.

Что ты построишь

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

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

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

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

  • Облачный проект Google
  • Браузер, такой как Chrome

2. Приступаем к настройке

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

Включите API Dialogflow с помощью Cloud Console.

  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, и генерирует событие несоответствия.

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 и соответствующий обработчик повторного запроса, определенный для этого события. В разделе «Агент говорит» перечислены два альтернативных сообщения повторного запроса.

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

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

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

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

Что такое генеративная резервная функция?

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

Как это помогает?

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

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

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

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

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

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

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

  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. Перейдите на вкладку «Машинное обучение» , а затем на подвкладку «Генераторный искусственный интеллект» .

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

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

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

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

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

  • $conversation Разговор между агентом и пользователем, исключая самое последнее высказывание пользователя. Вы можете адаптировать префиксы хода (например: «Человек», «ИИ» или «Вы», «Агент») в текстовой подсказке.
  • $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. Выберите «Настройки Flow» и добавьте следующее описание (или похожее): 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

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

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

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 гостей» полностью соответствует ограничениям, которые мы наложили на количество гостей. Для дальнейшего обеспечения этого количество гостей представляет собой настраиваемую сущность 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 для целевого параметра, запрос отправляется в большую языковую модель для создания сгенерированного ответа. Обычные заранее прописанные ответы (в разделе «Говорит агент») игнорируются.

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

Это пользовательское текстовое приглашение, которое мы настроили в 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 , а затем на подвкладку «Генераторный искусственный интеллект» .
  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 License.