Google Cloud MCP для AlloyDB для агентов искусственного интеллекта

1. Введение

23518f986c1cab33.jpeg

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

Предварительные требования

  • Базовое понимание Google Cloud и консоли.
  • Базовые навыки работы с командной строкой и Cloud Shell.

Что вы узнаете

  • Как создать кластер AlloyDB и импортировать тестовые данные
  • Как включить API доступа к данным AlloyDB
  • Как включить Google Cloud MCP для AlloyDB NL
  • Как добавить Google Cloud MCP для AlloyDB в ваш агент ADK
  • Как использовать Google Cloud MCP для AlloyDB в приложении
  • Как использовать агенты с AlloyDBMCP для аналитики

Что вам понадобится

  • Аккаунт Google Cloud и проект Google Cloud
  • Веб-браузер, такой как Chrome , поддерживающий консоль Google Cloud и Cloud Shell.

2. Настройка и требования

Настройка проекта

  1. Войдите в консоль Google Cloud . Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

Используйте личный аккаунт вместо рабочего или учебного.

  1. Создайте новый проект или используйте существующий. Чтобы создать новый проект в консоли Google Cloud, в заголовке нажмите кнопку «Выбрать проект», после чего откроется всплывающее окно.

295004821bab6a87.png

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

37d264871000675d.png

В диалоговом окне введите желаемое название проекта и выберите местоположение.

96d86d3d5655cdbe.png

  • Название проекта — это отображаемое имя участников данного проекта. Название проекта не используется API Google и может быть изменено в любое время.
  • Идентификатор проекта (Project ID) уникален для всех проектов Google Cloud и является неизменяемым (его нельзя изменить после установки). Консоль Google Cloud автоматически генерирует уникальный идентификатор, но вы можете настроить его. Если вам не нравится сгенерированный идентификатор, вы можете сгенерировать другой случайный или указать свой собственный, чтобы проверить его доступность. В большинстве практических заданий вам потребуется указать идентификатор вашего проекта, который обычно обозначается заполнителем PROJECT_ID.
  • К вашему сведению, существует третье значение — номер проекта , которое используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .

Включить выставление счетов

Создайте личный платежный аккаунт.

Если вы настроили оплату с использованием кредитов Google Cloud, этот шаг можно пропустить.

Чтобы настроить личный платежный аккаунт, перейдите сюда, чтобы включить оплату в облачной консоли.

Несколько замечаний:

  • Выполнение этой лабораторной работы должно обойтись менее чем в 3 доллара США в виде облачных ресурсов.
  • В конце этой лабораторной работы вы можете выполнить действия по удалению ресурсов, чтобы избежать дальнейших списаний средств.
  • Новые пользователи могут воспользоваться бесплатной пробной версией стоимостью 300 долларов США .

Запустить Cloud Shell

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

В консоли Google Cloud нажмите на значок Cloud Shell на панели инструментов в правом верхнем углу:

Активировать Cloud Shell

В качестве альтернативы вы можете нажать G, а затем S. Эта последовательность активирует Cloud Shell, если вы находитесь в консоли Google Cloud, или воспользуйтесь этой ссылкой .

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

Скриншот терминала Google Cloud Shell, показывающий, что среда подключена.

Эта виртуальная машина содержит все необходимые инструменты разработки. Она предоставляет постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Вся работа в этом практическом задании может выполняться в браузере. Вам не нужно ничего устанавливать.

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

Включить API

Для использования AlloyDB , Compute Engine , сетевых сервисов и Vertex AI необходимо включить соответствующие API в вашем проекте Google Cloud.

В терминале Cloud Shell убедитесь, что идентификатор вашего проекта указан правильно:

gcloud config get-value project

В ответ должен быть возвращен идентификатор вашего проекта Google.

Установите переменную среды PROJECT_ID:

PROJECT_ID=$(gcloud config get-value project)

Включите все необходимые службы:

gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       aiplatform.googleapis.com \
                       discoveryengine.googleapis.com

Ожидаемый результат

student@cloudshell:~ (test-project-001-402417)$ gcloud config set project test-project-001-402417
Updated property [core/project].
student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-14650]
student@cloudshell:~ (test-project-001-402417)$ 
student@cloudshell:~ (test-project-001-402417)$ gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       aiplatform.googleapis.com \
                       discoveryengine.googleapis.com
Operation "operations/acat.p2-4470404856-1f44ebd8-894e-4356-bea7-b84165a57442" finished successfully.

4. Развертывание AlloyDB

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

Развертывание AlloyDB с помощью автоматизированного скрипта

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

В терминале Cloud Shell выполните команду для клонирования скрипта развертывания из репозитория.

REPO_NAME="codelabs"
REPO_URL="https://github.com/GoogleCloudPlatform/$REPO_NAME"
SOURCE_DIR="alloydb-ai-mcp"

git clone --no-checkout --filter=blob:none --depth=1 $REPO_URL

cd $REPO_NAME
git sparse-checkout set $SOURCE_DIR
git checkout
cd $SOURCE_DIR

Запустите скрипт развертывания.

./deploy_alloydb.sh

Выполнение скрипта займет некоторое время — обычно около 5-7 минут. В результате он должен предоставить информацию о развернутом кластере AlloyDB. Обратите внимание, что ваш пароль будет другим — запишите его где-нибудь для дальнейшего использования .

...
<redacted>
...
Creating primary instance: alloydb-aip-01-pr (8 vCPUs for TRIAL cluster)
Operation ID: operation-1765988049916-646282264938a-bddce198-9f248715
Creating instance...done.                                                                                                                                                                                                             
----------------------------------------
Deployment Process Completed
Cluster:  alloydb-aip-01 (TRIAL)
Instance: alloydb-aip-01-pr
Region:   us-central1
Initial Password: JBBoDTgixzYwYpkF (if new cluster)
----------------------------------------
 

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

4271eb55bcc9ec84.png

5. Подготовка базы данных

Для использования функций и операторов ИИ необходимо включить интеграцию с Vertex AI, активировать API доступа к данным и создать базу данных для тестового набора данных.

Предоставьте необходимые разрешения AlloyDB

Добавьте разрешения Vertex AI для агента службы AlloyDB.

Откройте еще одну вкладку Cloud Shell, используя знак "+" вверху.

abc505ac4d41f24e.png

В новой вкладке облачной оболочки выполните:

PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
  --role="roles/discoveryengine.viewer"

Ожидаемый вывод в консоль:

student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-11039]
student@cloudshell:~ (test-project-001-402417)$ gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"
Updated IAM policy for project [test-project-001-402417].
bindings:
- members:
  - serviceAccount:service-4470404856@gcp-sa-alloydb.iam.gserviceaccount.com
  role: roles/aiplatform.user
- members:
... < redacted > 
etag: BwYIEbe_Z3U=
version: 1
 

Включить API доступа к данным

Для использования инструментов MCP, таких как execute_sql , необходимо включить API доступа к данным в кластере AlloyDB.

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

PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
curl -X PATCH \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://alloydb.googleapis.com/v1alpha/projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER/instances/$ADBCLUSTER-pr?updateMask=dataApiAccess \
 -d '{
   "dataApiAccess": "ENABLED",
 }'

Обновить флаги экземпляра

Для использования расширенных функций ИИ в AlloyDB необходимо включить некоторые флаги базы данных. После включения API доступа к данным может потребоваться несколько минут, чтобы отобразить состояние экземпляра и подготовить его к дальнейшим изменениям. Пожалуйста, проверьте статус экземпляра в консоли , чтобы убедиться, что он отмечен зеленой галочкой.

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

PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
gcloud beta alloydb instances update $ADBCLUSTER-pr \
   --database-flags=google_ml_integration.enable_model_support=on,google_ml_integration.enable_ai_query_engine=on,google_ml_integration.enable_preview_ai_functions=on \
   --region=$REGION \
   --cluster=$ADBCLUSTER \
   --project=$PROJECT_ID \
   --update-mode=FORCE_APPLY

Включить MCP

Следующий шаг — включение сервера Google Cloud MCP для AlloyDB в вашем проекте. По умолчанию MCP отключен, и это один из нескольких уровней защиты, включая аутентификацию и авторизацию IAM, API доступа к данным и роли внутри вашего кластера.

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

PROJECT_ID=$(gcloud config get-value project)
gcloud beta services mcp enable alloydb.googleapis.com \
    --project=$PROJECT_ID

Закройте вкладку, выполнив одну из команд, указанных на вкладке, например, «Выход»:

exit

Подключитесь к AlloyDB Studio

В следующих главах все команды SQL, требующие подключения к базе данных, можно выполнить в AlloyDB Studio.

Перейдите на страницу «Кластеры» в AlloyDB для Postgres .

Откройте веб-консоль вашего кластера AlloyDB, щелкнув по основному экземпляру.

1d7298e7096e7313.png

Затем нажмите на AlloyDB Studio слева:

a33131c72ad29478.png

Выберите базу данных postgres, пользователя postgres и введите пароль, указанный при создании кластера. Затем нажмите кнопку «Аутентифицировать».

Если пароль не работает или вы забыли его записать, вы можете его изменить. Инструкции по этому поводу смотрите в документации .

2fcb84f70448118c.png

Откроется интерфейс AlloyDB Studio. Чтобы выполнить команды в базе данных, щелкните вкладку "Untitled Query" справа.

6696bc771fab9983.png

Открывается интерфейс, в котором можно выполнять команды SQL.

ae34288e5bf237c7.png

Создать базу данных

Быстрый старт создания базы данных.

В редакторе AlloyDB Studio выполните следующую команду.

Создать базу данных:

CREATE DATABASE quickstart_db

Ожидаемый результат:

Statement executed successfully

Подключитесь к quickstart_db

Проверьте, создана ли ваша база данных, подключившись к ней. Переподключитесь к студии, используя кнопку для переключения пользователя/базы данных.

6f5c98f5d0b3d550.png

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

3171ebd8a95f1306.png

Это откроет новое соединение, через которое вы сможете работать с объектами из базы данных quickstart_db. Там вы сможете изучить импортированную схему и данные.

6. Пример данных

Теперь вам нужно создать объекты в базе данных и загрузить данные. Вы будете использовать вымышленный набор данных компании Cymbal Shipping. Он содержит вымышленные данные о товарах, грузовиках, запросах и рейсах грузовиков, а также вымышленных водителях.

Создать корзину хранения

Для импорта данных из нашего клонированного репозитория в базу данных AlloyDB вам потребуется использовать Google SDK (gcloud). Для этого необходимо создать хранилище (storage bucket) и предоставить доступ к нему учетной записи службы AlloyDB. В качестве альтернативы вы всегда можете попробовать сделать это через веб-консоль, как описано в документации .

В терминале Google Cloud Shell выполните следующую команду:

PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
gcloud storage buckets create gs://$PROJECT_ID-import --project=$PROJECT_ID --location=$REGION
gcloud storage buckets add-iam-policy-binding gs://$PROJECT_ID-import --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" --role=roles/storage.objectViewer

Загрузка данных

Следующий шаг — загрузка данных. Наш SQL-дамп находится в папке клонированного репозитория. Следующая команда предполагает, что вы использовали свой домашний каталог в качестве отправной точки при клонировании репозитория на предыдущем шаге при создании кластера AlloyDB.

Скопируйте сжатый дамп SQL в новый сегмент хранения:

REPO_NAME="codelabs"
SOURCE_DIR="alloydb-ai-mcp"
cd ~/$REPO_NAME/$SOURCE_DIR
gcloud storage cp ~/$REPO_NAME/$SOURCE_DIR/postgres_dump.sql.gz  gs://$PROJECT_ID-import

Затем загрузите данные в базу данных quickstart_db :

PROJECT_ID=$(gcloud config get-value project)
CLUSTER_NAME=alloydb-aip-01
REGION=us-central1
gcloud alloydb clusters import $CLUSTER_NAME  --region=us-central1 --database=quickstart_db --gcs-uri=gs://$PROJECT_ID-import/postgres_dump.sql.gz --project=$PROJECT_ID --sql

Эта команда загрузит пример набора данных в базу данных quickstart_db. Вы можете проверить таблицы и записи с помощью AlloyDB Studio.

7. Работа с агентом данных

Начнём с примера ИИ-агента, созданного с использованием Google ADK для Python, и покажем, как настроить его для работы с сервером Google Cloud MCP для AlloyDB.

Проверьте исходный код агента.

В клонированном репозитории просмотрите код агента с помощью редактора Google Cloud Shell.

REPO_NAME="codelabs"
SOURCE_DIR="alloydb-ai-mcp"
edit ~/$REPO_NAME/$SOURCE_DIR/cymbal_logistic/data_agent/agent.py

В агенте вы можете увидеть раздел для сервера Google Cloud MCP для AlloyDB. Мы указываем конечную точку в виде MCP_SERVER_URL, параметры аутентификации, идентификатор проекта и добавляем его в набор инструментов MCP.

# Google Cloud MCP Server for AlloyDB

MCP_SERVER_URL = "https://alloydb.googleapis.com/mcp"
creds, project_id = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
if not creds.valid:
    creds.refresh(GoogleAuthRequest())

print(f"Authenticated as project: {project_id}")

# 2. Configure MCP Toolset
# We use StreamableHTTPConnectionParams to pass the auth header
headers = {
    "Authorization": f"Bearer {creds.token}",
    "X-Goog-User-Project": project_id
}
    
connection_params = StreamableHTTPConnectionParams(
    url=MCP_SERVER_URL,
    headers=headers,
    timeout=300.0,
    sse_read_timeout=600.0
)

mcp_toolset = McpToolset(connection_params=connection_params)

В коде агента набор инструментов MCP включен в качестве параметра tools для агента. Также в качестве переменных для командной строки агента используются имена кластера и экземпляра, регион и база данных.

MODEL_ID = "gemini-3-flash-preview"
cluster_name="alloydb-aip-01"
instance_name="alloydb-aip-01-pr"
location="us-central1"
database_name="quickstart_db"

# Agent configuration

root_agent = Agent(
    model=MODEL_ID,
    name='root_agent',
    description='A helpful assistant for analyst requests.',
    instruction=f"""
    Answer user questions to the best of your knowledge using provided tools.
    Do not try to generate non-existent data but use the grounded data from the database.
    When you answer questions about Cymbal Logistic activity
    use the toolset to run query in the AlloyDB cluster {cluster_name} instance {instance_name} in the location {location}
    in the project {project_id} in the database {database_name}
    Use ai schema to use AI functions and models like gemini-3-flash-preview with the functions from the schema.
    """,
    tools=[mcp_toolset],
)

Сервис Google Cloud MCP для AlloyDB имеет предопределенный набор инструментов. Чтобы вывести список всех доступных инструментов, вы можете использовать команду curl в терминале консоли Cloud Shell, используя следующую команду. Актуальную информацию о сервере Google Cloud MCP для AlloyDB всегда можно найти в документации .

curl -s -X POST http://alloydb.googleapis.com/mcp \
  -H "Content-Type: application/json" \
  -d @- <<EOF | jq -r '.result.tools[].name'
{
  "id": "my_id_01",
  "jsonrpc": "2.0",
  "method": "tools/list"
}
EOF

Запустить агент

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

Для начала установим все необходимые пакеты для Python, используя менеджер пакетов uv.

REPO_NAME="codelabs"
SOURCE_DIR="alloydb-ai-mcp"
cd ~/$REPO_NAME/$SOURCE_DIR/cymbal_logistic
uv sync

После установки всех пакетов необходимо добавить файл .env в каталог агента, чтобы указать ему использовать Vertex AI для всех взаимодействий с моделями ИИ.

echo "GOOGLE_GENAI_USE_VERTEXAI=true" > data_agent/.env
echo "GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project -q)" >> data_agent/.env
echo "GOOGLE_CLOUD_LOCATION=global" >> data_agent/.env

Затем вы можете запустить агента.

uv run adk web --allow_origins 'regex:https://.*\.cloudshell\.dev'

Вы должны увидеть вывод, подобный следующему, с конечной точкой вида http://127.0.0.1:8000 .

4aa60270e31efe37.jpeg

Вы можете щелкнуть по этой ссылке в облачной оболочке, и откроется окно предварительного просмотра в отдельной вкладке браузера, где вы выберете data_agent из выпадающего списка слева.

811a5b12534432d8.jpeg

В веб-интерфейсе ADK вы можете задавать вопросы в правом нижнем углу и просматривать полный ход выполнения, включая трассировку каждого шага, справа.

8. Протестируйте AlloyDB MCP с помощью агента.

Агент позволяет задавать вопросы в свободной форме, используя естественный язык, а для ответа на них будет использовать сервер Google Cloud MCP для AlloyDB. Вопросы отображаются в правом нижнем углу, а ответ со всеми обращениями к инструментам — вверху.

8c7058ed2b8c2dd8.jpeg

Вы работаете с оперативными данными транспортной компании, которые содержат информацию о запросах на перевозку, грузовиках, водителях и рейсах, совершенных водителями. Первый вопрос касается количества рейсов, выполненных в феврале 2026 года.

В поле ввода в правом нижнем углу введите следующее и нажмите Enter.

Hello, can you tell me how many trips we've done in February this year? 

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

160d758589f025f1.jpeg

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

Согласно данным нашей базы, в феврале 2026 года было совершено 108 поездок.

Вы можете увидеть, что делает каждый вызов инструмента, щелкнув по его выполнению. Например, вот запрос, выполненный для получения результатов.

9285cfe2291e085b.jpeg

Теперь усложним запрос, попросив сравнить результаты с предыдущим месяцем.

How is it in comparison in numbers and mileage with the January?

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

In comparison to January 2026, February saw a slight decrease in both the number of trips and the total mileage:

January 2026: 114 trips with a total mileage of 185,597 km.
February 2026: 108 trips with a total mileage of 177,893 km.
This represents a decrease of 6 trips and 7,704 km in mileage for February compared to January.

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

Остановить работу агента можно, нажав ctrl+c в терминале. Закрыть вкладку браузера можно через веб-интерфейс ADK.

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

9. Пример приложения

В том же клонированном репозитории находится пример приложения для нашей логистической компании Cymbol. Приложение использует фреймворк Google Mesop на Python.

Вы можете проанализировать код приложения, открыв файл app.py в редакторе Cloud Shell.

REPO_NAME="codelabs"
SOURCE_DIR="alloydb-ai-mcp"
edit ~/$REPO_NAME/$SOURCE_DIR/cymbal_logistic/app.py

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

def run_query_sync(request_text, cluster_name, location, instance_name, database_name, project_id, session_id, summary):
    local_runner = FrontendRunner()
    
    instruction = f"""
    Answer user questions to the best of your knowledge using provided tools.
    Do not try to generate non-existent data but use the grounded data from the database.
    When you answer questions about Cymbal Logistic activity
    use the toolset to run query in the AlloyDB cluster {cluster_name} instance {instance_name} in the location {location}
    in the project {project_id} in the database {database_name}
    Use ai schema to use AI functions and models like gemini-3-flash-preview with the functions from the schema.
    """
    ...

После изучения кода нажмите кнопку «терминал», чтобы запустить и протестировать наше приложение. Приложение запустится на порту 8080. Если вы хотите изменить порт, измените команду, указав значение порта.

В облачной оболочке выполните команду.

REPO_NAME="codelabs"
SOURCE_DIR="alloydb-ai-mcp"
cd ~/$REPO_NAME/$SOURCE_DIR/cymbal_logistic
uv run mesop app.py --port=8080

Затем воспользуйтесь предварительным просмотром веб-страниц в Google Cloud Shell, перейдя по адресу http://localhost:8080

ea2315883c3e583a.jpeg

Откроется новая вкладка в браузере с интерфейсом приложения.

Установите флажок «Включить отладочный вывод» в правом верхнем углу и введите вопрос, подобный следующему.

What was the average speed for each driver last month? List top 5 fasters drivers ranking them by the average speed. Show the name, distance and average speed for each of them.

236bf33373ee8bf.jpeg

Затем нажмите кнопку Submit Request .

Агент будет работать в фоновом режиме, формируя выходные данные и отладочную информацию по всем запросам, выполненным нашим набором инструментов MCP. Проверьте запросы, чтобы увидеть рабочий процесс.

4130ea489058d102.jpeg

Вы можете проверить возможности агентов и приложения, попробовав ответить на различные аналитические вопросы.

До сих пор вы могли выполнять базовый анализ и поиск информации с помощью агента MCP. В следующей главе вы попробуете использовать более продвинутые функции AlloyDB.

10. Функции искусственного интеллекта AlloyDB

Функции искусственного интеллекта AlloyDB позволяют осуществлять интеллектуальную фильтрацию и ранжирование текстовых и мультимодальных данных (в частности, изображений) и расширяют возможности Gemini для ваших запросов. В частности, функции искусственного интеллекта AlloyDB AI.IF и AI.RANK могут использоваться в SQL-запросах наряду с обычными SQL-операторами (фильтрами, объединениями, агрегированием и т. д.).

Перед использованием функций ИИ мы рассмотрим поиск и агрегирование с помощью «классических» методов. Попробуйте выполнить следующее задание.

Can you analyze the activity for the last 5 months and evaluate drivers for the most positive customer feedbacks. Give me top 5 drivers listing names, distance and years of experience for each driver.

Программа способна найти столбец «рейтинг» в таблице с отзывами клиентов и использовать его для определения водителей с наивысшим рейтингом. Затем она использует эту информацию для получения более подробных сведений о водителях.

SELECT 
    d.first_name || ' ' || d.last_name as driver_name,
    SUM(sr.distance_km) as total_distance,
    d.experience_years,
    COUNT(cf.feedback_id) as positive_feedback_count

FROM drivers d

JOIN truck_trips tt ON d.driver_id = tt.driver_id

JOIN customer_feedback cf ON tt.trip_id = cf.trip_id

JOIN shipping_requests sr ON tt.request_id = sr.request_id

WHERE tt.arrival_time >= '2025-12-01' 
AND tt.arrival_time < '2026-05-01'
  
AND cf.rating >= 4

GROUP BY d.driver_id, d.first_name, d.last_name, d.experience_years

ORDER BY positive_feedback_count DESC, total_distance DESC

LIMIT 5;

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

операторы AI.RANK

Функция ai.rank() оценивает, насколько хорошо документ отвечает на заданный запрос. Она может использоваться для ранжирования или переранжирования результатов запроса. Подробнее об операторах можно прочитать в документации .

Измените запрос и явно укажите на необходимость использования AI.RANK в процессе анализа для оценки водителей на основе их производительности и профессионализма.

Can you find the top 5 fastest drivers in the last month and rank them by the feedback using the AI.RANK function?  Give me top drivers  names, distance, years of experience and rank for each driver.

Выполнение команды может занять немного больше времени, поскольку агенту необходимо понять, как использовать функцию AI.RANK, получить данные и применить AI.RANK для сортировки информации соответствующим образом. В итоге вы должны получить список водителей, ранжированных моделью, и список выполненных запросов.

477342ca1aaf1c13.jpeg

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

WITH fastest_drivers AS (
    SELECT 
        d.driver_id,
        d.first_name || ' ' || d.last_name as driver_name,
        d.experience_years,
        SUM(sr.distance_km) as total_distance,
        AVG(sr.distance_km / (NULLIF(EXTRACT(EPOCH 
FROM (tt.arrival_time - tt.departure_time)), 0) / 3600)) as avg_speed,
        COALESCE(STRING_AGG(cf.feedback_text, ' | '), 'No feedback') as feedbacks,
        ROW_NUMBER() OVER (
ORDER BY AVG(sr.distance_km / (NULLIF(EXTRACT(EPOCH 
FROM (tt.arrival_time - tt.departure_time)), 0) / 3600)) DESC) - 1 as row_idx
    
FROM drivers d
    
JOIN truck_trips tt ON d.driver_id = tt.driver_id
    
JOIN shipping_requests sr ON tt.request_id = sr.request_id
    LEFT 
JOIN customer_feedback cf ON tt.trip_id = cf.trip_id
    
WHERE tt.arrival_time >= '2026-04-04'
      
AND tt.arrival_time IS NOT NULL 
      
AND tt.departure_time IS NOT NULL
      
AND tt.arrival_time > tt.departure_time
    
GROUP BY d.driver_id, d.first_name, d.last_name, d.experience_years
    
ORDER BY avg_speed DESC
    
LIMIT 5
)
SELECT 
    f.driver_name,
    f.total_distance,
    f.experience_years,
    f.avg_speed,
    f.feedbacks,
    (SELECT r.score 
FROM ai.rank(
        'semantic-ranker-fast-004',
        'excellent customer service, professional, friendly, fast, 
and reliable delivery reviews',
        ARRAY[f.feedbacks],
        1
    ) r 
LIMIT 1) as feedback_score

FROM fastest_drivers f

ORDER BY feedback_score DESC;

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

На этом наша лабораторная работа завершена. Надеюсь, вы смогли пройти все примеры и научиться использовать сервис Google Cloud MCP для AlloyDB. Для того чтобы ваш MCP работал в корпоративной среде, имеет смысл комбинировать MCP с функциями NL2SQL AlloyDB, описанными в документации AlloyDB . Вы можете попробовать это, используя пример из лабораторной работы по генерации SQL-запросов для AlloyDB.

11. Очистка окружающей среды

Чтобы избежать непредвиденных расходов, рекомендуется очищать временные ресурсы. Наиболее надежный способ — удалить проект, в котором вы тестировали рабочий процесс. Но при желании можно ограничиться удалением отдельных ресурсов, таких как AlloyDB.

После завершения лабораторной работы удалите экземпляры AlloyDB и кластер.

Удалите кластер AlloyDB и все его экземпляры.

Если вы использовали пробную версию AlloyDB, не удаляйте пробный кластер, если планируете тестировать другие тестовые среды и ресурсы с его помощью. Вы не сможете создать другой пробный кластер в том же проекте.

Кластер уничтожается с помощью опции force, которая также удаляет все экземпляры, принадлежащие кластеру.

В облачной оболочке укажите переменные проекта и среды на случай, если соединение было разорвано и все предыдущие настройки были потеряны:

gcloud config set project <your project id>
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export PROJECT_ID=$(gcloud config get-value project)

Удалите кластер:

gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force

Ожидаемый вывод в консоль:

student@cloudshell:~ (test-project-001-402417)$ gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force
All of the cluster data will be lost when the cluster is deleted.

Do you want to continue (Y/n)?  Y

Operation ID: operation-1697820178429-6082890a0b570-4a72f7e4-4c5df36f
Deleting cluster...done.   

Удалить резервные копии AlloyDB

Удалите все резервные копии AlloyDB для кластера:

for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done

Ожидаемый вывод в консоль:

student@cloudshell:~ (test-project-001-402417)$ for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done
Operation ID: operation-1697826266108-60829fb7b5258-7f99dc0b-99f3c35f
Deleting backup...done.                                                                                                                                                                                                                                                            

12. Поздравляем!

Поздравляем с завершением практического занятия!

Что мы рассмотрели

  • Как создать кластер AlloyDB и импортировать тестовые данные
  • Как включить API доступа к данным AlloyDB
  • Как включить Google Cloud MCP для AlloyDB NL
  • Как добавить Google Cloud MCP для AlloyDB в ваш агент ADK
  • Как использовать Google Cloud MCP для AlloyDB в приложении
  • Как использовать агенты с AlloyDBMCP для аналитики

13. Опрос

Выход:

Как вы будете использовать этот учебный материал?

Прочитайте только до конца. Прочитайте текст и выполните упражнения.