1. Введение
В современной розничной торговле ваши данные представляют собой разнообразную, разветвленную экосистему. У вас есть надежные данные о транзакциях (цены и запасы), «неупорядоченные» полиморфные каталоги (характеристики электроники против размеров одежды) и петабайты журналов поведения пользователей. Объединение всего этого в единый монолит не только создает технический долг, но и убивает пользовательский опыт.
В этом практическом занятии вы разработаете архитектуру мощного полиглотического решения, которое будет гармонично сочетать в себе следующие функции:
- AlloyDB : Ваша транзакционная основа для высокоскоростной обработки данных и встраивания изображений.
- MongoDB Atlas в Google Cloud : ваш гибкий, независимый от схемы уровень каталога.
- Облачное хранилище : ваш аналитический мозг для прогнозирования тенденций в реальном времени.
- BigQuery : Ваше высокоточное цифровое хранилище данных.
В чём же «секретный ингредиент»? Вы будете использовать MCP Toolbox for Databases для интеллектуальной организации и объединения источников данных, работающих на Cloud Run, в качестве семантического моста, а затем развернёте многоагентное чат-приложение с помощью Agent Development Kit (ADK) . Вы создаёте не просто строку поиска; вы создаёте интеллектуальный «мозг» для розничной торговли, который понимает контекст, учитывает ограничения и преодолевает разрыв между необработанными данными и намерениями человека.
Невыполнимый пользовательский запрос
Стандартные агенты электронной коммерции не справляются с многомерным мышлением (сочетанием отрицательных ограничений, визуального сходства и данных о наличии товаров в реальном времени). Например, обычно мне нужно общаться с розничным сайтом следующим образом:
«Привет, я планирую высокогорную фотопоездку. Покажите мне несколько влагостойких рюкзаков, похожих по стилю на AeroGlow Pro, но без кожаных элементов. Также, пожалуйста, сообщите, есть ли они в наличии и жаловались ли другие фотографы на прочность лямок в отзывах».
Почему этот запрос называется «Убийца агентов»:
- Визуальное сходство (AlloyDB + векторный поиск): "Похожий по стилю на AeroGlow Pro" требует сравнения векторных представлений изображений.
- Отрицательное ограничение (MongoDB): "Без кожи" требует фильтрации через гибкие, вложенные атрибуты, которые обычно не входят в стандартную схему SQL.
- Инвентаризация в реальном времени (AlloyDB): для отображения информации о наличии товара требуется проверка транзакции в режиме реального времени (а не устаревший поисковый индекс).
- Семантический синтез (BigQuery + многоагентная система): анализ отзывов на предмет «прочности ремешка» требует от агента оперативного обобщения неструктурированных отзывов из BigQuery.
Большинство торговых роботов, увидев «Рюкзак» и «Кожаный», покажут 10 кожаных рюкзаков. Как мы можем это предотвратить?
Потому что мы не просто сопоставляем ключевые слова. Мы используем MCP Toolbox, чтобы наши агенты могли одновременно «рассуждать» по всем этим источникам, получая транзакционную истину в AlloyDB и гибкие атрибуты в MongoDB. Давайте это построим.
Что вы будете делать
- Создайте кластер AlloyDB для хранения основных данных о продукте.
- Настройте MongoDB Atlas в Google Cloud для хранения полуструктурированных данных о товарах.
- Создайте хранилище Cloud Storage для размещения изображений товаров.
- Разверните MCP Toolbox for Databases в Cloud Run для обеспечения единообразного доступа к данным.
- Запустите ETL-процессы для загрузки данных в BigQuery для аналитики.
- Общайтесь с агентом искусственного интеллекта на естественном языке.

Предварительные требования
- Веб-браузер, например Chrome.
- Проект Google Cloud с включенной функцией выставления счетов.
- Бесплатный аккаунт MongoDB Atlas в Google Cloud.
2. Прежде чем начать
Создайте проект в Google Cloud.
- В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud .
- Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
Запустить Cloud Shell
Cloud Shell — это среда командной строки, работающая в Google Cloud и поставляемая с предустановленными необходимыми инструментами.
- В верхней части консоли Google Cloud нажмите кнопку «Активировать Cloud Shell» .
- После подключения к Cloud Shell подтвердите свою аутентификацию:
gcloud auth list - Убедитесь, что ваш проект настроен:
gcloud config get project - Если параметры вашего проекта заданы не так, как ожидалось, настройте их следующим образом:
export PROJECT_ID=<YOUR_PROJECT_ID> gcloud config set project $PROJECT_ID
Включите необходимые API.
Выполните эту команду, чтобы включить все необходимые API:
gcloud services enable \
alloydb.googleapis.com \
bigquery.googleapis.com \
storage.googleapis.com \
run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
iam.googleapis.com \
secretmanager.googleapis.com \
compute.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com
3. Настройка облачного хранилища
Облачное хранилище служит огромным хранилищем неструктурированных медиафайлов, таких как изображения товаров.
- В консоли Google Cloud перейдите в раздел Cloud Storage и нажмите «Создать корзину» .
- Присвойте своему хранилищу уникальное глобальное имя (например,
ecommerce-app-images). - Нажмите «Создать» .
- Чтобы разрешить демонстрационному приложению доступ к изображениям без аутентификации, снимите флажок « Принудительное ограничение публичного доступа к этому хранилищу» и нажмите «Подтвердить» .
- Перейдите на вкладку «Разрешения» .
- В разделе «Разрешения» нажмите «Предоставить доступ» .
- В поле «Новые участники» введите
allUsers. - В разделе «Выберите роль» выберите «Облачное хранилище» > «Пользователь объекта хранилища» .
- Нажмите «Сохранить» , а затем нажмите «Разрешить публичный доступ» , чтобы подтвердить, что вы делаете ресурс общедоступным.
Загрузите изображения-заглушки
В модуле BRK2-149-multidb-ecommerce используются изображения-заполнители для обеспечения наилучшего визуального восприятия.
- В вашей оболочке Cloud Shell клонируйте репозиторий
next-26-sessions:git clone https://github.com/GoogleCloudPlatform/next-26-sessions.git - Перейдите в папку
UploadImages:cd next-26-sessions/BRK2-149-multidb-ecommerce/UploadImages - В консоли Google Cloud перейдите в раздел Cloud Storage и нажмите Buckets .
- Щелкните по названию созданного вами хранилища.
- Нажмите «Загрузить» > «Загрузить файлы» , выберите загруженные образцы изображений и нажмите «Открыть» .
4. Настройка AlloyDB
AlloyDB служит единым источником достоверной информации для структурированных, транзакционных и критически важных данных, таких как идентификаторы товаров, названия, артикулы, цены и данные о наличии на складе. AlloyDB также обеспечивает работу ИИ-агента, предоставляя возможности поиска по сходству для рекомендаций и обработки запросов на естественном языке.
Создание кластера AlloyDB
- В консоли Google Cloud перейдите в раздел AlloyDB for PostgreSQL .
- Нажмите «Создать кластер» .
- В поле "Идентификатор кластера" введите
ecommerce-cluster. - Установите надежный пароль для пользователя
postgres. В учебных целях можно использоватьalloydb. - Для параметра «Версия базы данных» оставьте значение по умолчанию.
- В поле «Регион» выберите
us-central1(или предпочитаемый вами регион).
Настройка основного экземпляра
- В поле "Идентификатор экземпляра" введите
ecommerce-cluster-primary. - В разделе «Доступность по зонам» выберите «Одна зона» .
- В поле «Тип машины» выберите небольшой тип машины (например, N2, 4 виртуальных процессора, 32 ГБ ОЗУ).
- В разделе «Подключение по частному IP-адресу» выберите «Доступ к частным службам (PSA)» и выберите сеть
default. Если сеть по умолчанию еще не задана, нажмите «Подтвердить настройку сети» , чтобы создать ее. - В разделе «Подключение по публичному IP-адресу» установите флажок «Включить публичный IP-адрес» , чтобы инструментарий MCP корректно подключился в этом практическом задании.
- В поле «Авторизованные внешние сети» введите
0.0.0.0/0. Установите флажок «Я принимаю риски» и нажмите «Сохранить» . - Нажмите «Создать кластер» .
Примечание: Обязательно запишите свой публичный IP-адрес (он выглядит примерно так: 34.124.240.26 ).
Инициализируйте базу данных.
- В левом навигационном меню выберите AlloyDB Studio .
- В раскрывающемся списке «База данных» выберите
postgres. - Для входа в базу данных выберите «Встроенная аутентификация» .
- В поле "Имя пользователя " используйте пользователя
postgres. - В поле «Пароль» введите пароль, который вы установили ранее.
- Нажмите «Аутентифицировать» .
- В режиме редактора откройте новую вкладку с запросом без названия.
- Скопируйте следующий DDL-код и нажмите «Выполнить» :
CREATE TABLE products_core_table ( product_id UUID PRIMARY KEY, name VARCHAR(255) NOT NULL, sku VARCHAR(50) UNIQUE NOT NULL, price NUMERIC(10, 2) NOT NULL, stock INT NOT NULL ); - В Cloud Shell перейдите в папку
BRK2-149-multidb-ecommerce:cd next-26-sessions/BRK2-149-multidb-ecommerce - Откройте файл
alloydb_insert_queries.sqlв Cloud Shell и скопируйте запросы на вставку.cat alloydb_insert_queries.sql - В новой вкладке запроса без названия вставьте только операторы
INSERTи нажмите «Выполнить» . - В новой вкладке запроса без названия скопируйте следующий DDL-скрипт и нажмите «Выполнить» , чтобы создать индекс для таблицы
products_core_table:CREATE INDEX idx_products_core_sku ON products_core_table(sku);
Создайте встроенные изображения для ИИ-агента, чтобы он мог находить похожие товары.
Интеграция ИИ-агента использует векторные представления изображений для поиска похожих товаров. Эти представления генерируются с помощью модели multimodalembedding@001 и хранятся в базе данных AlloyDB. Векторные представления представляют собой 1408-мерные векторы и хранятся в столбце img_embeddings .
Прежде чем мы сможем создавать эмбеддинги, необходимо предоставить учетной записи службы AlloyDB необходимые роли для доступа к облачному хранилищу.
Предоставьте учетной записи службы AlloyDB роли для доступа к облачному хранилищу.
Мы предоставляем учетной записи службы AlloyDB роли пользователя объектов хранилища и просмотра объектов хранилища, чтобы она могла читать объекты из сегмента Cloud Storage.
- Перейдите в раздел IAM и администрирование .
- Нажмите «Предоставить доступ» .
- В поле «Новые участники» введите поисковый запрос для учетной записи службы AlloyDB. Учетная запись службы будет выглядеть примерно так:
service-991742412753@gcp-sa-alloydb.iam.gserviceaccount.com. - Нажмите « Выбрать роль» .
- Найдите и выберите роль « Пользователь объекта хранилища» .
- Нажмите «Добавить еще одну роль» и выберите роль « Просмотрщик объектов хранилища» .
- Нажмите «Добавить еще одну роль» и выберите роль пользователя Vertex AI .
- Нажмите « Сохранить ».
Включить расширения
Для создания этого приложения мы будем использовать расширения pgvector и google_ml_integration . Расширение pgvector позволяет хранить и искать векторные представления. Расширение google_ml_integration предоставляет функции, которые вы используете для доступа к конечным точкам прогнозирования Vertex AI и получения прогнозов в формате SQL. Включите эти расширения, выполнив следующие DDL-скрипты:
- В консоли Google Cloud перейдите в раздел AlloyDB for PostgreSQL .
- В левом навигационном меню выберите AlloyDB Studio .
- В режиме редактора откройте новую вкладку с запросом без названия.
- Скопируйте следующий DDL-код и нажмите «Выполнить» :
CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS google_ml_integration;
Инициализация базы данных с использованием эмбеддингов.
- Добавьте столбец img_embeddings в таблицу
products_core_table.ALTER TABLE products_core_table ADD COLUMN img_embeddings vector(1408); - Сгенерируйте векторные представления для изображений и сохраните их в столбце
img_embeddings. ЗаменятьUPDATE products_core_table SET img_embeddings = google_ml.image_embedding( model_id => 'multimodalembedding@001', image => 'gs://<STORAGE_BUCKET_NAME>/' || sku || '.jpg', mimetype => 'image/jpeg') WHERE sku IN ( SELECT sku FROM products_core_table WHERE img_embeddings IS NULL AND sku IS NOT NULL LIMIT 10 );с указанием имени вашего сегмента Cloud Storage. - Повторите предыдущий запрос не менее 5 раз, чтобы сгенерировать векторные представления изображений для всего набора, поскольку Studio имеет ограничение в 5 минут. Если запрос не выполнит свою задачу по истечении времени ожидания, измените
LIMITна5и выполните запрос еще десять раз. Этот шаг может занять несколько минут.
5. Настройте MongoDB Atlas в Google Cloud.
MongoDB хранит подробную полуструктурированную информацию о товарах, а также гибкие данные о поведении пользователей (например, клики и просмотры).
Создание кластера MongoDB
- Перейдите в MongoDB Atlas в Google Cloud и выберите бесплатный тарифный план.
- Выберите бесплатный уровень кластера и введите имя для кластера, например,
ecommerce-cluster. - Выберите Google Cloud в качестве поставщика и убедитесь, что регион соответствует вашему региону Google Cloud (например,
us-central1). - Нажмите «Создать развертывание» .
- Нажмите «Закрыть» .
Настройка доступа к сети
- В консоли Atlas перейдите в раздел «Доступ к базам данных и сети» .
- Нажмите «Список IP-адресов доступа» .
- Нажмите «Добавить IP-адрес» .
- Добавьте
0.0.0.0/0, что позволит получить доступ из любой точки мира. - Нажмите «Подтвердить» .
Создайте пользователя базы данных.
- В консоли Atlas перейдите в раздел «Доступ к базам данных и сети» .
- Нажмите «Пользователи базы данных» .
- Нажмите «Добавить нового пользователя базы данных» .
- В качестве метода аутентификации выберите «Пароль» .
- Введите имя пользователя как
store-userи пароль какstoreuser. - Нажмите «Добавить встроенную роль» , выберите «Чтение и запись в любую базу данных» .
- Нажмите «Добавить пользователя» .
Получите строку подключения.
- Перейдите в раздел База данных > Кластеры > Подключиться .
- В разделе «Подключите ваше приложение» нажмите «Драйверы» .
- Скопируйте строку подключения, показанную в разделе «Добавьте строку подключения в код вашего приложения» . Строка будет выглядеть примерно так:
Заменитеmongodb+srv://store-user:<db_password>@ecommerce-cluster.g8vaekh.mongodb.net/?appName=ecommerce-clusterdb_passwordна ваш пароль от MongoDB. В этом практическом задании этоstoreuser.
Сохраните эту строку подключения. Она понадобится вам позже для переменной среды MONGODB_CONNECTION_STRING .
Создание базы данных и коллекции
- В консоли Atlas перейдите в раздел База данных > Кластеры > Просмотр коллекций .
- Нажмите «Создать базу данных» и введите данные:
- Название базы данных:
ecommerce_db - Название коллекции:
product_details_collection
- Название базы данных:
- Нажмите «Создать базу данных» .
- В обозревателе данных выберите имя коллекции.
- Нажмите значок «Добавить данные» (+) , а затем нажмите «Вставить документ» .
- Скопируйте содержимое JSON из файла product_details_export.json и вставьте его в диалоговое окно «Вставить документ» редактора.
- Нажмите кнопку «Вставить» , чтобы вставить массив документов, и убедитесь, что добавлено 192 документа.
- В обозревателе данных нажмите кнопку «Создать коллекцию» (+) рядом с базой данных
ecommerce_db. - Введите
user_interactions_collectionв качестве имени коллекции и нажмите «Создать коллекцию» . - В обозревателе данных выберите коллекцию
user_interactions_collection. - Нажмите значок «Добавить данные» (+) , а затем нажмите «Вставить документ» .
- Скопируйте содержимое JSON из файла user_interactions_export.json и вставьте его в диалоговое окно «Вставить документ» редактора.
- Нажмите «Вставить документ» .
6. Настройка BigQuery
BigQuery собирает и анализирует историю поведения пользователей для создания интеллектуальных отчетов и рекомендаций.
Создайте набор данных
- В консоли Google Cloud перейдите в раздел BigQuery .
- В панели «Проводник» рядом с идентификатором вашего проекта щелкните меню с тремя точками и выберите «Создать набор данных» .
- Введите
ecommerce_analyticsв качестве идентификатора набора данных . - Нажмите «Создать набор данных» .
Создайте таблицу аналитики.
- Откройте новый запрос в рабочей области BigQuery.
- Выполните следующий SQL-запрос, чтобы создать сводную таблицу, связывающую пользователей с взаимодействиями с продуктом:
CREATE TABLE ecommerce_analytics.user_product_interactions (
user_id STRING DEFAULT 'any user',
product_id STRING,
interaction_score INT
);
Предоставить роли учетной записи службы Compute для MCP Toolbox
Мы предоставляем роли учетной записи службы Compute, используемой для нашего Toolbox. Это делается для того, чтобы MCP Toolbox мог получить доступ к BigQuery, Secret Manager и другим облачным сервисам.
Для назначения ролей выполните следующие шаги:
- Перейдите в раздел IAM и администрирование .
- Нажмите «Предоставить доступ» .
- В поле «Новые участники» введите учетную запись службы Compute по умолчанию с именем
YOUR_PROJECT_NUMBER-compute@developer.gserviceaccount.com. ЗаменитеYOUR_PROJECT_NUMBERна номер вашего проекта Google Cloud. - Нажмите « Выбрать роль» .
- Найдите и выберите роль « Редактор данных BigQuery» .
- Нажмите «Добавить еще одну роль» и выберите роль «Пользователь заданий BigQuery» .
- Нажмите «Добавить еще одну роль» и выберите роль « Управление секретами: доступ к секретам» .
- Нажмите «Добавить еще одну роль» и выберите роль «Редактор» .
- Нажмите « Сохранить ».
7. Разберитесь в работе приложения от начала до конца.
Чтобы понять, как каждый компонент взаимодействует с другими, мы создадим простое приложение для электронной коммерции, использующее несколько баз данных и сервисов. Приложение построено на бэкенде с использованием Python (Flask) и интегрирует несколько сервисов и баз данных Google Cloud.
Разберитесь в структуре каталогов.
В следующем разделе вы клонируете репозиторий BRK2-149-multidb-ecommerce и используете его для локального запуска приложения. После локального тестирования приложения мы развернем MCP Toolbox и приложение в Cloud Run.
Просмотрите загруженные файлы в этой директории. Здесь присутствуют следующие директории верхнего уровня:
-
UploadImages: хранит графические ресурсы, используемые в основном для документации или визуального контента для каталога товаров электронной коммерции. -
static: хранит статические веб-ресурсы приложения, такие как файлы CSS и JavaScript, используемые для оформления и добавления интерактивности в пользовательский интерфейс (источник). -
templates: хранит HTML-шаблоны (вероятно, Jinja2 для Flask), используемые приложением на Python для динамической отрисовки веб-страниц каталога электронной коммерции (источник). -
toolbox-implementation: хранит информацию о конфигурации и реализации для инструментария Model Context Protocol (MCP), облегчая взаимодействие с несколькими базами данных с использованием предопределенных инструментов.
Файлы в этом репозитории работают вместе для создания, настройки и развертывания многобазового приложения электронной коммерции. Центральные файлы, такие как app.py управляют бэкэндом, интегрируя различные источники данных, определенные в файлах SQL и JSON, а файлы конфигурации обеспечивают бесперебойное развертывание в облачных средах:
-
app.py: организует интеграцию бэкенда Flask и нескольких баз данных. -
agentengine.py: Основная логика инициализации и настройки агентов Vertex AI. -
.env: хранит секреты для подключения к базе данных и хранилищу. -
tools.yaml: настраивает MCP Toolbox для работы с несколькими базами данных. -
Dockerfile: определяет образ контейнера и настройки среды. -
requirements.txt: содержит список библиотек Python, необходимых для работы приложения. -
tools.yaml: конфигурации для MCP Toolbox. -
Procfile: задает команды выполнения для развертывания в производственной среде. -
alloydb_insert_queries.sql: содержит SQL-запросы для работы с реляционными данными. - Файлы
product_details_export.jsonиuser_interactions_export.jsonпредоставляют примеры данных в формате JSON для баз данных NoSQL. -
README.md: содержит инструкции по настройке, развертыванию и пониманию проекта.
Сквозной поток работы приложения
- Настройка AlloyDB : Создайте высокопроизводительный кластер и используйте предоставленные SQL-скрипты для создания таблицы products_core_table с векторными столбцами для встраивания изображений.
- Настройка MongoDB Atlas : Разверните кластер в Google Cloud для хранения изменяемых атрибутов продукта в таблице product_details и регистрации кликов в реальном времени в таблице user_interactions.
- Аналитика BigQuery : Создайте набор данных для агрегирования журналов взаимодействий, позволяющий выполнять сложные аналитические запросы, которые выявляют «Топ-5» трендовых элементов среди миллионов событий.
- Облачное хранилище : Создайте общедоступный сегмент для размещения изображений продукции высокого разрешения, обеспечив доступ к каждому ресурсу через подписанный или публичный URL-адрес для пользовательского интерфейса.
- Развертывание MCP Toolbox : Разверните Toolbox в Cloud Run, создав его в качестве центрального RESTful-моста, преобразующего намерения на естественном языке в запросы к нескольким базам данных.
- Конфигурация Tools.yaml : Определите свои «инструменты» — например, get_product_core_data или get_top_5_views — сопоставляя конкретные операции SQL и NoSQL с простыми, понятными для агента именами.
- Логика бэкенда Flask : Реализуйте маршруты в файле app.py, которые взаимодействуют с MCP Toolbox, обеспечивая координацию получения данных и выступая в качестве API для пользовательского интерфейса.
- Оркестрация с использованием нескольких агентов : настройте агентов ADK в коде таким образом, чтобы они анализировали намерения пользователя, выбирая подходящий «инструмент» для решения сложных запросов к розничным ресурсам из нескольких источников.
- Интеграция с фронтендом : Создайте интерфейс index.html, включающий каталог товаров с функцией записи взаимодействий, вкладку «Аналитика» для анализа эффективности товаров и специальную вкладку «Агенты», использующую многоагентный чат ADK для обеспечения удобного диалогового взаимодействия при совершении покупок.
Теперь давайте настроим оркестрацию и развертывание.
8. Настройка MCP Toolbox и развертывание в облаке.
MCP Toolbox абстрагирует наши многочисленные источники данных, позволяя нашему приложению единообразно получать и записывать данные.
Установите MCP Toolbox локально.
- В Cloud Shell перейдите в папку
toolbox-implementation:cd next-26-sessions/BRK2-149-multidb-ecommerce/toolbox-implementation - Загрузите исполняемый файл MCP Toolbox и сделайте его исполняемым:
export VERSION=0.29.0 curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox chmod +x toolbox
Настройте файл tools.yaml
Необходимо определить абстракции для AlloyDB, MongoDB и BigQuery. Файл tools.yaml указывает панели инструментов MCP, как взаимодействовать друг с другом.
- Создайте и отредактируйте файл
tools.yamlс помощью встроенного редактора: Полный файлcloudshell edit tools.yamltools.yamlможно найти в репозитории GitHub . Скопируйте его содержимое в свой новый файлtools.yaml. - Обновите хост, пользователя, пароли, идентификаторы проектов и строки подключения в соответствии с инфраструктурой, которую вы создали на предыдущих шагах:
База данных
Поле
Пример значения
AlloyDB/BigQuery
project_idYOUR_PROJECT_IDAlloyDB
regionus-central1AlloyDB
clusterecommerce-clusterAlloyDB
instanceecommerce-cluster-primaryAlloyDB
databasepostgresAlloyDB
passwordalloydbМонгоБД
connection_stringmongodb+srv://store-user:storeuser@ecommerce-cluster.urcxr6q.mongodb.net
Предоставить роли учетной записи службы Compute для MCP Toolbox
Мы предоставляем роли учетной записи службы Compute, используемой для нашего Toolbox. Это делается для того, чтобы MCP Toolbox мог получить доступ к AlloyDB.
- Перейдите в раздел IAM и администрирование .
- Нажмите «Предоставить доступ» .
- В поле «Новые участники» введите учетную запись службы Compute по умолчанию с именем
YOUR_PROJECT_NUMBER-compute@developer.gserviceaccount.com. ЗаменитеYOUR_PROJECT_NUMBERна номер вашего проекта Google Cloud. - Нажмите « Выбрать роль» .
- Найдите и выберите роль « Редактор данных BigQuery» .
- Нажмите «Добавить еще одну роль» и выберите роль «Клиент AlloyDB» .
- Нажмите «Добавить еще одну роль» и выберите роль «Пользователь, использующий услугу» .
- Нажмите «Добавить еще одну роль» и выберите роль «Просмотрщик объектов хранилища» .
- Нажмите « Сохранить ».
Протестируйте пользовательский интерфейс вашего инструмента.
- В терминале CloudShell запустите локальную панель инструментов, чтобы отобразить пользовательский интерфейс:
./toolbox --ui - Откройте веб-предварительный просмотр в Cloud Shell на порту 5000 и перейдите на страницу инструментов. Например, в зависимости от URL-адреса вашей сессии, вы можете просмотреть его по адресу:
https://5000-cs-71152278760-default.cs-asia-southeast1-cash.cloudshell.dev/ui
Отображается следующий пользовательский интерфейс панели инструментов MCP:

Развертывание в облаке. Запуск.
Разверните MCP Toolbox в Cloud Run, чтобы сделать его доступным в качестве защищенного управляемого сервиса, который наше приложение сможет использовать для запросов к базам данных. Конфигурацию мы будем хранить в Secret Manager для защиты конфиденциальных данных подключения.
- Откройте новую сессию Cloud Shell.
- Перейдите в папку
toolbox-implementation:cd next-26-sessions/BRK2-149-multidb-ecommerce/toolbox-implementation - Загрузите конфигурационный файл
tools.yamlв Google Secret Manager: Примечание: Чтобы добавить новую версию к существующему секрету, используйте следующую команду:gcloud secrets create tools --data-file=tools.yamlgcloud secrets versions add tools --data-file=tools.yaml - Развертывание с использованием общедоступного образа контейнера MCP Toolbox:
export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:0.29.0 export PROJECT_ID=$(gcloud config get-value project) gcloud run deploy toolbox \ --image $IMAGE \ --region us-central1 \ --service-account $(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --set-secrets "/app/tools.yaml=tools:latest" \ --args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080","--ui" \ --allow-unauthenticated - После развертывания запишите предоставленный URL-адрес службы Cloud Run. Он должен выглядеть примерно так:
https://toolbox-*********-uc.a.run.app/ui.
9. Настройте приложение для электронной коммерции и разверните его в Cloud Run.
После запуска баз данных и развертывания абстракции MCP Toolbox мы можем запустить веб-приложение Flask!
Для отображения каталога продукции приложение Flask обрабатывает данные, выполняя следующие шаги:
- Получение основных данных : Извлекает полный список товаров из AlloyDB (
list_products_core). - Получить расширенные сведения : Извлекает все сведения о продукте из MongoDB (
list_all_product_details). - Объединение списков : Объединяет два списка.
- Добавить медиафайлы : добавляет URL-адрес изображения из облачного хранилища к каждому элементу.
Сгенерировать путь к приложению механизма рассуждений
Для инициализации и регистрации агента ИИ с использованием механизма логического мышления Vertex AI Reasoning Engine от Google Cloud выполните следующую команду:
- В терминале CloudShell перейдите в папку
BRK2-149-multidb-ecommerce.cd next-26-sessions/BRK2-149-multidb-ecommerce - Запустите файл requirements.txt, чтобы установить зависимости.
pip install -r requirements.txt - Запустите скрипт
agentengine.py, чтобы сгенерировать путь к приложению механизма логического вывода:python agentengine.py
Результат будет выглядеть примерно так:
projects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856
Настройте переменные среды.
- Создайте файл
.envи отредактируйте его:cloudshell edit .env - Замените значения на ваши конкретные подключения к базе данных и новый URL-адрес Cloud Run Toolbox:
# 1. MongoDB Connection String MONGODB_CONNECTION_STRING="mongodb+srv://<db_user>:<db_password>@cluster0.mongodb.net" # 2. MCP Toolbox Server Location # Must match the address where you run the toolbox server MCP_TOOLBOX_SERVER_URL="https://toolbox-*********-uc.a.run.app" # 3. Google Cloud Storage Bucket Name GCS_PRODUCT_BUCKET="ecommerce-app-images" # 4. Fallback image URL FALLBACK_IMAGE_URL="https://storage.googleapis.com/ecommerce-media-bold-circuit-492711-n9/fallback.jpg" # 5. Google Gen AI Vertex AI flag GOOGLE_GENAI_USE_VERTEXAI=TRUE # 6. Project ID PROJECT_ID=codelab-project-491117 # 7. Google Cloud Location of AlloyDB, BigQuery databases GOOGLE_CLOUD_LOCATION=us-central1 # 8. Reasoning engine application path APP_NAME=projects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856 # 9. Model ID MODEL=gemini-1.5-flash-lite
Разверните интерфейсную часть в Cloud Run.
- Для завершения архитектуры разверните веб-приложение в Cloud Run:
Замените следующие значения:gcloud run deploy polyglot --source . --platform managed \ --region us-central1 \ --allow-unauthenticated \ --set-env-vars \ MONGODB_CONNECTION_STRING="<MONGODB_CONNECTION_STRING>", \ MCP_TOOLBOX_SERVER_URL="<MCP_TOOLBOX_SERVER_URL>", \ GCS_PRODUCT_BUCKET="<GCS_PRODUCT_BUCKET>", \ FALLBACK_IMAGE_URL="<FALLBACK_IMAGE_URL>", \ GOOGLE_GENAI_USE_VERTEXAI=TRUE, \ PROJECT_ID="YOUR_PROJECT_ID", \ GOOGLE_CLOUD_LOCATION=us-central1, \ APP_NAME="<YOUR_REASONING_ENGINE_APP_PATH>", \ MODEL="gemini-1.5-flash-lite"-
YOUR_PROJECT_ID: Идентификатор вашего проекта в Google Cloud. -
YOUR_REASONING_ENGINE_APP_PATH: Вывод командыpython agentengine.py, например,projects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856. -
MCP_TOOLBOX_SERVER_URL: URL вашего сервера MCP Toolbox, например,https://toolbox-*********-uc.a.run.app. -
GCS_PRODUCT_BUCKET: Название вашего хранилища Google Cloud Storage, например,ecommerce-app-images. -
MONGODB_CONNECTION_STRING: Строка подключения к вашей базе данных MongoDB, например,mongodb+srv://store-user:storeuser@ecommerce-cluster.g8vaekh.mongodb.net -
FALLBACK_IMAGE_URL: URL резервного изображения, например,https://storage.googleapis.com/ecommerce-app-images/fallback.jpg
-
Ваше приложение запущено! Откройте предоставленный Cloud Run URL-адрес сервиса, чтобы просмотреть каталог электронной коммерции Multidb. URL-адрес будет выглядеть примерно так: https://polyglot-*********-uc.a.run.app/ .
10. Изучите приложение.
- Чтобы просмотреть все товары, нажмите «Каталог продукции» .

- Нажмите на значок товара, чтобы просмотреть подробную информацию о нем. Вы заметите, что изображения получены из Cloud Storage, подробная информация о товаре — из MongoDB, а данные о наличии товара — из AlloyDB.

- Взаимодействуйте с каталогом товаров, чтобы создавать фиктивные представления и операции записи, отправляемые в MongoDB .
- Нажмите «ETL и аналитика» , чтобы просмотреть аналитику продукта. Вы заметите, что аналитика продукта извлекается из BigQuery.

- Чтобы взаимодействовать с ИИ- агентом, нажмите вкладку «ИИ-агент». Задавайте вопросы на естественном языке, например, следующие:
I'm planning a high-altitude photography trip. Show me some weather-resistant backpacks similar in style to aero glow pro but without any leather components. Also, let me know if they are actually in stock and if other photographers have complained about the strap durability in the reviews.
Как видите, поиск выдает именно то, что мы запрашивали — рюкзак без кожаных вставок, в наличии и без нареканий на прочность лямок в отзывах.

11. Уборка
Чтобы избежать дальнейших списаний средств с вашего аккаунта Google Cloud, удалите ресурсы, созданные в ходе этого практического занятия.
Выполните следующие команды в облачной оболочке:
gcloud run services delete toolbox --region us-central1 --quiet
gcloud run services delete multi-db-app --region us-central1 --quiet
bq rm -r -f -d $PROJECT_ID:ecommerce_analytics
gcloud storage rm --recursive gs://ecommerce-app-images
gcloud alloydb clusters delete ecommerce-cluster --region us-central1 --force --quiet
При желании, чтобы удалить весь проект Google Cloud и все его ресурсы, выполните следующую команду:
gcloud projects delete $PROJECT_ID
12. Поздравляем!
Поздравляем! Вы успешно создали многобазовую архитектуру, работающую в разных облачных средах.
Вы продемонстрировали, как MCP Toolbox служит архитектурным связующим звеном для современного специализированного приложения. Подбирая подходящую базу данных для каждой задачи, вы достигли следующих результатов:
- Гибкая запись данных : MongoDB для журналов событий.
- Транзакционная согласованность : AlloyDB для обеспечения целостности ядра.
- Высокопроизводительная аналитика : BigQuery для бизнес-аналитики.
- Единая разработка : единый бэкэнд на Python, абстрагирующий всю сложность с помощью MCP Toolbox.
Справочная документация
Узнайте больше о связанных продуктах Google Cloud и изучите эти практические задания:
- AlloyDB AI: Начало работы с векторными представлениями в AlloyDB AI
- AlloyDB AI: Мультимодальные встраивания в AlloyDB
- MCP Toolbox: Установка и настройка MCP Toolbox для баз данных на AlloyDB
Для получения более подробной информации об используемых в этом практическом занятии продуктах см.: