Создайте интеллектуальный каталог товаров для электронной коммерции с поддержкой сохранения данных в нескольких базах данных.

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.

  1. В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud .
  2. Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .

Запустить Cloud Shell

Cloud Shell — это среда командной строки, работающая в Google Cloud и поставляемая с предустановленными необходимыми инструментами.

  1. В верхней части консоли Google Cloud нажмите кнопку «Активировать Cloud Shell» .
  2. После подключения к Cloud Shell подтвердите свою аутентификацию:
    gcloud auth list
    
  3. Убедитесь, что ваш проект настроен:
    gcloud config get project
    
  4. Если параметры вашего проекта заданы не так, как ожидалось, настройте их следующим образом:
    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. Настройка облачного хранилища

Облачное хранилище служит огромным хранилищем неструктурированных медиафайлов, таких как изображения товаров.

  1. В консоли Google Cloud перейдите в раздел Cloud Storage и нажмите «Создать корзину» .
  2. Присвойте своему хранилищу уникальное глобальное имя (например, ecommerce-app-images ).
  3. Нажмите «Создать» .
  4. Чтобы разрешить демонстрационному приложению доступ к изображениям без аутентификации, снимите флажок « Принудительное ограничение публичного доступа к этому хранилищу» и нажмите «Подтвердить» .
  5. Перейдите на вкладку «Разрешения» .
  6. В разделе «Разрешения» нажмите «Предоставить доступ» .
  7. В поле «Новые участники» введите allUsers .
  8. В разделе «Выберите роль» выберите «Облачное хранилище» > «Пользователь объекта хранилища» .
  9. Нажмите «Сохранить» , а затем нажмите «Разрешить публичный доступ» , чтобы подтвердить, что вы делаете ресурс общедоступным.

Загрузите изображения-заглушки

В модуле BRK2-149-multidb-ecommerce используются изображения-заполнители для обеспечения наилучшего визуального восприятия.

  1. В вашей оболочке Cloud Shell клонируйте репозиторий next-26-sessions :
    git clone https://github.com/GoogleCloudPlatform/next-26-sessions.git
    
  2. Перейдите в папку UploadImages :
    cd next-26-sessions/BRK2-149-multidb-ecommerce/UploadImages
    
  3. В консоли Google Cloud перейдите в раздел Cloud Storage и нажмите Buckets .
  4. Щелкните по названию созданного вами хранилища.
  5. Нажмите «Загрузить» > «Загрузить файлы» , выберите загруженные образцы изображений и нажмите «Открыть» .

4. Настройка AlloyDB

AlloyDB служит единым источником достоверной информации для структурированных, транзакционных и критически важных данных, таких как идентификаторы товаров, названия, артикулы, цены и данные о наличии на складе. AlloyDB также обеспечивает работу ИИ-агента, предоставляя возможности поиска по сходству для рекомендаций и обработки запросов на естественном языке.

Создание кластера AlloyDB

  1. В консоли Google Cloud перейдите в раздел AlloyDB for PostgreSQL .
  2. Нажмите «Создать кластер» .
  3. В поле "Идентификатор кластера" введите ecommerce-cluster .
  4. Установите надежный пароль для пользователя postgres . В учебных целях можно использовать alloydb .
  5. Для параметра «Версия базы данных» оставьте значение по умолчанию.
  6. В поле «Регион» выберите us-central1 (или предпочитаемый вами регион).

Настройка основного экземпляра

  1. В поле "Идентификатор экземпляра" введите ecommerce-cluster-primary .
  2. В разделе «Доступность по зонам» выберите «Одна зона» .
  3. В поле «Тип машины» выберите небольшой тип машины (например, N2, 4 виртуальных процессора, 32 ГБ ОЗУ).
  4. В разделе «Подключение по частному IP-адресу» выберите «Доступ к частным службам (PSA)» и выберите сеть default . Если сеть по умолчанию еще не задана, нажмите «Подтвердить настройку сети» , чтобы создать ее.
  5. В разделе «Подключение по публичному IP-адресу» установите флажок «Включить публичный IP-адрес» , чтобы инструментарий MCP корректно подключился в этом практическом задании.
  6. В поле «Авторизованные внешние сети» введите 0.0.0.0/0 . Установите флажок «Я принимаю риски» и нажмите «Сохранить» .
  7. Нажмите «Создать кластер» .

Примечание: Обязательно запишите свой публичный IP-адрес (он выглядит примерно так: 34.124.240.26 ).

Инициализируйте базу данных.

  1. В левом навигационном меню выберите AlloyDB Studio .
  2. В раскрывающемся списке «База данных» выберите postgres .
  3. Для входа в базу данных выберите «Встроенная аутентификация» .
  4. В поле "Имя пользователя " используйте пользователя postgres .
  5. В поле «Пароль» введите пароль, который вы установили ранее.
  6. Нажмите «Аутентифицировать» .
  7. В режиме редактора откройте новую вкладку с запросом без названия.
  8. Скопируйте следующий 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
    );
    
  9. В Cloud Shell перейдите в папку BRK2-149-multidb-ecommerce :
    cd next-26-sessions/BRK2-149-multidb-ecommerce
    
  10. Откройте файл alloydb_insert_queries.sql в Cloud Shell и скопируйте запросы на вставку.
    cat alloydb_insert_queries.sql
    
  11. В новой вкладке запроса без названия вставьте только операторы INSERT и нажмите «Выполнить» .
  12. В новой вкладке запроса без названия скопируйте следующий 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.

  1. Перейдите в раздел IAM и администрирование .
  2. Нажмите «Предоставить доступ» .
  3. В поле «Новые участники» введите поисковый запрос для учетной записи службы AlloyDB. Учетная запись службы будет выглядеть примерно так: service-991742412753@gcp-sa-alloydb.iam.gserviceaccount.com .
  4. Нажмите « Выбрать роль» .
  5. Найдите и выберите роль « Пользователь объекта хранилища» .
  6. Нажмите «Добавить еще одну роль» и выберите роль « Просмотрщик объектов хранилища» .
  7. Нажмите «Добавить еще одну роль» и выберите роль пользователя Vertex AI .
  8. Нажмите « Сохранить ».

Включить расширения

Для создания этого приложения мы будем использовать расширения pgvector и google_ml_integration . Расширение pgvector позволяет хранить и искать векторные представления. Расширение google_ml_integration предоставляет функции, которые вы используете для доступа к конечным точкам прогнозирования Vertex AI и получения прогнозов в формате SQL. Включите эти расширения, выполнив следующие DDL-скрипты:

  1. В консоли Google Cloud перейдите в раздел AlloyDB for PostgreSQL .
  2. В левом навигационном меню выберите AlloyDB Studio .
  3. В режиме редактора откройте новую вкладку с запросом без названия.
  4. Скопируйте следующий DDL-код и нажмите «Выполнить» :
    CREATE EXTENSION IF NOT EXISTS vector;
    CREATE EXTENSION IF NOT EXISTS google_ml_integration;
    

Инициализация базы данных с использованием эмбеддингов.

  1. Добавьте столбец img_embeddings в таблицу products_core_table .
    ALTER TABLE products_core_table
    ADD COLUMN img_embeddings vector(1408);
    
  2. Сгенерируйте векторные представления для изображений и сохраните их в столбце 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.
  3. Повторите предыдущий запрос не менее 5 раз, чтобы сгенерировать векторные представления изображений для всего набора, поскольку Studio имеет ограничение в 5 минут. Если запрос не выполнит свою задачу по истечении времени ожидания, измените LIMIT на 5 и выполните запрос еще десять раз. Этот шаг может занять несколько минут.

5. Настройте MongoDB Atlas в Google Cloud.

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

Создание кластера MongoDB

  1. Перейдите в MongoDB Atlas в Google Cloud и выберите бесплатный тарифный план.
  2. Выберите бесплатный уровень кластера и введите имя для кластера, например, ecommerce-cluster .
  3. Выберите Google Cloud в качестве поставщика и убедитесь, что регион соответствует вашему региону Google Cloud (например, us-central1 ).
  4. Нажмите «Создать развертывание» .
  5. Нажмите «Закрыть» .

Настройка доступа к сети

  1. В консоли Atlas перейдите в раздел «Доступ к базам данных и сети» .
  2. Нажмите «Список IP-адресов доступа» .
  3. Нажмите «Добавить IP-адрес» .
  4. Добавьте 0.0.0.0/0 , что позволит получить доступ из любой точки мира.
  5. Нажмите «Подтвердить» .

Создайте пользователя базы данных.

  1. В консоли Atlas перейдите в раздел «Доступ к базам данных и сети» .
  2. Нажмите «Пользователи базы данных» .
  3. Нажмите «Добавить нового пользователя базы данных» .
  4. В качестве метода аутентификации выберите «Пароль» .
  5. Введите имя пользователя как store-user и пароль как storeuser .
  6. Нажмите «Добавить встроенную роль» , выберите «Чтение и запись в любую базу данных» .
  7. Нажмите «Добавить пользователя» .

Получите строку подключения.

  1. Перейдите в раздел База данных > Кластеры > Подключиться .
  2. В разделе «Подключите ваше приложение» нажмите «Драйверы» .
  3. Скопируйте строку подключения, показанную в разделе «Добавьте строку подключения в код вашего приложения» . Строка будет выглядеть примерно так:
    mongodb+srv://store-user:<db_password>@ecommerce-cluster.g8vaekh.mongodb.net/?appName=ecommerce-cluster
    
    Замените db_password на ваш пароль от MongoDB. В этом практическом задании это storeuser .

Сохраните эту строку подключения. Она понадобится вам позже для переменной среды MONGODB_CONNECTION_STRING .

Создание базы данных и коллекции

  1. В консоли Atlas перейдите в раздел База данных > Кластеры > Просмотр коллекций .
  2. Нажмите «Создать базу данных» и введите данные:
    • Название базы данных: ecommerce_db
    • Название коллекции: product_details_collection
  3. Нажмите «Создать базу данных» .
  4. В обозревателе данных выберите имя коллекции.
  5. Нажмите значок «Добавить данные» (+) , а затем нажмите «Вставить документ» .
  6. Скопируйте содержимое JSON из файла product_details_export.json и вставьте его в диалоговое окно «Вставить документ» редактора.
  7. Нажмите кнопку «Вставить» , чтобы вставить массив документов, и убедитесь, что добавлено 192 документа.
  8. В обозревателе данных нажмите кнопку «Создать коллекцию» (+) рядом с базой данных ecommerce_db .
  9. Введите user_interactions_collection в качестве имени коллекции и нажмите «Создать коллекцию» .
  10. В обозревателе данных выберите коллекцию user_interactions_collection .
  11. Нажмите значок «Добавить данные» (+) , а затем нажмите «Вставить документ» .
  12. Скопируйте содержимое JSON из файла user_interactions_export.json и вставьте его в диалоговое окно «Вставить документ» редактора.
  13. Нажмите «Вставить документ» .

6. Настройка BigQuery

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

Создайте набор данных

  1. В консоли Google Cloud перейдите в раздел BigQuery .
  2. В панели «Проводник» рядом с идентификатором вашего проекта щелкните меню с тремя точками и выберите «Создать набор данных» .
  3. Введите ecommerce_analytics в качестве идентификатора набора данных .
  4. Нажмите «Создать набор данных» .

Создайте таблицу аналитики.

  1. Откройте новый запрос в рабочей области BigQuery.
  2. Выполните следующий 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 и другим облачным сервисам.

Для назначения ролей выполните следующие шаги:

  1. Перейдите в раздел IAM и администрирование .
  2. Нажмите «Предоставить доступ» .
  3. В поле «Новые участники» введите учетную запись службы Compute по умолчанию с именем YOUR_PROJECT_NUMBER-compute@developer.gserviceaccount.com . Замените YOUR_PROJECT_NUMBER на номер вашего проекта Google Cloud.
  4. Нажмите « Выбрать роль» .
  5. Найдите и выберите роль « Редактор данных BigQuery» .
  6. Нажмите «Добавить еще одну роль» и выберите роль «Пользователь заданий BigQuery» .
  7. Нажмите «Добавить еще одну роль» и выберите роль « Управление секретами: доступ к секретам» .
  8. Нажмите «Добавить еще одну роль» и выберите роль «Редактор» .
  9. Нажмите « Сохранить ».

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 локально.

  1. В Cloud Shell перейдите в папку toolbox-implementation :
    cd next-26-sessions/BRK2-149-multidb-ecommerce/toolbox-implementation
    
  2. Загрузите исполняемый файл 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, как взаимодействовать друг с другом.

  1. Создайте и отредактируйте файл tools.yaml с помощью встроенного редактора:
    cloudshell edit tools.yaml
    
    Полный файл tools.yaml можно найти в репозитории GitHub . Скопируйте его содержимое в свой новый файл tools.yaml .
  2. Обновите хост, пользователя, пароли, идентификаторы проектов и строки подключения в соответствии с инфраструктурой, которую вы создали на предыдущих шагах:

    База данных

    Поле

    Пример значения

    AlloyDB/BigQuery

    project_id

    YOUR_PROJECT_ID

    AlloyDB

    region

    us-central1

    AlloyDB

    cluster

    ecommerce-cluster

    AlloyDB

    instance

    ecommerce-cluster-primary

    AlloyDB

    database

    postgres

    AlloyDB

    password

    alloydb

    МонгоБД

    connection_string

    mongodb+srv://store-user:storeuser@ecommerce-cluster.urcxr6q.mongodb.net

Предоставить роли учетной записи службы Compute для MCP Toolbox

Мы предоставляем роли учетной записи службы Compute, используемой для нашего Toolbox. Это делается для того, чтобы MCP Toolbox мог получить доступ к AlloyDB.

  1. Перейдите в раздел IAM и администрирование .
  2. Нажмите «Предоставить доступ» .
  3. В поле «Новые участники» введите учетную запись службы Compute по умолчанию с именем YOUR_PROJECT_NUMBER-compute@developer.gserviceaccount.com . Замените YOUR_PROJECT_NUMBER на номер вашего проекта Google Cloud.
  4. Нажмите « Выбрать роль» .
  5. Найдите и выберите роль « Редактор данных BigQuery» .
  6. Нажмите «Добавить еще одну роль» и выберите роль «Клиент AlloyDB» .
  7. Нажмите «Добавить еще одну роль» и выберите роль «Пользователь, использующий услугу» .
  8. Нажмите «Добавить еще одну роль» и выберите роль «Просмотрщик объектов хранилища» .
  9. Нажмите « Сохранить ».

Протестируйте пользовательский интерфейс вашего инструмента.

  1. В терминале CloudShell запустите локальную панель инструментов, чтобы отобразить пользовательский интерфейс:
    ./toolbox --ui
    
  2. Откройте веб-предварительный просмотр в Cloud Shell на порту 5000 и перейдите на страницу инструментов. Например, в зависимости от URL-адреса вашей сессии, вы можете просмотреть его по адресу: https://5000-cs-71152278760-default.cs-asia-southeast1-cash.cloudshell.dev/ui

Отображается следующий пользовательский интерфейс панели инструментов MCP:

Пользовательский интерфейс панели инструментов MCP

Развертывание в облаке. Запуск.

Разверните MCP Toolbox в Cloud Run, чтобы сделать его доступным в качестве защищенного управляемого сервиса, который наше приложение сможет использовать для запросов к базам данных. Конфигурацию мы будем хранить в Secret Manager для защиты конфиденциальных данных подключения.

  1. Откройте новую сессию Cloud Shell.
  2. Перейдите в папку toolbox-implementation :
    cd next-26-sessions/BRK2-149-multidb-ecommerce/toolbox-implementation
    
  3. Загрузите конфигурационный файл tools.yaml в Google Secret Manager:
    gcloud secrets create tools --data-file=tools.yaml
    
    Примечание: Чтобы добавить новую версию к существующему секрету, используйте следующую команду:
    gcloud secrets versions add tools --data-file=tools.yaml
    
  4. Развертывание с использованием общедоступного образа контейнера 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
    
  5. После развертывания запишите предоставленный URL-адрес службы Cloud Run. Он должен выглядеть примерно так: https://toolbox-*********-uc.a.run.app/ui .

9. Настройте приложение для электронной коммерции и разверните его в Cloud Run.

После запуска баз данных и развертывания абстракции MCP Toolbox мы можем запустить веб-приложение Flask!

Для отображения каталога продукции приложение Flask обрабатывает данные, выполняя следующие шаги:

  1. Получение основных данных : Извлекает полный список товаров из AlloyDB ( list_products_core ).
  2. Получить расширенные сведения : Извлекает все сведения о продукте из MongoDB ( list_all_product_details ).
  3. Объединение списков : Объединяет два списка.
  4. Добавить медиафайлы : добавляет URL-адрес изображения из облачного хранилища к каждому элементу.

Сгенерировать путь к приложению механизма рассуждений

Для инициализации и регистрации агента ИИ с использованием механизма логического мышления Vertex AI Reasoning Engine от Google Cloud выполните следующую команду:

  1. В терминале CloudShell перейдите в папку BRK2-149-multidb-ecommerce .
    cd next-26-sessions/BRK2-149-multidb-ecommerce
    
  2. Запустите файл requirements.txt, чтобы установить зависимости.
    pip install -r requirements.txt
    
  3. Запустите скрипт agentengine.py , чтобы сгенерировать путь к приложению механизма логического вывода:
    python agentengine.py
    

Результат будет выглядеть примерно так:

projects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856

Настройте переменные среды.

  1. Создайте файл .env и отредактируйте его:
    cloudshell edit .env
    
  2. Замените значения на ваши конкретные подключения к базе данных и новый 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.

  1. Для завершения архитектуры разверните веб-приложение в 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. Изучите приложение.

  1. Чтобы просмотреть все товары, нажмите «Каталог продукции» .
    Каталог продукции
  2. Нажмите на значок товара, чтобы просмотреть подробную информацию о нем. Вы заметите, что изображения получены из Cloud Storage, подробная информация о товаре — из MongoDB, а данные о наличии товара — из AlloyDB. Подробная информация о товаре
  3. Взаимодействуйте с каталогом товаров, чтобы создавать фиктивные представления и операции записи, отправляемые в MongoDB .
  4. Нажмите «ETL и аналитика» , чтобы просмотреть аналитику продукта. Вы заметите, что аналитика продукта извлекается из BigQuery.
    ETL-процессы и аналитика продуктов
  5. Чтобы взаимодействовать с ИИ- агентом, нажмите вкладку «ИИ-агент». Задавайте вопросы на естественном языке, например, следующие:
    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 и изучите эти практические задания:

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