Создайте умного торгового помощника с помощью AlloyDB и Vertex AI Agent Builder — часть 2

1. Обзор

В современном быстро меняющемся мире розничной торговли предоставление исключительного обслуживания клиентам и обеспечение персонализированного опыта покупок имеет первостепенное значение. Мы проведем вас в техническое путешествие по созданию основанного на знаниях чат-приложения, предназначенного для ответа на вопросы клиентов, поиска продуктов и адаптации результатов поиска. Это инновационное решение сочетает в себе возможности AlloyDB для хранения данных, собственную аналитическую систему для контекстного понимания, Gemini (большая языковая модель) для проверки релевантности и Agent Builder от Google для быстрой загрузки интеллектуального диалогового помощника.

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

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

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

В рамках этой лабораторной работы (Часть 2) вы:

  1. Создайте агент Vertex AI Agent Builder.
  2. Интегрируйте инструмент AlloyDB с агентом

Требования

  • Браузер, например Chrome или Firefox.
  • Проект Google Cloud с включенной оплатой.

2. Архитектура

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

Проглатывание :

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

Аналитический механизм:

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

  1. Извлечение контекста: механизм анализирует данные, хранящиеся в AlloyDB, чтобы понять взаимосвязи между продуктами, категориями, поведением клиентов и т. д., если это применимо.
  2. Создание встраивания: встраивания (математические представления текста) создаются как для запроса пользователя, так и для информации, хранящейся в AlloyDB.
  3. Векторный поиск: механизм выполняет поиск по сходству, сравнивая встраивание запроса с встраиванием описаний продуктов, обзоров и других соответствующих данных. Это определяет 25 наиболее важных «ближайших соседей».

Проверка Близнецов:

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

Генерация ответа:

Проверенные ответы структурируются в массив JSON, а весь механизм упаковывается в бессерверную функцию запуска облака, которая вызывается из Agent Builder.

Вышеуказанные шаги уже рассмотрены в части 1 лабораторной работы.

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

Разговорное взаимодействие:

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

3. Прежде чем начать

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

  1. В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
  3. Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq. Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud.

Изображение кнопки «Активировать Cloud Shell»

  1. После подключения к Cloud Shell вы проверяете, что вы уже прошли аутентификацию и что для проекта установлен идентификатор вашего проекта, используя следующую команду:
gcloud auth list
  1. Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
  1. Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <YOUR_PROJECT_ID>
  1. Включите необходимые API. Альтернатива команде gcloud — через консоль, выполнив поиск по каждому продукту или воспользовавшись этой ссылкой .

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

Обратитесь к документации по командам и использованию gcloud.

Важное примечание: Кроме того, убедитесь, что вы выполнили ЧАСТЬ 1 лабораторной работы, чтобы выполнить это задание.

4. Создание агента

Представляем Agent Builder

Agent Builder — это мощный инструмент с низким уровнем написания кода, который позволяет нам быстро и эффективно создавать диалоговые агенты. Он упрощает процесс проектирования диалоговых потоков, интеграции баз знаний и подключения к внешним API. В нашем случае мы будем использовать Agent Builder для беспрепятственного подключения к конечной точке Cloud Function, которую мы создали в части 1, что позволит нашему помощнику по покупкам получить доступ к нашей базе знаний по розничной торговле и разумно отвечать на запросы клиентов.

Создание агента

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

  1. Начните с входа на платформу Agent Builder . Если вам будет предложено активировать API, нажмите «ПРОДОЛЖИТЬ И АКТИВИРОВАТЬ API».
  2. Нажмите «СОЗДАТЬ ПРИЛОЖЕНИЕ» и дайте вашему агенту описательное имя (например, «Помощник по розничным покупкам»).
  3. Нажмите Тип приложения «Агент».

462bb48664e9a14e.png

  1. . Дайте своему агенту описательное имя, например «Помощник по розничным покупкам», и установите регион как us-central1.

10eceef44b1600d1.png

  1. Введите данные агента:
  2. Измените имя агента на «Агент по розничным покупкам».
  3. Добавьте ниже «Цель»:
You are a shopping assistant agent! Your job is to help the customer search for their ideal apparels, allow them to add items to their cart, remove items from their cart, and review items in their cart. Once a user is done searching, open the search results in a user friendly html page.

537a87a842aae897.png

  1. Сохраните его на этом этапе и пока оставьте инструкции пустыми.
  2. Затем нажмите «Инструменты» в меню навигации и нажмите «СОЗДАТЬ».

2ffae953bbad38e5.png

Введите имя инструмента: Инструмент для розничных покупок

Введите описание инструмента:

This tool refers to the dataset in the backend as the context information for product inventory. It takes as input the user's search text summarized by the agent and matches with the most appropriate list of items and returns as an array of items.

Введите схему — OpenAPI в формате YAML:

Это та часть, где мы используем конечную точку бэкэнда для питания агента. Скопируйте приведенную ниже спецификацию OpenAPI и замените заполнитель URL-адреса (заключенный в угловые скобки) конечной точкой облачной функции:

openapi: 3.0.0
info:
 title: AlloyDB Product Matcher
 description: A Cloud Function to query AlloyDB for product matches based on user search text.
 version: 1.0.0
servers:
 - url: <<https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/alloy-gem>>
paths:
 /:
   post:
     summary: Find matching products based on search text.
     operationId: apparelSearch
     requestBody:
       description: JSON object containing the search text.
       required: true
       content:
         application/json:
           schema:
             type: object
             properties:
               search:
                 type: string
                 description: The user's search query for product matching.
     responses:
       '200':
         description: Successful response with a JSON array of matching products.
         content:
           application/json:
             schema:
               type: array
               items:
                 type: object
                 properties:
                   id:
                     type: string
                     description: Product ID.
                   category:
                     type: string
                     description: Product category.
                   sub_category:
                     type: string
                     description: Product sub-category.
                   uri:
                     type: string
                     description: Product URI or URL.
                   description:
                     type: string
                     description: Product description.
                   literature:
                     type: object
                     description: JSON object containing match information from the ML model.
                     properties:
                       MATCH:
                         type: string
                         description: Whether the product matches the search query (YES/NO).
                       PERCENTAGE:
                         type: string
                         description: Percentage of match.
                       DIFFERENCE:
                         type: string
                         description: Description of differences between the search and product.
       '500':
         description: Internal server error.

Для остальных конфигураций оставьте значения по умолчанию и нажмите «Сохранить».

  1. На этом этапе вернитесь к агенту, потому что мы хотим добавить конфигурацию «Инструмент» в «Инструкции» агента. Добавьте приведенный ниже заполнитель инструкций (помните, что отступы важны для определения потока):
- Greet the user and answer their question to the best of your knowledge.
- Summarize the user's request and ask them to confirm that you understood correctly.
   - Check if the request has details like gender, color, material, style and other key apparel details already.
   - If not, seek clarifying details.
   - If the search request is very broad, then ask the user to narrow down the request with specific details that you believe could be personal preferences.
   - Once all the necessary details are met, summarize your final understanding of the request with the user.
- Use ${TOOL: Retail Shopping Tool} to help the user with their task.
- If the request has unrelated input text, gracefully convey that you don't have information on that topic.
- Do not give product availability information outside the source that is provided to you in ${TOOL: Retail Shopping Tool}.
- Do not assist with any information unless you are certain that you know the answer and it is grounded in the source of truth.
- Thank the user for their business and say goodbye.

Убедитесь, что в разделе «Доступные инструменты» выбран инструмент «Инструмент розничной торговли», а затем снова сохраните агента.

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

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

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

63ac3ef6d1f0f614.png

Это ответ JSON:

acf3cb0e2be2ed91.png

Это необработанный результат JSON от облачной функции, которая обрабатывает поиск сходства AlloyDB. Вот и все! Теперь у нас все готово с агентом.

6. Пример процесса разговора

На этом этапе вы можете протестировать и повторить поток вашего агента диалога (разговора):

User: I'm looking for women's boots for winter. 

Agent: (OpenAPI call to Cloud Function that works with AlloyDB Similarity Search) 

Cloud Function: (Processes query, returns JSON array) 

Agent: Based on your preferences, here are some options: [Product 1, Product 2, Product 3]. Would you like to see more details about any of these?

User: No, That is all. Bye!

Agent: Have a good day!

Несколько подсказок о съемках

Теперь предположим, что вы хотите увидеть результат в диалоговом агенте в определенном графическом формате, включая картинки и ссылки. Мы сделаем это, используя примеры разговоров, также известные как «Несколько подсказок».

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

На одном из наших предыдущих скриншотов в разделе « Проверка агента » мы видим ответ агента: «Понятно. Вы ищете белую рубашку с синими принтами...». Перейдите к этому ответу или создайте новый тестовый разговор на правой панели агента:

  1. Введите ниже в разделе «Введите пользовательский ввод»:

dc8c010c36400e64.png

Вы увидите такой ответ:

e31d9f53bf5564c8.png

И вы также увидите массив JSON, возвращаемый конечной точкой API.

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

1e0a9f6815f63bf9.png

  1. Сохраните разговор с отображаемым именем «Ответ с изображениями» или чем-то подобным и нажмите «Создать».
  2. Теперь перейдите на вкладку ответа, выделенную черной галочкой на изображении выше, и замените текст «Понятно. Вы ищете желтые сандалии. Это правильно?» со следующим:
I see you are looking for yellow sandals. Here are a few options for you:
<!DOCTYPE html>
<html>
<body>

<h2>Featured Sandals</h2>

<table style="overflow-x: auto; white-space: nowrap;">
    <tr>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/d27dbd8e9666b9af2d72fbfde315f76d_images.jpg" alt="Yellow sandals from Estd. 1977" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/b7a479fe5f56457e930541a789c5df68_images.jpg" alt="Yellow sandals from Gliders" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/b6c813734b29b89d1055fd000ea50743_images.jpg" alt="Yellow sandals from Rocia" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/ee0e918c229e76e0e7e61712e9d2ecb3_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/5bdd4c9e739205e28ee134ff7849bc60_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
        </td>
    </tr>
</table>

</body>
</html>
  1. Нажмите «Сохранить» сверху.

Повторите этот процесс для любого количества примеров с разными вариациями и ходом разговора.

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

450166a929645353.png

Некоторые другие типы ответов:

be8908c99cd33730.png

Вот и все. Мы успешно создали и протестировали диалоговый агент для нашего розничного приложения.

7. Развертывание и интеграция

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

8. Очистка

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

  1. В консоли Google Cloud перейдите в раздел «Управление» .
  2. страница ресурсов .
  3. В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить» .
  4. В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить работу» , чтобы удалить проект.

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

Поздравляем! Объединив возможности нашего специально разработанного аналитического механизма с интуитивно понятным интерфейсом Agent Builder, мы создали умного помощника по покупкам в розничной торговле, который обеспечивает персонализированный опыт, точно отвечает на вопросы и, в конечном итоге, повышает удовлетворенность клиентов и продажи. Объединив возможности AlloyDB , Vertex AI и Vector Search , мы сделали гигантский шаг вперед в том, чтобы сделать контекстный и векторный поиск доступным, эффективным, по-настоящему осмысленным и агентным!

,

1. Обзор

В современном быстро меняющемся мире розничной торговли предоставление исключительного обслуживания клиентам и обеспечение персонализированного опыта покупок имеет первостепенное значение. Мы проведем вас в техническое путешествие по созданию основанного на знаниях чат-приложения, предназначенного для ответа на вопросы клиентов, поиска продуктов и адаптации результатов поиска. Это инновационное решение сочетает в себе возможности AlloyDB для хранения данных, собственную аналитическую систему для контекстного понимания, Gemini (большая языковая модель) для проверки релевантности и Agent Builder от Google для быстрой загрузки интеллектуального диалогового помощника.

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

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

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

В рамках этой лабораторной работы (Часть 2) вы:

  1. Создайте агент Vertex AI Agent Builder.
  2. Интегрируйте инструмент AlloyDB с агентом

Требования

  • Браузер, например Chrome или Firefox.
  • Проект Google Cloud с включенной оплатой.

2. Архитектура

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

Проглатывание :

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

Аналитический механизм:

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

  1. Извлечение контекста: механизм анализирует данные, хранящиеся в AlloyDB, чтобы понять взаимосвязи между продуктами, категориями, поведением клиентов и т. д., если это применимо.
  2. Создание встраивания: встраивания (математические представления текста) создаются как для запроса пользователя, так и для информации, хранящейся в AlloyDB.
  3. Векторный поиск: механизм выполняет поиск по сходству, сравнивая встраивание запроса с встраиванием описаний продуктов, обзоров и других соответствующих данных. Это определяет 25 наиболее важных «ближайших соседей».

Проверка Близнецов:

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

Генерация ответа:

Проверенные ответы структурируются в массив JSON, а весь механизм упаковывается в бессерверную функцию запуска облака, которая вызывается из Agent Builder.

Вышеуказанные шаги уже рассмотрены в части 1 лабораторной работы.

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

Разговорное взаимодействие:

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

3. Прежде чем начать

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

  1. В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
  3. Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq. Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud.

Изображение кнопки «Активировать Cloud Shell»

  1. После подключения к Cloud Shell вы проверяете, что вы уже прошли аутентификацию и что для проекта установлен идентификатор вашего проекта, используя следующую команду:
gcloud auth list
  1. Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
  1. Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <YOUR_PROJECT_ID>
  1. Включите необходимые API. Альтернатива команде gcloud — через консоль, выполнив поиск по каждому продукту или воспользовавшись этой ссылкой .

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

Обратитесь к документации по командам и использованию gcloud.

Важное примечание: Кроме того, убедитесь, что вы выполнили ЧАСТЬ 1 лабораторной работы, чтобы выполнить это задание.

4. Создание агента

Представляем Agent Builder

Agent Builder — это мощный инструмент с низким уровнем написания кода, который позволяет нам быстро и эффективно создавать диалоговые агенты. Он упрощает процесс проектирования диалоговых потоков, интеграции баз знаний и подключения к внешним API. В нашем случае мы будем использовать Agent Builder для беспрепятственного подключения к конечной точке Cloud Function, которую мы создали в части 1, что позволит нашему помощнику по покупкам получить доступ к нашей базе знаний по розничной торговле и разумно отвечать на запросы клиентов.

Создание агента

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

  1. Начните с входа на платформу Agent Builder . Если вам будет предложено активировать API, нажмите «ПРОДОЛЖИТЬ И АКТИВИРОВАТЬ API».
  2. Нажмите «СОЗДАТЬ ПРИЛОЖЕНИЕ» и дайте вашему агенту описательное имя (например, «Помощник по розничным покупкам»).
  3. Нажмите Тип приложения «Агент».

462bb48664e9a14e.png

  1. . Дайте своему агенту описательное имя, например «Помощник по розничным покупкам», и установите регион как us-central1.

10eceef44b1600d1.png

  1. Введите данные агента:
  2. Измените имя агента на «Агент по розничным покупкам».
  3. Добавьте ниже «Цель»:
You are a shopping assistant agent! Your job is to help the customer search for their ideal apparels, allow them to add items to their cart, remove items from their cart, and review items in their cart. Once a user is done searching, open the search results in a user friendly html page.

537a87a842aae897.png

  1. Сохраните его на этом этапе и пока оставьте инструкции пустыми.
  2. Затем нажмите «Инструменты» в меню навигации и нажмите «СОЗДАТЬ».

2ffae953bbad38e5.png

Введите имя инструмента: Инструмент для розничных покупок

Введите описание инструмента:

This tool refers to the dataset in the backend as the context information for product inventory. It takes as input the user's search text summarized by the agent and matches with the most appropriate list of items and returns as an array of items.

Введите схему — OpenAPI в формате YAML:

Это та часть, где мы используем конечную точку бэкэнда для питания агента. Скопируйте приведенную ниже спецификацию OpenAPI и замените заполнитель URL-адреса (заключенный в угловые скобки) конечной точкой облачной функции:

openapi: 3.0.0
info:
 title: AlloyDB Product Matcher
 description: A Cloud Function to query AlloyDB for product matches based on user search text.
 version: 1.0.0
servers:
 - url: <<https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/alloy-gem>>
paths:
 /:
   post:
     summary: Find matching products based on search text.
     operationId: apparelSearch
     requestBody:
       description: JSON object containing the search text.
       required: true
       content:
         application/json:
           schema:
             type: object
             properties:
               search:
                 type: string
                 description: The user's search query for product matching.
     responses:
       '200':
         description: Successful response with a JSON array of matching products.
         content:
           application/json:
             schema:
               type: array
               items:
                 type: object
                 properties:
                   id:
                     type: string
                     description: Product ID.
                   category:
                     type: string
                     description: Product category.
                   sub_category:
                     type: string
                     description: Product sub-category.
                   uri:
                     type: string
                     description: Product URI or URL.
                   description:
                     type: string
                     description: Product description.
                   literature:
                     type: object
                     description: JSON object containing match information from the ML model.
                     properties:
                       MATCH:
                         type: string
                         description: Whether the product matches the search query (YES/NO).
                       PERCENTAGE:
                         type: string
                         description: Percentage of match.
                       DIFFERENCE:
                         type: string
                         description: Description of differences between the search and product.
       '500':
         description: Internal server error.

Для остальных конфигураций оставьте значения по умолчанию и нажмите «Сохранить».

  1. На этом этапе вернитесь к агенту, потому что мы хотим добавить конфигурацию «Инструмент» в «Инструкции» агента. Добавьте приведенный ниже заполнитель инструкций (помните, что отступы важны для определения потока):
- Greet the user and answer their question to the best of your knowledge.
- Summarize the user's request and ask them to confirm that you understood correctly.
   - Check if the request has details like gender, color, material, style and other key apparel details already.
   - If not, seek clarifying details.
   - If the search request is very broad, then ask the user to narrow down the request with specific details that you believe could be personal preferences.
   - Once all the necessary details are met, summarize your final understanding of the request with the user.
- Use ${TOOL: Retail Shopping Tool} to help the user with their task.
- If the request has unrelated input text, gracefully convey that you don't have information on that topic.
- Do not give product availability information outside the source that is provided to you in ${TOOL: Retail Shopping Tool}.
- Do not assist with any information unless you are certain that you know the answer and it is grounded in the source of truth.
- Thank the user for their business and say goodbye.

Убедитесь, что в разделе «Доступные инструменты» выбран инструмент «Инструмент розничной торговли», а затем снова сохраните агента.

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

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

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

63ac3ef6d1f0f614.png

Это ответ JSON:

acf3cb0e2be2ed91.png

Это необработанный результат JSON от облачной функции, которая обрабатывает поиск сходства AlloyDB. Вот и все! Теперь у нас все готово с агентом.

6. Пример процесса разговора

На этом этапе вы можете протестировать и повторить поток вашего агента диалога (разговора):

User: I'm looking for women's boots for winter. 

Agent: (OpenAPI call to Cloud Function that works with AlloyDB Similarity Search) 

Cloud Function: (Processes query, returns JSON array) 

Agent: Based on your preferences, here are some options: [Product 1, Product 2, Product 3]. Would you like to see more details about any of these?

User: No, That is all. Bye!

Agent: Have a good day!

Несколько подсказок о съемках

Теперь предположим, что вы хотите увидеть результат в диалоговом агенте в определенном графическом формате, включая картинки и ссылки. Мы сделаем это, используя примеры разговоров, также известные как «Несколько подсказок».

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

На одном из наших предыдущих скриншотов в разделе « Проверка агента » мы видим ответ агента: «Понятно. Вы ищете белую рубашку с синими принтами...». Перейдите к этому ответу или создайте новый тестовый разговор на правой панели агента:

  1. Введите ниже в разделе «Введите пользовательский ввод»:

dc8c010c36400e64.png

Вы увидите такой ответ:

e31d9f53bf5564c8.png

И вы также увидите массив JSON, возвращаемый конечной точкой API.

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

1e0a9f6815f63bf9.png

  1. Сохраните разговор с отображаемым именем «Ответ с изображениями» или чем-то подобным и нажмите «Создать».
  2. Теперь перейдите на вкладку ответа, выделенную черной галочкой на изображении выше, и замените текст «Понятно. Вы ищете желтые сандалии. Это правильно?» со следующим:
I see you are looking for yellow sandals. Here are a few options for you:
<!DOCTYPE html>
<html>
<body>

<h2>Featured Sandals</h2>

<table style="overflow-x: auto; white-space: nowrap;">
    <tr>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/d27dbd8e9666b9af2d72fbfde315f76d_images.jpg" alt="Yellow sandals from Estd. 1977" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/b7a479fe5f56457e930541a789c5df68_images.jpg" alt="Yellow sandals from Gliders" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/b6c813734b29b89d1055fd000ea50743_images.jpg" alt="Yellow sandals from Rocia" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/ee0e918c229e76e0e7e61712e9d2ecb3_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/5bdd4c9e739205e28ee134ff7849bc60_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
        </td>
    </tr>
</table>

</body>
</html>
  1. Нажмите «Сохранить» сверху.

Повторите этот процесс для любого количества примеров с разными вариациями и ходом разговора.

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

450166a929645353.png

Некоторые другие типы ответов:

be8908c99cd33730.png

Вот и все. Мы успешно создали и протестировали диалоговый агент для нашего розничного приложения.

7. Развертывание и интеграция

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

8. Очистка

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

  1. В консоли Google Cloud перейдите в раздел «Управление» .
  2. страница ресурсов .
  3. В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить» .
  4. В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить работу» , чтобы удалить проект.

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

Поздравляем! Объединив возможности нашего специально разработанного аналитического механизма с интуитивно понятным интерфейсом Agent Builder, мы создали умного помощника по покупкам в розничной торговле, который обеспечивает персонализированный опыт, точно отвечает на вопросы и, в конечном итоге, повышает удовлетворенность клиентов и продажи. Объединив возможности AlloyDB , Vertex AI и Vector Search , мы сделали гигантский шаг вперед в том, чтобы сделать контекстный и векторный поиск доступным, эффективным, по-настоящему осмысленным и агентным!

,

1. Обзор

В современном быстро меняющемся мире розничной торговли предоставление исключительного обслуживания клиентам и обеспечение персонализированного опыта покупок имеет первостепенное значение. Мы проведем вас в техническое путешествие по созданию основанного на знаниях чат-приложения, предназначенного для ответа на вопросы клиентов, поиска продуктов и адаптации результатов поиска. Это инновационное решение сочетает в себе возможности AlloyDB для хранения данных, собственную аналитическую систему для контекстного понимания, Gemini (большая языковая модель) для проверки релевантности и Agent Builder от Google для быстрой загрузки интеллектуального диалогового помощника.

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

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

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

В рамках этой лабораторной работы (Часть 2) вы:

  1. Создание агента Vertex AI Agent Builder
  2. Интегрируйте инструмент AlloyDB с агентом

Требования

  • Браузер, например Chrome или Firefox.
  • Проект Google Cloud с включенной оплатой.

2. Архитектура

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

Проглатывание :

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

Аналитический механизм:

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

  1. Извлечение контекста: механизм анализирует данные, хранящиеся в AlloyDB, чтобы понять взаимосвязи между продуктами, категориями, поведением клиентов и т. д., если это применимо.
  2. Создание встраивания: встраивания (математические представления текста) создаются как для запроса пользователя, так и для информации, хранящейся в AlloyDB.
  3. Векторный поиск: механизм выполняет поиск по сходству, сравнивая встраивание запроса с встраиванием описаний продуктов, обзоров и других соответствующих данных. Это определяет 25 наиболее важных «ближайших соседей».

Проверка Близнецов:

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

Генерация ответа:

Проверенные ответы структурируются в массив JSON, а весь механизм упаковывается в бессерверную функцию запуска облака, которая вызывается из Agent Builder.

Вышеуказанные шаги уже рассмотрены в части 1 лабораторной работы.

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

Разговорное взаимодействие:

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

3. Прежде чем начать

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

  1. В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
  3. Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq. Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud.

Изображение кнопки «Активировать Cloud Shell»

  1. После подключения к Cloud Shell вы проверяете, что вы уже прошли аутентификацию и что для проекта установлен идентификатор вашего проекта, используя следующую команду:
gcloud auth list
  1. Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
  1. Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <YOUR_PROJECT_ID>
  1. Включите необходимые API. Альтернатива команде gcloud — через консоль, выполнив поиск по каждому продукту или воспользовавшись этой ссылкой .

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

Обратитесь к документации по командам и использованию gcloud.

Важное примечание: Кроме того, убедитесь, что вы выполнили ЧАСТЬ 1 лабораторной работы, чтобы выполнить это задание.

4. Создание агента

Представляем Agent Builder

Agent Builder — это мощный инструмент с низким уровнем написания кода, который позволяет нам быстро и эффективно создавать диалоговые агенты. Он упрощает процесс проектирования диалоговых потоков, интеграции баз знаний и подключения к внешним API. В нашем случае мы будем использовать Agent Builder для беспрепятственного подключения к конечной точке Cloud Function, которую мы создали в части 1, что позволит нашему помощнику по покупкам получить доступ к нашей базе знаний по розничной торговле и разумно отвечать на запросы клиентов.

Создание агента

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

  1. Начните с входа на платформу Agent Builder . Если вам будет предложено активировать API, нажмите «ПРОДОЛЖИТЬ И АКТИВИРОВАТЬ API».
  2. Нажмите «СОЗДАТЬ ПРИЛОЖЕНИЕ» и дайте вашему агенту описательное имя (например, «Помощник по розничным покупкам»).
  3. Нажмите Тип приложения «Агент».

462bb48664e9a14e.png

  1. . Дайте своему агенту описательное имя, например «Помощник по розничным покупкам», и установите регион как us-central1.

10eceef44b1600d1.png

  1. Введите данные агента:
  2. Измените имя агента на «Агент по розничным покупкам».
  3. Добавьте ниже «Цель»:
You are a shopping assistant agent! Your job is to help the customer search for their ideal apparels, allow them to add items to their cart, remove items from their cart, and review items in their cart. Once a user is done searching, open the search results in a user friendly html page.

537a87a842aae897.png

  1. Сохраните его на этом этапе и пока оставьте инструкции пустыми.
  2. Затем нажмите «Инструменты» в меню навигации и нажмите «СОЗДАТЬ».

2ffae953bbad38e5.png

Введите имя инструмента: Инструмент для розничных покупок

Введите описание инструмента:

This tool refers to the dataset in the backend as the context information for product inventory. It takes as input the user's search text summarized by the agent and matches with the most appropriate list of items and returns as an array of items.

Введите схему — OpenAPI в формате YAML:

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

openapi: 3.0.0
info:
 title: AlloyDB Product Matcher
 description: A Cloud Function to query AlloyDB for product matches based on user search text.
 version: 1.0.0
servers:
 - url: <<https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/alloy-gem>>
paths:
 /:
   post:
     summary: Find matching products based on search text.
     operationId: apparelSearch
     requestBody:
       description: JSON object containing the search text.
       required: true
       content:
         application/json:
           schema:
             type: object
             properties:
               search:
                 type: string
                 description: The user's search query for product matching.
     responses:
       '200':
         description: Successful response with a JSON array of matching products.
         content:
           application/json:
             schema:
               type: array
               items:
                 type: object
                 properties:
                   id:
                     type: string
                     description: Product ID.
                   category:
                     type: string
                     description: Product category.
                   sub_category:
                     type: string
                     description: Product sub-category.
                   uri:
                     type: string
                     description: Product URI or URL.
                   description:
                     type: string
                     description: Product description.
                   literature:
                     type: object
                     description: JSON object containing match information from the ML model.
                     properties:
                       MATCH:
                         type: string
                         description: Whether the product matches the search query (YES/NO).
                       PERCENTAGE:
                         type: string
                         description: Percentage of match.
                       DIFFERENCE:
                         type: string
                         description: Description of differences between the search and product.
       '500':
         description: Internal server error.

Для остальных конфигураций оставьте значения по умолчанию и нажмите «Сохранить».

  1. На этом этапе вернитесь к агенту, потому что мы хотим добавить конфигурацию «Инструмент» в «Инструкции» агента. Добавьте приведенный ниже заполнитель инструкций (помните, что отступы важны для определения потока):
- Greet the user and answer their question to the best of your knowledge.
- Summarize the user's request and ask them to confirm that you understood correctly.
   - Check if the request has details like gender, color, material, style and other key apparel details already.
   - If not, seek clarifying details.
   - If the search request is very broad, then ask the user to narrow down the request with specific details that you believe could be personal preferences.
   - Once all the necessary details are met, summarize your final understanding of the request with the user.
- Use ${TOOL: Retail Shopping Tool} to help the user with their task.
- If the request has unrelated input text, gracefully convey that you don't have information on that topic.
- Do not give product availability information outside the source that is provided to you in ${TOOL: Retail Shopping Tool}.
- Do not assist with any information unless you are certain that you know the answer and it is grounded in the source of truth.
- Thank the user for their business and say goodbye.

Убедитесь, что в разделе «Доступные инструменты» выбран инструмент «Инструмент розничной торговли», а затем снова сохраните агента.

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

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

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

63ac3ef6d1f0f614.png

Это ответ JSON:

acf3cb0e2be2ed91.png

Это необработанный результат JSON от облачной функции, которая обрабатывает поиск сходства AlloyDB. Вот и все! Теперь у нас все готово с агентом.

6. Пример процесса разговора

На этом этапе вы можете протестировать и повторить поток вашего агента диалога (разговора):

User: I'm looking for women's boots for winter. 

Agent: (OpenAPI call to Cloud Function that works with AlloyDB Similarity Search) 

Cloud Function: (Processes query, returns JSON array) 

Agent: Based on your preferences, here are some options: [Product 1, Product 2, Product 3]. Would you like to see more details about any of these?

User: No, That is all. Bye!

Agent: Have a good day!

Несколько подсказок о съемках

Теперь предположим, что вы хотите увидеть результат в диалоговом агенте в определенном графическом формате, включая картинки и ссылки. Мы сделаем это, используя примеры разговоров, также известные как «Несколько подсказок».

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

На одном из наших предыдущих скриншотов в разделе « Проверка агента » мы видим ответ агента: «Понятно. Вы ищете белую рубашку с синими принтами...». Перейдите к этому ответу или создайте новый тестовый разговор на правой панели агента:

  1. Введите ниже в разделе «Введите пользовательский ввод»:

dc8c010c36400e64.png

Вы увидите такой ответ:

e31d9f53bf5564c8.png

И вы также увидите массив JSON, возвращаемый конечной точкой API.

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

1e0a9f6815f63bf9.png

  1. Сохраните разговор с отображаемым именем «Ответ с изображениями» или чем-то подобным и нажмите «Создать».
  2. Теперь перейдите на вкладку ответа, выделенную черной галочкой на изображении выше, и замените текст «Понятно. Вы ищете желтые сандалии. Это правильно?» со следующим:
I see you are looking for yellow sandals. Here are a few options for you:
<!DOCTYPE html>
<html>
<body>

<h2>Featured Sandals</h2>

<table style="overflow-x: auto; white-space: nowrap;">
    <tr>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/d27dbd8e9666b9af2d72fbfde315f76d_images.jpg" alt="Yellow sandals from Estd. 1977" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/b7a479fe5f56457e930541a789c5df68_images.jpg" alt="Yellow sandals from Gliders" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/b6c813734b29b89d1055fd000ea50743_images.jpg" alt="Yellow sandals from Rocia" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/ee0e918c229e76e0e7e61712e9d2ecb3_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/5bdd4c9e739205e28ee134ff7849bc60_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
        </td>
    </tr>
</table>

</body>
</html>
  1. Нажмите «Сохранить» сверху.

Повторите этот процесс для любого количества примеров с разными вариантами и ходом разговора.

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

450166a929645353.png

Некоторые другие типы ответов:

be8908c99cd33730.png

Вот и все. Мы успешно создали и протестировали диалоговый агент для нашего розничного приложения.

7. Развертывание и интеграция

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

8. Очистка

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

  1. В консоли Google Cloud перейдите в раздел «Управление» .
  2. страница ресурсов .
  3. В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить» .
  4. В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить работу» , чтобы удалить проект.

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

Поздравляем! Объединив возможности нашего специально разработанного аналитического механизма с интуитивно понятным интерфейсом Agent Builder, мы создали умного помощника по покупкам в розничной торговле, который обеспечивает персонализированный опыт, точно отвечает на вопросы и, в конечном итоге, повышает удовлетворенность клиентов и продажи. Объединив возможности AlloyDB , Vertex AI и Vector Search , мы сделали гигантский шаг вперед в том, чтобы сделать контекстный и векторный поиск доступным, эффективным, по-настоящему осмысленным и агентным!