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

1. Обзор

Последнее обновление: 10.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 Cloud
  • Браузер, например, Chrome

2. Включите API.

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

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

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

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

  1. В консоли Google Cloud перейдите в консоль Vertex AI Search and Conversation .
  2. Ознакомьтесь с условиями предоставления услуг и примите их, затем нажмите «Продолжить» и активируйте API .

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

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

  1. Для создания нового чат-приложения в Vertex AI Conversation вы можете сделать одно из следующих действий:
    1. Перейдите в консоль Vertex AI Conversation , затем нажмите кнопку «+Новое приложение» в верхней части консоли.
    2. Перейдите в консоль Dialogflow CX , нажмите « +Создать нового агента» , затем выберите опцию «Автоматическая генерация» , после чего вы будете перенаправлены на следующий шаг в консоли Vertex AI Conversation.
  2. В консоли Vertex AI Conversation выберите «Чат» в качестве типа приложения, которое вы хотите создать.
  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.

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

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

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

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

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

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

Test agent again

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

  • 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. Настройте агента для прохождения теста на соответствие критериям.

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

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

  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. Теперь нам нужно разработать агента для обработки ответов «да» и «нет». Для начала создайте намерение confirmation.yes и намерение confirmation.no . Следуйте этим рекомендациям по повторному использованию намерений.
  3. Затем на стартовой странице создайте маршрут для намерения confirmation.yes , который перенаправляет на новую страницу «Тест на соответствие требованиям» .

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

При срабатывании подтверждения (refirmation.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.