1. Обзор
В современном быстро меняющемся мире розничной торговли предоставление исключительного обслуживания клиентов и обеспечение персонализированного опыта покупок имеет первостепенное значение. Мы проведем вас через техническое путешествие по созданию приложения для чата, основанного на знаниях, предназначенного для ответа на вопросы клиентов, помощи в поиске товаров и персонализации результатов поиска. Это инновационное решение сочетает в себе возможности AlloyDB для хранения данных, собственную аналитическую систему для контекстного анализа, Gemini (Large Language Model) для проверки релевантности и Google Agent Builder для быстрого запуска интеллектуального разговорного помощника.
Задача: Современные покупатели в розничной торговле ожидают мгновенных ответов и рекомендаций по товарам, соответствующих их уникальным предпочтениям. Традиционные методы поиска часто не обеспечивают такого уровня персонализации.
Решение: Наше приложение для чата, основанное на знаниях, решает эту задачу напрямую. Оно использует обширную базу знаний, полученную из ваших данных о розничной торговле, чтобы понимать намерения клиентов, интеллектуально реагировать и предоставлять максимально релевантные результаты.
Что вы построите
В рамках этой лабораторной работы (Часть 2) вы:
- Создайте агента Vertex AI Agent Builder.
- Интегрируйте инструмент AlloyDB с агентом.
Требования
2. Архитектура
Поток данных: Давайте подробнее рассмотрим, как данные перемещаются в нашей системе:
Приём внутрь :
Данные о розничной торговле (инвентаризация, описания товаров, взаимодействие с клиентами) непрерывно загружаются в AlloyDB.
Аналитический механизм:
Для выполнения следующих действий мы будем использовать AlloyDB в качестве аналитического механизма:
- Извлечение контекста: Механизм анализирует данные, хранящиеся в AlloyDB, чтобы понять взаимосвязи между продуктами, категориями, поведением клиентов и т. д., в зависимости от ситуации.
- Создание векторных представлений: Векторные представления (математические представления текста) генерируются как для запроса пользователя, так и для информации, хранящейся в AlloyDB.
- Векторный поиск: поисковая система выполняет поиск сходства, сравнивая векторное представление запроса с векторными представлениями описаний товаров, отзывов и других релевантных данных. Это позволяет определить 25 наиболее релевантных «ближайших соседей».
Проверка Gemini:
Эти потенциальные ответы отправляются в Gemini для оценки. Gemini определяет, действительно ли они актуальны и безопасны для передачи пользователю.
Генерация ответа:
Проверенные ответы структурируются в массив JSON, а весь механизм упаковывается в бессерверную облачную функцию запуска, которая вызывается из Agent Builder.
Вышеописанные шаги уже были рассмотрены в первой части лабораторной работы.
Мы обсудили технические детали создания аналитического механизма, основанного на знаниях, который лежит в основе нашего интеллектуального помощника по покупкам. Теперь давайте рассмотрим, как мы используем возможности Agent Builder, чтобы воплотить этот механизм в жизнь в разговорном интерфейсе. Убедитесь, что у вас готов URL-адрес конечной точки, прежде чем начинать часть 2. Следующий шаг — это то, что мы рассмотрим в этой лабораторной работе:
Разговорное взаимодействие:
Agent Builder предоставляет пользователю ответы в формате естественного языка, способствуя диалогу.
3. Прежде чем начать
Создать проект
- В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.
- Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
- Вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud и поставляемую с предустановленным bq. Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud.

- После подключения к Cloud Shell необходимо проверить, прошли ли вы аутентификацию и установлен ли идентификатор вашего проекта, используя следующую команду:
gcloud auth list
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
- Если ваш проект не задан, используйте следующую команду для его установки:
gcloud config set project <YOUR_PROJECT_ID>
- Включите необходимые API. Альтернативой команде gcloud является использование консоли для поиска каждого продукта или переход по этой ссылке .
Если какой-либо API отсутствует, вы всегда можете включить его в процессе реализации.
Для получения информации о командах gcloud и их использовании обратитесь к документации .
Важное примечание: Также убедитесь, что вы выполнили ЧАСТЬ 1 лабораторной работы, чтобы завершить эту.
4. Создание агентов
Представляем Agent Builder
Agent Builder — это мощный инструмент с низким уровнем кодирования, который позволяет быстро и эффективно создавать диалоговых агентов. Он упрощает процесс проектирования диалоговых потоков, интеграции баз знаний и подключения к внешним API. В нашем случае мы будем использовать Agent Builder для беспрепятственного подключения к конечной точке Cloud Function, которую мы создали в части 1, что позволит нашему помощнику по покупкам получить доступ к нашей базе знаний по розничной торговле и интеллектуально отвечать на запросы клиентов.
Создание агента
Давайте начнём с создания нового агента для ответа на вопросы пользователей о товарах из категории одежды.
- Для начала войдите в платформу Agent Builder . Если система запросит активацию API, нажмите «ПРОДОЛЖИТЬ И АКТИВИРОВАТЬ API».
- Нажмите кнопку «СОЗДАТЬ ПРИЛОЖЕНИЕ» и дайте своему агенту описательное имя (например, «Помощник по покупкам в розничной торговле»).
- Нажмите «Тип приложения» — «Агент».

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

- Введите данные агента:
- Измените имя агента на «Агент по розничной торговле».
- Добавьте следующую "Цель":
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.

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

Введите название инструмента: Инструмент для розничной торговли
Введите описание инструмента:
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.
Представляем Schema — 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.
Оставьте остальные параметры настроек по умолчанию и нажмите «Сохранить».
- Вернитесь к агенту, потому что нам нужно добавить конфигурацию «Инструмент» в раздел «Инструкции» агента. Добавьте в поле «Инструкции» следующий код (помните, отступы важны для определения последовательности действий):
- 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. Проверьте работу агента.
В правой панели вы увидите раздел «Предварительный просмотр агента», который позволяет протестировать ваш агент.
Как вы можете видеть на скриншоте ниже, я поприветствовал пользователя и начал чат с запроса на белую рубашку с синим рисунком:

Это JSON-ответ:

Это необработанный 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!
Несколько подсказок для выстрелов
Теперь предположим, что вы хотите увидеть результат в диалоговом окне в определенном графическом формате, включая изображения и ссылки. Мы сделаем это, используя примеры диалогов, также известные как «подсказки в формате Few Shot Prompting».
Это означает, что мы хотим добавить несколько примеров в конструктор агентов, чтобы обеспечить единообразный формат результатов.
На одном из наших предыдущих скриншотов в разделе « Проверка агента » мы видим ответ агента: «Понятно. Вы ищете белую рубашку с синими принтами...». Перейдите к этому ответу или создайте новый тестовый диалог в правой панели агента:
- В поле «Ввод данных пользователем» введите следующее:

Вы увидите примерно такой ответ:

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

- Сохраните переписку, указав в качестве отображаемого имени «Ответ с изображениями» или что-то подобное, и нажмите «Создать».
- Теперь перейдите на вкладку «Ответы», выделенную черной галочкой на изображении выше, и замените текст «Понятно. Вы ищете желтые сандалии. Это правильно?» следующим текстом:
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>
- Нажмите кнопку «Сохранить» вверху.
Повторяйте этот процесс для неограниченного количества примеров с различными вариациями и ходом разговора.
Теперь давайте протестируем это, используя ввод данных от пользователя:

Другие типы ответов:

Вот и всё. Мы успешно создали и протестировали диалогового агента для нашего приложения для розничной торговли.
7. Развертывание и интеграция
Как только вы будете удовлетворены своим агентом, вы можете легко развернуть его на различных каналах, используя интеграции Agent Builder. Вы можете встроить его на свой веб-сайт, интегрировать с популярными платформами обмена сообщениями или даже создать специальное мобильное приложение. Мы также можем использовать API Agent Builder непосредственно в наших веб-приложениях, о чем мы рассказывали в этом блоге .
8. Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, использованные в этой статье, выполните следующие действия:
- В консоли Google Cloud перейдите в раздел «Управление» .
- страница ресурсов .
- В списке проектов выберите проект, который хотите удалить, и нажмите кнопку «Удалить» .
- В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить» , чтобы удалить проект.
9. Поздравляем!
Поздравляем! Объединив возможности нашей собственной аналитической системы с интуитивно понятным интерфейсом Agent Builder, мы создали интеллектуального помощника для розничной торговли, который предоставляет персонализированные услуги, точно отвечает на вопросы и, в конечном итоге, повышает удовлетворенность клиентов и объемы продаж. Благодаря сочетанию возможностей AlloyDB , Vertex AI и Vector Search , мы сделали огромный шаг вперед, сделав контекстный и векторный поиск доступным, эффективным, по-настоящему осмысленным и управляемым агентами!