Google Cloud MCP for AlloyDB for AI Agents

1. 简介

23518f986c1cab33.jpeg

此 Codelab 提供了有关如何开始使用 Google Cloud MCP 服务器(适用于 AlloyDB)的指南,以及如何将其作为 AI 智能体的工具集的一部分启用并将其用作应用的一部分。

前提条件

  • 对 Google Cloud 控制台有基本的了解
  • 具备命令行界面和 Cloud Shell 方面的基本技能

学习内容

  • 如何创建 AlloyDB 集群并导入示例数据
  • 如何启用 AlloyDB Data Access API
  • 如何为 AlloyDB NL 启用 Google Cloud MCP
  • 如何将 Google Cloud MCP for AlloyDB 添加到您的 ADK 代理
  • 如何在应用中使用 Google Cloud MCP for AlloyDB
  • 如何将代理与 AlloyDBMCP 搭配使用以进行分析

所需条件

  • Google Cloud 账号和 Google Cloud 项目
  • 支持 Google Cloud 控制台和 Cloud Shell 的网络浏览器,例如 Chrome

2. 设置和要求

项目设置

  1. 登录 Google Cloud 控制台。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个

请改用个人账号,而非工作账号或学校账号。

  1. 创建新项目或重复使用现有项目。如需在 Google Cloud 控制台中创建新项目,请在标题中点击“选择项目”按钮,系统随即会打开一个弹出式窗口。

295004821bab6a87.png

在“选择项目”窗口中,按“新建项目”按钮,系统随即会打开一个用于创建新项目的对话框。

37d264871000675d.png

在对话框中,输入您偏好的项目名称,然后选择位置。

96d86d3d5655cdbe.png

  • 项目名称是此项目参与者的显示名称。Google API 不会使用项目名称,并且您可以随时更改项目名称。
  • 项目 ID 在所有 Google Cloud 项目中是唯一的,并且是不可变的(一经设置便无法更改)。Google Cloud 控制台会自动生成一个唯一 ID,但您可以自定义该 ID。如果您不喜欢生成的 ID,可以生成另一个随机 ID,也可以提供自己的 ID 来检查其可用性。在大多数 Codelab 中,您都需要引用项目 ID,该 ID 通常用占位符 PROJECT_ID 标识。
  • 此外,还有第三个值,即部分 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档

启用结算功能

设置个人结算账号

如果您使用 Google Cloud 抵用金设置了结算,则可以跳过此步骤。

如需设置个人结算账号,请点击此处在 Cloud 控制台中启用结算功能

注意事项:

  • 完成本实验的 Cloud 资源费用应低于 3 美元。
  • 您可以按照本实验末尾的步骤删除资源,以避免产生更多费用。
  • 新用户符合参与 $300 USD 免费试用计划的条件。

启动 Cloud Shell

虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。

Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

激活 Cloud Shell

或者,您也可以按 G 键,然后按 S 键。如果您位于 Google Cloud 控制台中,或者使用此链接,此序列将激活 Cloud Shell。

预配和连接到环境应该只需要片刻时间。完成后,您应该会看到如下内容:

Google Cloud Shell 终端的屏幕截图,显示环境已连接

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。您在此 Codelab 中的所有工作都可以在浏览器中完成。您无需安装任何程序。

3. 准备工作

启用 API

如需使用 AlloyDBCompute Engine网络服务Vertex AI,您需要在 Google Cloud 云项目中启用它们各自的 API。

在 Cloud Shell 终端中,确保项目 ID 已设置:

gcloud config get-value project

它应返回您的 Google 项目 ID。

设置环境变量 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)
----------------------------------------
 

您还可以在 Web 控制台中看到新集群和主实例

4271eb55bcc9ec84.png

5. 准备数据库

您需要启用 Vertex AI 集成才能使用 AI 函数和运算符,启用数据访问权限 API 并为示例数据集创建数据库。

向 AlloyDB 授予必要权限

向 AlloyDB 服务代理添加 Vertex AI 权限。

使用顶部的“+”号打开另一个 Cloud Shell 标签页。

abc505ac4d41f24e.png

在新的 Cloud Shell 标签页中,执行以下命令:

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
 

启用 Data Access API

您必须在 AlloyDB 集群上启用 Data Access API,才能使用 execute_sql 等 MCP 工具。

在同一终端标签页中执行。

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 中使用高级 AI 函数,我们需要启用一些数据库标志。启用 Data Access 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

下一步是在项目中为 AlloyDB 启用 Google Cloud MCP 服务器。默认情况下,MCP 未启用,它是多层保护措施之一,其他保护措施包括 IAM 身份验证和授权、数据访问权限 API 以及集群中的角色。

在同一终端标签页中执行。

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

在标签页中执行命令“exit”,关闭该标签页:

exit

连接到 AlloyDB Studio

在以下章节中,所有需要连接到数据库的 SQL 命令都可以在 AlloyDB Studio 中执行。T

前往 AlloyDB for Postgres 中的“集群”页面

点击主实例,打开 AlloyDB 集群的 Web 控制台界面。

1d7298e7096e7313.png

然后点击左侧的 AlloyDB Studio:

a33131c72ad29478.png

选择 postgres 数据库、用户 postgres,并提供我们在创建集群时记下的密码。然后点击“验证”按钮。

如果密码无效或您忘记了密码,可以更改密码。如需了解如何执行此操作,请参阅文档

2fcb84f70448118c.png

系统会打开 AlloyDB Studio 界面。如需在数据库中运行命令,请点击右侧的“无标题查询”标签页。

6696bc771fab9983.png

系统会打开一个界面,您可以在其中运行 SQL 命令

ae34288e5bf237c7.png

创建数据库

创建数据库快速入门。

在 AlloyDB Studio 编辑器中,执行以下命令。

创建数据库:

CREATE DATABASE quickstart_db

预期输出:

Statement executed successfully

连接到 quickstart_db

通过连接到数据库来检查数据库是否已创建。使用切换用户/数据库的按钮重新连接到 Studio。

6f5c98f5d0b3d550.png

从下拉列表中选择新的 quickstart_db 数据库,并使用与之前相同的用户和密码。

3171ebd8a95f1306.png

系统将打开一个新连接,您可以在其中处理 quickstart_db 数据库中的对象。您可以在此处检查导入的架构和数据。

6. 示例数据

现在,您需要在数据库中创建对象并加载数据。您将使用虚构的 Cymbal Shipping 公司数据集。它包含有关货物、卡车、请求和卡车行程的虚构数据,以及虚构的司机。

创建存储分区

您将使用 Google SDK (gcloud) 将数据从克隆的代码库导入到 AlloyDB 数据库,为此需要创建一个存储分区并向 AlloyDB 服务账号授予访问权限。或者,您也可以始终尝试使用文档中所述的 Web 控制台来完成此操作。

在 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 for Python 创建的示例 AI 智能体入手,然后展示如何配置该智能体以使其与 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

您可以在代理中看到 AlloyDB 的 Google Cloud MCP 服务器部分。我们提供一个端点作为 MCP_SERVER_网址、身份验证、项目 ID,并将其添加到 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],
)

AlloyDB 的 Google Cloud MCP 服务具有一组预定义的工具。如果您想列出所有可用的工具,可以使用 Cloud Shell 控制台终端中的 curl 命令,如下所示。您随时可以在文档中查看 AlloyDB 的 Google Cloud MCP 服务器的最新参考信息。

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 网页界面提供了一种便捷的方式来测试和排查智能体工作流的问题。

首先,我们使用 uv 软件包管理系统为 Python 安装所有必需的软件包。

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

安装完所有软件包后,您需要在代理目录中添加一个 .env 文件,以指示代理使用 Vertex AI 与 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

您可以点击 Cloud Shell 中的相应网址,系统会在单独的浏览器标签页中打开一个预览窗口,您可以在该窗口中从左侧的下拉列表中选择 data_agent

811a5b12534432d8.jpeg

在 ADK 网页界面中,您可以在右下角发布问题,并在右侧查看完整的执行流程,包括每个步骤的轨迹。

8. 使用代理测试 AlloyDB MCP

借助该代理,您可以使用自然语言以自由形式提问,而该代理将使用 Google Cloud MCP 服务器 for AlloyDB 作为工具来回答问题。问题会发布在右下角,包含所有工具调用的答案会显示在顶部。

8c7058ed2b8c2dd8.jpeg

您正在处理一家运输公司的运营数据,其中包含有关运输请求、卡车、司机和司机完成的行程的信息。第一个问题是关于 2026 年 2 月完成的行程数。

在右下角的输入字段中,输入以下内容,然后按 Enter 键。

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

在执行正确的 SQL 语句以获取正确的数据之前,该代理将通过执行多个工具调用来识别架构中的正确表和表结构。

160d758589f025f1.jpeg

最终,在构建适当的查询并针对数据库执行该查询后,它会生成结果。

根据我们数据库中的记录,2026 年 2 月完成了 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 Web 界面发出其他简单请求,看看它如何执行不同的查询来获得结果。

在终端中按 ctrl+c 停止代理。您可以关闭包含 ADK 网页界面的浏览器标签页。

现在,您可以试用示例应用,了解如何将其用作数据分析师的工具。

9. 示例应用

在同一克隆的代码库中,我们有一个针对 Cymbol Logistic 公司的示例应用。该应用使用的是 Google Mesop Python 框架。

您可以在 Cloud Shell 编辑器中打开 app.py 文件,以分析应用代码。

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 上启动。如果您想更改端口,请调整命令并更改端口值。

在 Cloud Shell 中执行。

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

然后,点击 http://localhost:8080,在 Google Cloud Shell 中使用网页预览功能

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 AI 函数

AlloyDB AI 函数支持对文本和多模态数据(尤其是图片)进行智能过滤和排名,并将 Gemini 的强大能力引入您的查询之中。特别值得一提的是,AlloyDB AI 函数 AI.IF 和 AI.RANK 可以与常规 SQL 运算符(过滤、联接、聚合等)一同出现在 SQL 语句中。

在使用 AI 函数之前,我们先来了解一下使用“传统”方法进行的搜索和汇总。尝试使用以下提示。

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 函数。

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 与 AlloyDB 文档中介绍的 AlloyDB NL2SQL 功能结合使用。您可以尝试完成有关为 AlloyDB 生成 SQL 语句的 Codelab

11. 清理环境

为避免产生意外费用,建议您清理临时资源。最可靠的方法是删除您在其中测试工作流程的项目。不过,您也可以选择删除单个资源(例如 AlloyDB)来限制自己。

完成实验后销毁 AlloyDB 实例和集群。

删除 AlloyDB 集群和所有实例

如果您曾使用 AlloyDB 试用版。如果您计划使用试用集群测试其他实验和资源,请勿删除试用集群。您将无法在同一项目中创建其他试用集群。

系统会通过强制选项销毁集群,该选项还会删除属于该集群的所有实例。

如果您已断开连接且之前的所有设置都已丢失,请在 Cloud Shell 中定义项目和环境变量:

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. 恭喜

恭喜您完成此 Codelab。

所学内容

  • 如何创建 AlloyDB 集群并导入示例数据
  • 如何启用 AlloyDB 数据访问 API
  • 如何为 AlloyDB NL 启用 Google Cloud MCP
  • 如何将 Google Cloud MCP for AlloyDB 添加到您的 ADK 代理
  • 如何在应用中使用 Google Cloud MCP for AlloyDB
  • 如何将代理与 AlloyDBMCP 搭配使用以进行分析

13. 调查问卷

输出如下:

您打算如何使用本教程?

仅通读 阅读并完成练习