Информированное принятие решений с использованием генераторов и хранилищ данных Dialogflow CX

1. Обзор

Последнее обновление: 10 октября 2023 г.

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

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

Какие функции вы будете использовать

Для завершения работы над кодом вам придется настроить и использовать три различные функции:

Агенты хранилища данных

Функция Vertex AI Conversation создает специальный агент Dialogflow, называемый агентом хранилища данных .

С помощью этой функции вы предоставляете URL-адрес веб-сайта, структурированные или неструктурированные данные (хранилища данных), затем Google анализирует ваш контент и создает виртуального агента, работающего на основе хранилищ данных и больших языковых моделей. Затем ваши клиенты и конечные пользователи смогут общаться с агентом и задавать вопросы о контенте. Информацию об этом типе агентов см. во введении к Vertex AI Conversation .

Генераторы

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

Генеративный запасной вариант

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

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

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

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

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

2. Включите API

Прежде чем вы сможете создать агент хранилища данных в Vertex AI Conversation , вам необходимо включить Dialogflow, а также API-интерфейсы Vertex AI Search и Conversation.

Чтобы включить API Dialogflow, выполните следующие действия:

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

Чтобы включить API поиска и диалога Vertex AI, выполните следующие действия:

  1. В консоли Google Cloud перейдите к консоли поиска и общения Vertex AI .
  2. Прочтите и согласитесь с Условиями обслуживания, затем нажмите «Продолжить» и активируйте API .

3. Создайте новое приложение для чата и хранилище данных для вашего приложения.

Теперь вы создадите новое приложение чата для своего виртуального агента и настроите его с помощью источника данных. Цель агента, который вы создадите, — помогать клиентам, у которых есть вопросы по поводу соответствия критериям крови. Вы будете использовать Lifeblood Австралийского Красного Креста в качестве источника правды и создадите хранилище данных на основе неструктурированных данных с веб-сайта, посвященного критериям отбора крови.

  1. Чтобы создать новое приложение чата в Vertex AI Conversation, вы можете:
    1. Перейдите в консоль Vertex AI Conversation , затем нажмите +Новое приложение в верхней части консоли.
    2. Перейдите в консоль Dialogflow CX , нажмите +Создать новый агент , затем выберите параметр «Автоматическое создание» , после чего вы будете перенаправлены на следующий шаг в консоли Vertex AI Conversation.
  2. В консоли Vertex AI Conversation выберите Chat в качестве типа приложения, которое вы хотите создать.
  3. Введите название компании Save a Life . Этот параметр используется для определения компании, которую представляет ваш агент, и сферы деятельности вашего агента.
  4. Укажите имя агента Blood Donation Agent .
  5. Нажмите Продолжить .
  6. Нажмите Создать новое хранилище данных .
  7. Выберите Cloud Storage в качестве источника данных для вашего хранилища данных.
  8. Укажите следующую папку Google Cloud Storage , содержащую примеры данных для этой лаборатории кода, и обратите внимание, что префикс gs:// не требуется:
    cloud-samples-data/dialogflow-cx/arc-lifeblood
    
  9. Выберите «Неструктурированные документы» в качестве типа импортируемых данных.
  10. Нажмите Продолжить .
  11. Укажите имя хранилища данных Australian Red Cross Lifeblood Unstructured .
  12. Нажмите «Создать» , чтобы создать хранилище данных.
  13. В списке хранилищ данных выберите вновь созданный Australian Red Cross Lifeblood Unstructured .
  14. Нажмите «Создать» , чтобы создать приложение чата.

Поздравляем! Вы завершили создание своего информационного чат-приложения, готового помочь потенциальным донорам, так что найдите минутку, чтобы отпраздновать это событие!

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

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

Предоставьте подсказку магазина дат

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

  1. В консоли Vertex AI Conversation щелкните имя вашего чат-приложения, после чего вы перенаправитесь на консоль Dialogflow CX для дальнейшего тестирования и настройки.
  2. В консоли Dialogflow CX и внутри вашего агента нажмите «Настройки агента» (правый верхний угол страницы), затем перейдите на вкладку «Машинное обучение» и, наконец, откройте вкладку «Генераторный искусственный интеллект» .

Перейдите к приглашению хранилища данных.

  1. Заполните форму, как показано ниже, чтобы создать следующее приглашение хранилища данных: Вас зовут Donate , и вы полезный и вежливый chatbot в Save a life, a fictitious organization . Ваша задача — помочь humans with eligibility information .

Заполните форму, чтобы создать подсказку

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

  1. Перейдите на вкладку «Сборка» и откройте стартовую страницу.
  2. Щелкните обработчик событий sys.no-match-default . Если флажок еще не установлен, включите генеративную резервную функцию.

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

Проверьте хранилище данных агента

На стартовой странице нажмите «Редактировать хранилища данных» , чтобы просмотреть настройки хранилища данных.

Редактировать хранилища данных

Ранее созданное вами хранилище данных уже было выбрано для вас Dialogflow.

Свяжите созданное вами хранилище данных

Прокрутите вниз до раздела «Ответы агента» в разделе «Выполнение» . Выполнение — это ответ агента конечному пользователю. В диалоговом потоке предварительно заполнены сообщения агента с параметром $request.knowledge.answers[0] который во время выполнения содержит основной ответ на вопрос пользователя.

Ответ агента содержит верхний ответ на вопрос пользователя.

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

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

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

Test agent again

Задавайте вопросы, которые вы ожидаете найти на странице часто задаваемых вопросов на сайте:

  • What age do I need to be to donate?
  • Can pregnant women donate?
  • I've just come back from a trip to Africa. Can I donate?
  • How can I schedule an appointment?

Проверьте, приходят ли ответы из базы знаний

Обратите внимание, что ответы взяты с сайта Австралийского Красного Креста Lifeblood. Как указано на этой странице, существует минимальный и максимальный возраст для сдачи крови. Минимальный возраст — 18 лет, максимальный — 75 лет для доноров, впервые ставших донорами. Дополнительным подтверждением того, что мы извлекаем информацию из хранилища данных, является значок маленькой звездочки, появляющийся в ответе агента, а также исходный ответ в формате JSON.

Проверьте исходный ответ JSON

Наконец, давайте попробуем задать агенту вопрос, совершенно не связанный с донорством крови.

Пользователь: «Какая погода в Мельбурне?»

Агент: «Извините, я не могу вам с этим помочь. Как я могу помочь вам с информацией о праве на участие?»

В этом ответе содержится контент, сгенерированный искусственным интеллектом, и он основан на текстовой подсказке, созданной Dialogflow, начиная с указанной ранее настройки соединителя знаний: «Вас зовут Donate, и вы полезный и вежливый чат-бот в Save a Life. Ваша задача — помочь людям с информацией о приемлемости» . Это текстовое приглашение содержит название компании, имя агента и, что наиболее важно, то, что находится в его области действия, что используется Dialogflow для генерации ответа агента.

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

6. Настройте агента для участия в тесте на соответствие требованиям.

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

Настройте новые маршруты и параметры

  1. Откройте стартовую страницу и нажмите «Редактировать хранилища данных».
  2. Измените существующий ответ агента на $request.knowledge.answers[0] Would you like to take the eligibility quiz to find out if you can donate blood, and start changing lives? .

Дополните ответ агента на часто задаваемые вопросы пользователей

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

Создайте маршрут для намерения «confirmation.yes».

Когда срабатывает подтверждение.да, происходит переход на новую страницу теста на соответствие критериям.

  1. Как упоминалось ранее, мы упростим тест и будем учитывать только возраст и вес пользователя, чтобы определить, имеют ли они право делать пожертвования. Откройте страницу теста на соответствие требованиям и добавьте новый параметр формы age-weight , выберите @sys.any в качестве типа сущности. Укажите "What is your age and weight?" в качестве первоначального оперативного выполнения. Мы хотим собрать данные о возрасте и весе за один раз. Сохраните все изменения.

Создать параметр

Создайте и настройте генератор соответствия требованиям

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

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

  1. В консоли Dialogflow CX перейдите на вкладку «Управление» , выберите «Генераторы» и нажмите « Создать новый» .

Создать новый генератор

  1. Затем укажите описательное отображаемое имя и напишите текстовое приглашение. Оставьте настройки контроля качества модели по умолчанию. Затем нажмите «Сохранить» , чтобы создать генератор.
    • Отображаемое имя: Blood Donation Eligibility
    • Текстовая подсказка: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. Weight should be above 50 Kg. The user age and weight is $last-user-utterance. Be nice and tell the user if they are eligible to donate (also tell them why not in case)

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

  • $conversation Разговор между агентом и пользователем, исключая самое последнее высказывание пользователя.
  • $last-user-utterance Последнее высказывание пользователя.

Настроенное вами текстовое приглашение предполагает, что пользователь укажет возраст и вес за один диалог («$last-user-utterance»).

Используйте генератор в исполнении и настройте все необходимые параметры.

  1. На странице теста на соответствие критериям добавьте новый маршрут, который будет выполнен после заполнения всех параметров. Введите требование условия $page.params.status = "FINAL" и нажмите « Сохранить ».

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

  1. Перейдите в раздел «Генераторы» на панели «Выполнение» и разверните его. Затем нажмите «Добавить генератор» и выберите генератор права на сдачу крови . После выбора генератора вам необходимо определить выходной параметр, который будет содержать результат работы генератора после выполнения.

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

  1. Используйте выходной параметр в ответе агента и сохраните маршрут. Теперь вы готовы все это проверить.

Используйте выходной параметр в ответе агента

7. Повторно протестируйте своего агента

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

Test agent again

На Симуляторе начните новый разговор с агентом. Сначала спросите о возрастных требованиях, а затем приступайте к тесту на соответствие критериям. Сначала проверьте «подходящий» путь, поэтому введите возраст от 18 до 75 лет и вес выше 50 кг.

Подходящий путь

Затем проверьте, что проверка приемлемости не удалась, если одно или оба требования не выполнены.

Неподходящий путь

Отлично, генератор работает как положено! Или нет? Что произойдет, если пользователь укажет возраст, но не вес (или наоборот)?

Укажите возраст, но не вес

8. Оперативная настройка генератора

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

  1. Откройте страницу теста на соответствие требованиям и добавьте два отдельных параметра формы: один для веса и один для возраста. Выберите @sys.number-integer в качестве типа сущности и отметьте необходимые параметры. Предоставьте первоначальные подсказки, например: How old are you? и What is your correct weight? . Сохраните все изменения.

Форма отбора

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

Снимите генератор

  1. Перейдите на вкладку «Управление» , выберите «Генераторы» и обновите текстовую подсказку генератора « Право на сдачу крови» , указав следующее: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. The weight must be at least 50 kg. The user is $age years old and weighs $weight Kg. Craft an email and politely explain to the user if they're eligible to donate and if not why. . Нажмите Сохранить .

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

Перенастроить текстовую подсказку

  1. На странице теста на соответствие критериям выберите маршрут и разверните раздел «Генераторы» на панели «Выполнение» . Затем нажмите «Добавить генератор» и выберите генератор права на сдачу крови. После выбора генератора вам необходимо связать новые заполнители подсказок с соответствующими параметрами сеанса. Более того, вам необходимо заново установить выходной параметр. Нажмите Сохранить .

Обновите привязки генератора

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

Электронное письмо о том, что пользователь не имеет права

Электронное письмо с сообщением о том, что пользователь имеет право

9. Поздравления

Молодцы, что завершили эту кодовую работу!

Молодцы, завершили кодлаб!

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

Очистить

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

  • Чтобы избежать ненужных расходов на Google Cloud, используйте консоль Google Cloud для удаления проекта, если он вам не нужен.
  • Если вы использовали существующий проект Google Cloud, удалите созданные вами ресурсы, чтобы избежать списания средств с вашей учетной записи. Для получения дополнительной информации см. инструкции по удалению приложения .
  • Если вы хотите отключить API для Vertex AI Conversation и Dialogflow, перейдите на страницу сведений о службе API Discovery Engine , нажмите «Отключить API» и подтвердите, а затем перейдите на страницу сведений о службе API Dialogflow , нажмите «Отключить API» и подтвердите.

Узнать больше

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

Лицензия

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