Google Cloud MCP for AlloyDB for AI Agents

1. 簡介

23518f986c1cab33.jpeg

本程式碼實驗室將說明如何開始使用 AlloyDB 適用的 Google Cloud MCP 伺服器,並啟用該伺服器做為 AI 代理的工具集,以及如何將該伺服器做為應用程式的一部分。

必要條件

  • 對 Google Cloud 和控制台有基本瞭解
  • 指令列介面和 Cloud Shell 的基本技能

課程內容

  • 如何建立 AlloyDB 叢集並匯入範例資料
  • 如何啟用 AlloyDB 資料存取 API
  • 如何為 AlloyDB NL 啟用 Google Cloud MCP
  • 如何將 Google Cloud MCP for AlloyDB 新增至 ADK 代理程式
  • 如何在應用程式中使用 Google Cloud MCP for AlloyDB
  • 如何搭配 AlloyDB MCP 使用代理進行分析

軟硬體需求

  • 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 來檢查是否可用。在大多數程式碼研究室中,您需要參照專案 ID,通常會以 PROJECT_ID 預留位置識別。
  • 請注意,有些 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件

啟用計費功能

設定個人帳單帳戶

如果使用 Google Cloud 抵免額設定計費,則可略過此步驟。

如要設定個人帳單帳戶,請前往這裡在 Cloud 控制台中啟用帳單功能

注意事項:

  • 完成本實驗室的 Cloud 資源費用應不到 $3 美元。
  • 您可以按照本實驗室結尾的步驟刪除資源,以免產生後續費用。
  • 新使用者可獲得價值 $300 美元的免費試用期

啟動 Cloud Shell

雖然可以透過筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是可在雲端執行的指令列環境。

Google Cloud 控制台中,點選右上角工具列的 Cloud Shell 圖示:

啟用 Cloud Shell

你也可以依序按下 G 和 S 鍵。如果您位於 Google Cloud 控制台中,或使用這個連結,這個序列會啟動 Cloud Shell。

佈建並連線至環境的作業需要一些時間才能完成。完成後,您應該會看到如下的內容:

Google Cloud Shell 終端機的螢幕截圖,顯示環境已連線

這部虛擬機器搭載各種您需要的開發工具,並提供永久的 5GB 主目錄,而且可在 Google Cloud 運作,大幅提升網路效能並強化驗證功能。您可以在瀏覽器中完成本程式碼研究室的所有作業。您不需要安裝任何軟體。

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)
----------------------------------------
 

您也可以在網頁控制台中查看新叢集和主要執行個體

4271eb55bcc9ec84.png

5. 準備資料庫

如要使用 AI 函式和運算子,請啟用 Vertex AI 整合功能、資料存取 API,並為範例資料集建立資料庫。

授予 AlloyDB 必要權限

將 Vertex AI 權限新增至 AlloyDB 服務代理。

使用頂端的「+」符號開啟另一個 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

前往 PostgreSQL 適用的 AlloyDB 的「叢集」頁面

按一下主要執行個體,開啟 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 公司資料集。其中包含貨物、卡車、要求和卡車行程的虛構資料,以及虛構的司機。

建立 Storage bucket

您將使用 Google SDK (gcloud) 將複製的存放區資料匯入 AlloyDB 資料庫,因此需要建立儲存空間值區,並將存取權授予 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 傾印檔複製到新的儲存空間 bucket:

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. 使用資料代理程式

我們將從使用 Python 適用的 Google ADK 建立的範例 AI 代理開始,說明如何設定該代理,以便與 AlloyDB 的 Google Cloud MCP 伺服器搭配使用。

檢查代理程式原始碼

在複製的存放區中,使用 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_URL、驗證、專案 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 指令,如下所示。如需 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 網頁介面提供便利的方式,可測試及排解代理的工作流程問題。

首先,請使用 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. 使用 Agent 測試 AlloyDB MCP

您可以透過自然語言以任意形式提問,代理程式會使用 Google Cloud MCP 伺服器 (適用於 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 網頁介面嘗試其他簡單要求,瞭解系統如何執行不同查詢來達成結果。

在終端機中按下 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

然後在 Google Cloud Shell 中使用網頁預覽功能,按一下 http://localhost:8080

ea2315883c3e583a.jpeg

瀏覽器會開啟新分頁,顯示應用程式介面。

按一下右上角的「Enable Debug Output」核取方塊,然後輸入類似下列的問題。

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 的強大功能應用於查詢。具體而言,SQL 陳述式中可以同時使用 AlloyDB AI 函式 AI.IF 和 AI.RANK,以及傳統 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 陳述式。

11. 清理環境

為避免產生非預期的費用,建議您清理暫時資源。最可靠的方法是刪除您用來測試工作流程的專案。但您也可以選擇刪除個別資源 (例如 AlloyDB),藉此限制用量。

完成實驗室後,請終止 AlloyDB 執行個體和叢集。

刪除 AlloyDB 叢集和所有執行個體

如果您使用過 AlloyDB 試用版,如果您打算使用試用叢集測試其他實驗室和資源,請勿刪除試用叢集。您無法在同一個專案中建立其他試用叢集。

使用 force 選項終止叢集,這也會刪除叢集中的所有執行個體。

如果連線中斷,且所有先前的設定都遺失,請在 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. 恭喜

恭喜您完成本程式碼研究室。

涵蓋內容

  • 如何建立 AlloyDB 叢集並匯入範例資料
  • 如何啟用 AlloyDB Data Access API
  • 如何為 AlloyDB NL 啟用 Google Cloud MCP
  • 如何將 Google Cloud MCP for AlloyDB 新增至 ADK 代理程式
  • 如何在應用程式中使用 Google Cloud MCP for AlloyDB
  • 如何搭配 AlloyDB MCP 使用代理進行分析

13. 問卷調查

輸出內容:

您會如何使用本教學課程?

僅閱讀內容 閱讀內容並完成練習