Google Cloud MCP dla AlloyDB na potrzeby agentów AI

1. Wprowadzenie

23518f986c1cab33.jpeg

To ćwiczenie zawiera przewodnik po rozpoczęciu korzystania z serwera MCP Google Cloud dla AlloyDB, włączeniu go jako części zestawu narzędzi dla agenta AI i używaniu go jako części aplikacji.

Wymagania wstępne

  • Podstawowa wiedza o Google Cloud i konsoli
  • Podstawowe umiejętności w zakresie interfejsu wiersza poleceń i Cloud Shell

Czego się nauczysz

  • Jak utworzyć klaster AlloyDB i zaimportować przykładowe dane
  • Jak włączyć interfejs API dostępu do danych AlloyDB
  • Jak włączyć MCP w Google Cloud dla AlloyDB NL
  • Dodawanie narzędzia Google Cloud MCP dla AlloyDB do agenta ADK
  • Jak używać Google Cloud MCP w przypadku AlloyDB w aplikacji
  • Jak używać agentów z usługą AlloyDBMCP na potrzeby analizy

Czego potrzebujesz

  • Konto Google Cloud i projekt Google Cloud
  • przeglądarka internetowa, np. Chrome, obsługująca konsolę Google Cloud i Cloud Shell;

2. Konfiguracja i wymagania

Konfiguracja projektu

  1. Zaloguj się w konsoli Google Cloud. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

Używaj konta osobistego zamiast konta służbowego lub szkolnego.

  1. Utwórz nowy projekt lub użyj istniejącego. Aby utworzyć nowy projekt w konsoli Google Cloud, w nagłówku kliknij przycisk Wybierz projekt. Otworzy się okno wyskakujące.

295004821bab6a87.png

W oknie Wybierz projekt kliknij przycisk Nowy projekt, który otworzy okno dialogowe nowego projektu.

37d264871000675d.png

W oknie dialogowym wpisz preferowaną nazwę projektu i wybierz lokalizację.

96d86d3d5655cdbe.png

  • Nazwa projektu to wyświetlana nazwa dla uczestników tego projektu. Nazwa projektu nie jest używana przez interfejsy API Google i można ją w każdej chwili zmienić.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Google Cloud automatycznie generuje unikalny identyfikator, ale możesz go dostosować. Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować kolejny losowy identyfikator lub podać własny, aby sprawdzić jego dostępność. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu, który jest zwykle oznaczony symbolem zastępczym PROJECT_ID.
  • Warto wiedzieć, że istnieje też trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.

Włącz płatności

Konfigurowanie osobistego konta rozliczeniowego

Jeśli skonfigurujesz płatności za pomocą środków w Google Cloud, możesz pominąć ten krok.

Aby skonfigurować osobiste konto rozliczeniowe, włącz płatności w konsoli Google Cloud.

Uwagi:

Uruchamianie Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym ćwiczeniu użyjesz Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

Aktywowanie Cloud Shell

Możesz też nacisnąć G, a potem S. Ta sekwencja aktywuje Cloud Shell, jeśli korzystasz z konsoli Google Cloud. Możesz też użyć tego linku.

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

Zrzut ekranu terminala Google Cloud Shell pokazujący, że środowisko zostało połączone

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce. Nie musisz niczego instalować.

3. Zanim zaczniesz

Włącz API

Aby korzystać z AlloyDB, Compute Engine, usług sieciowych i Vertex AI, musisz włączyć odpowiednie interfejsy API w projekcie Google Cloud.

W terminalu Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:

gcloud config get-value project

Powinien zwrócić identyfikator Twojego projektu Google.

Ustaw zmienną środowiskową PROJECT_ID:

PROJECT_ID=$(gcloud config get-value project)

Włącz wszystkie niezbędne usługi:

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

Oczekiwane dane wyjściowe

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. Wdrażanie AlloyDB

Utwórz klaster AlloyDB i instancję główną. Możesz wdrożyć go za pomocą gotowego skryptu, który wdroży wszystkie niezbędne zasoby, lub samodzielnie, wykonując czynności opisane w dokumentacji.

Wdrażanie AlloyDB za pomocą automatycznego skryptu

W tym podejściu używamy automatycznego skryptu do wdrożenia klastra AlloyDB i podajemy niezbędne informacje, aby rozpocząć pracę z wdrożonymi zasobami.

W terminalu Cloud Shell wykonaj polecenie, aby sklonować skrypt wdrożenia z repozytorium.

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

Uruchom skrypt wdrażania.

./deploy_alloydb.sh

Wykonanie skryptu zajmie trochę czasu – zwykle około 5–7 minut. Następnie powinna wyświetlić informacje o wdrożonym klastrze AlloyDB. Pamiętaj, że hasło będzie inne. Zapisz je w bezpiecznym miejscu, aby móc z niego korzystać w przyszłości.

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

Nowy klaster i instancję podstawową możesz też zobaczyć w konsoli internetowej.

4271eb55bcc9ec84.png

5. Przygotowywanie bazy danych

Aby korzystać z funkcji i operatorów AI, musisz włączyć integrację z Vertex AI, włączyć interfejs API dostępu do danych i utworzyć bazę danych dla przykładowego zbioru danych.

Przyznawanie AlloyDB niezbędnych uprawnień

Dodaj uprawnienia Vertex AI do agenta usługi AlloyDB.

Otwórz kolejną kartę Cloud Shell, klikając znak „+” u góry.

abc505ac4d41f24e.png

Na nowej karcie Cloud Shell wykonaj to polecenie:

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"

Oczekiwane dane wyjściowe konsoli:

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
 

Włączanie interfejsu Data Access API

Aby móc korzystać z narzędzi MCP, takich jak execute_sql, musisz włączyć interfejs Data Access API w klastrze AlloyDB.

W tej samej karcie terminala wykonaj to polecenie.

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",
 }'

Aktualizowanie flag instancji

Aby korzystać z zaawansowanych funkcji AI w AlloyDB, musimy włączyć niektóre flagi bazy danych. Po włączeniu interfejsu Data Access API może minąć kilka minut, zanim instancja będzie gotowa na kolejne zmiany. Sprawdź stan instancji w konsoli, aby upewnić się, że ma zielony znacznik wyboru.

W tej samej karcie terminala wykonaj to polecenie.

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

Włącz MCP

Następnym krokiem jest włączenie serwera Google Cloud MCP dla AlloyDB w projekcie. Domyślnie MCP nie jest włączony. Jest to jedna z wielu warstw ochrony, w tym uwierzytelnianie i autoryzacja IAM, interfejs API dostępu do danych i role w klastrze.

W tej samej karcie terminala wykonaj to polecenie.

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

Zamknij kartę, wpisując na niej polecenie „exit”:

exit

Łączenie się z AlloyDB Studio

W kolejnych rozdziałach wszystkie polecenia SQL wymagające połączenia z bazą danych można wykonywać w AlloyDB Studio. T

Otwórz stronę Klastry w AlloyDB for Postgres.

Otwórz interfejs konsoli internetowej klastra AlloyDB, klikając instancję główną.

1d7298e7096e7313.png

Następnie po lewej stronie kliknij AlloyDB Studio:

a33131c72ad29478.png

Wybierz bazę danych postgres, użytkownika postgres i podaj hasło zanotowane podczas tworzenia klastra. Następnie kliknij przycisk „Uwierzytelnij”.

Jeśli hasło nie działa lub nie pamiętasz, aby je zapisać, możesz je zmienić. Instrukcje znajdziesz w dokumentacji.

2fcb84f70448118c.png

Otworzy się interfejs AlloyDB Studio. Aby uruchomić polecenia w bazie danych, kliknij kartę „Untitled Query” (Nienazwane zapytanie) po prawej stronie.

6696bc771fab9983.png

Otworzy się interfejs, w którym możesz uruchamiać polecenia SQL.

ae34288e5bf237c7.png

Utwórz bazę danych

Szybki start dotyczący tworzenia bazy danych.

W edytorze AlloyDB Studio wykonaj to polecenie.

Utwórz bazę danych:

CREATE DATABASE quickstart_db

Oczekiwane dane wyjściowe:

Statement executed successfully

Połącz się z bazą danych quickstart_db

Sprawdź, czy baza danych została utworzona, łącząc się z nią. Połącz się ponownie ze studiem, używając przycisku przełączania użytkownika lub bazy danych.

6f5c98f5d0b3d550.png

Na liście wybierz nową bazę danych quickstart_db i użyj tych samych nazwy użytkownika i hasła co wcześniej.

3171ebd8a95f1306.png

Otworzy się nowe połączenie, w którym możesz pracować z obiektami z bazy danych quickstart_db. Możesz tam sprawdzić zaimportowany schemat i dane.

6. Przykładowe dane

Teraz musisz utworzyć obiekty w bazie danych i wczytać dane. Użyjesz fikcyjnego zbioru danych firmy transportowej Cymbal Shipping. Zawiera fikcyjne dane o towarach, ciężarówkach, żądaniach i przejazdach ciężarówek, a także fikcyjnych kierowcach.

Tworzenie zasobnika na dane

Do zaimportowania danych ze sklonowanego repozytorium do bazy danych AlloyDB użyjesz pakietu Google SDK (gcloud). W tym celu musisz utworzyć zasobnik pamięci i przyznać dostęp do konta usługi AlloyDB. Możesz też spróbować zrobić to za pomocą konsoli internetowej, zgodnie z opisem w dokumentacji.

W terminalu Google Cloud Shell wykonaj to polecenie:

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

Wczytywanie danych

Następnym krokiem jest wczytanie danych. Nasz zrzut SQL znajduje się w sklonowanym folderze repozytorium. Poniższe polecenie zakłada, że podczas klonowania repozytorium w poprzednim kroku (podczas tworzenia klastra AlloyDB) jako punktu początkowego użyto katalogu domowego.

Skopiuj skompresowany zrzut SQL do nowego zasobnika pamięci:

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

Następnie wczytaj dane do bazy danych 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

Polecenie wczyta przykładowy zbiór danych do bazy danych quickstart_db. Tabele i rekordy możesz sprawdzić za pomocą AlloyDB Studio.

7. Praca z agentem danych

Zacznijmy od przykładowego agenta AI utworzonego za pomocą pakietu Google ADK dla Pythona i pokażmy, jak skonfigurować go do pracy z serwerem MCP Google Cloud dla AlloyDB.

Sprawdzanie kodu źródłowego agenta

W sklonowanym repozytorium sprawdź kod agenta za pomocą edytora Google Cloud Shell.

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

W agencie znajduje się sekcja serwera MCP Google Cloud dla AlloyDB. Podajemy punkt końcowy jako MCP_SERVER_URL, uwierzytelnianie, identyfikator projektu i dodajemy go do zestawu narzędzi 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)

W kodzie agenta zestaw narzędzi MCP jest uwzględniony jako parametr tools agenta. W prompcie agenta znajdują się też nazwy klastra i instancji, region oraz baza danych jako zmienne.

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

Usługa Google Cloud MCP dla AlloyDB ma wstępnie zdefiniowany zestaw narzędzi. Aby wyświetlić listę wszystkich dostępnych narzędzi, możesz użyć polecenia curl w terminalu konsoli Cloud Shell. Najnowsze informacje o serwerze MCP Google Cloud dla AlloyDB znajdziesz w dokumentacji.

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

Uruchamianie agenta

Teraz możesz uruchomić agenta w trybie interaktywnym za pomocą interfejsu internetowego Google ADK. Interfejs internetowy ADK to wygodny sposób na testowanie i rozwiązywanie problemów z przepływami pracy agentów.

Najpierw zainstaluj wszystkie wymagane pakiety dla Pythona za pomocą menedżera pakietów uv.

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

Po zainstalowaniu wszystkich pakietów musisz dodać do katalogu agenta plik .env, aby nakierować go na korzystanie z Vertex AI we wszystkich komunikatach z modelami 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

Następnie możesz uruchomić agenta.

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

Powinny się wyświetlić dane wyjściowe podobne do tych z punktem końcowym, np. http://127.0.0.1:8000.

4aa60270e31efe37.jpeg

Możesz kliknąć ten adres URL w powłoce w chmurze. Spowoduje to otwarcie okna podglądu na osobnej karcie przeglądarki, w którym możesz wybrać data_agent z listy rozwijanej po lewej stronie.

811a5b12534432d8.jpeg

W interfejsie ADK możesz zadawać pytania w prawym dolnym rogu i wyświetlać pełny przepływ wykonania, w tym ślady każdego kroku po prawej stronie.

8. Testowanie narzędzia MCP AlloyDB za pomocą agenta

Agent umożliwia zadawanie pytań w eksploracji swobodnej w języku naturalnym, a do udzielania odpowiedzi wykorzystuje serwer Google Cloud MCP dla AlloyDB. Pytania są publikowane w prawym dolnym rogu, a odpowiedź ze wszystkimi wywołaniami narzędzi pojawia się u góry.

8c7058ed2b8c2dd8.jpeg

Pracujesz z danymi operacyjnymi firmy kurierskiej, które zawierają informacje o prośbach o dostawę, ciężarówkach, kierowcach i trasach pokonywanych przez kierowców. Pierwsze pytanie dotyczy liczby przejazdów zrealizowanych w lutym 2026 r.

W polu do wprowadzania danych w prawym dolnym rogu wpisz poniższy tekst i naciśnij Enter.

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

Agent będzie wykonywać wiele wywołań narzędzi, aby zidentyfikować odpowiednie tabele w schemacie i strukturę tabeli, zanim wykona prawidłowe instrukcje SQL w celu uzyskania właściwych danych.

160d758589f025f1.jpeg

Ostatecznie zwróci wynik po utworzeniu odpowiedniego zapytania i wykonaniu go w bazie danych.

Z naszych danych wynika, że w lutym 2026 r. zrealizowano 108 przejazdów.

Aby sprawdzić, co robi każde wywołanie narzędzia, kliknij jego wykonanie. Na przykład oto zapytanie, które zostało wykonane, aby uzyskać nasze wyniki.

9285cfe2291e085b.jpeg

Teraz skomplikuj prośbę, prosząc o porównanie wyników z poprzednim miesiącem.

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

Zwraca wynik, wykonując różne zapytania, analizując wyniki i podając różnicę w liczbie przejazdów i przebiegu.

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.

Wypróbuj inne proste żądania za pomocą interfejsu internetowego ADK i zobacz, jak wykonuje on różne zapytania, aby uzyskać wyniki.

Zatrzymaj agenta, naciskając ctrl+c w terminalu. Możesz zamknąć kartę przeglądarki z interfejsem internetowym ADK.

Teraz możesz wypróbować przykładową aplikację i sprawdzić, jak może ona służyć jako narzędzie dla analityków danych.

9. Przykładowa aplikacja

W tym samym sklonowanym repozytorium mamy przykładową aplikację dla naszej firmy logistycznej Cymbol Logistic. Aplikacja korzysta z platformy Python Mesop od Google .

Możesz przeanalizować kod aplikacji, otwierając plik app.py w edytorze Cloud Shell.

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

W kodzie używamy funkcji, aby przekazać do agenta danych nowy prompt ze zmiennymi. Dzięki temu w interfejsie można skonfigurować wywołanie innej bazy danych lub instancji. Oto definicja funkcji i prompt.

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.
    """
    ...

Po sprawdzeniu kodu naciśnij przycisk „terminal”, aby uruchomić i przetestować aplikację. Aplikacja zostanie uruchomiona na porcie 8080. Jeśli chcesz zmienić port, dostosuj polecenie, zmieniając wartość portu.

Uruchom w Cloud Shell.

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

Następnie użyj podglądu w przeglądarce w Google Cloud Shell, klikając http://localhost:8080.

ea2315883c3e583a.jpeg

Otworzy się nowa karta przeglądarki z interfejsem aplikacji.

W prawym górnym rogu kliknij pole wyboru „Włącz dane wyjściowe debugowania” i wpisz pytanie podobne do tego poniżej.

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

Następnie naciśnij przycisk Submit Request.

Agent będzie działać za kulisami i generować dane wyjściowe oraz informacje na potrzeby debugowania ze wszystkimi zapytaniami wykonywanymi przez nasz zestaw narzędzi MCP. Sprawdź zapytania, aby zobaczyć przepływ pracy.

4130ea489058d102.jpeg

Możesz przetestować agentów i funkcje aplikacji, zadając różne pytania analityczne.

Do tej pory udało Ci się przeprowadzić podstawowe analizy i odkrywanie za pomocą agenta z MCP. W następnym rozdziale spróbujesz użyć bardziej zaawansowanych funkcji AlloyDB.

10. Funkcje AlloyDB AI

Funkcje AI w AlloyDB umożliwiają inteligentne filtrowanie i rankingowanie danych tekstowych i multimodalnych (zwłaszcza obrazów) oraz wykorzystują możliwości Gemini w zapytaniach. W szczególności funkcje AlloyDB AI AI.IF i AI.RANK mogą występować w instrukcjach SQL wraz z konwencjonalnymi operatorami SQL (filtrami, złączeniami, agregacją itp.).

Zanim użyjemy funkcji AI, sprawdzamy wyszukiwanie i agregacje za pomocą „klasycznych” metod. Wypróbuj ten prompt:

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.

Potrafi znaleźć w tabeli z opiniami klientów kolumnę „ocena” i na jej podstawie określić kierowców z najwyższą oceną. Następnie wykorzystała te informacje, aby uzyskać więcej danych o kierowcach.

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;

Ocena może jednak obejmować wszystkie parametry, które chcemy ocenić, lub nie. W tym celu możemy użyć funkcji AI w AlloyDB.

Operatory AI.RANK

Funkcja ai.rank() ocenia, jak dobrze dokument odpowiada na dane zapytanie. Może być używany do określania lub ponownego określania rankingu wyników zapytania. Więcej informacji o operatorach znajdziesz w dokumentacji.

Zmodyfikuj prośbę i poproś o wykorzystanie podczas analizy funkcji AI.RANK, aby ocenić kierowców na podstawie ich skuteczności i profesjonalizmu.

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.

Wykonanie polecenia może zająć nieco więcej czasu, ponieważ agent musi dowiedzieć się, jak używać funkcji AI.RANK, pobrać dane i zastosować funkcję AI.RANK, aby odpowiednio posortować informacje. Na końcu powinna pojawić się lista kierowców uszeregowanych według modelu oraz lista wykonanych zapytań.

477342ca1aaf1c13.jpeg

Wykonanie tego zapytania może zająć trochę czasu w zależności od ścieżki wybranej przez model. W oknie debugowania możesz zobaczyć dokładne zapytanie wykonane w celu uzyskania informacji o kierowcach.

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;

Możesz nadal testować aplikację i sprawdzać zapytania, aby zobaczyć, jak agent dochodzi do ostatecznych wyników.

To koniec modułu. Mam nadzieję, że udało Ci się zapoznać ze wszystkimi przykładami i dowiedzieć się, jak używać usługi Google Cloud MCP w przypadku AlloyDB. Aby MCP działał w przypadku przedsiębiorstw, warto połączyć go z funkcjami AlloyDB NL2SQL opisanymi w dokumentacji AlloyDB. Możesz wypróbować tę funkcję, korzystając z ćwiczeń z programowania dotyczących generowania instrukcji SQL dla AlloyDB.

11. Zwalnianie miejsca w środowisku

Aby uniknąć nieoczekiwanych opłat, warto usunąć zasoby tymczasowe. Najbardziej niezawodnym sposobem jest usunięcie projektu, w którym testowano przepływ pracy. Możesz jednak ograniczyć się, usuwając poszczególne zasoby, np. AlloyDB.

Po zakończeniu modułu zniszcz instancje i klaster AlloyDB.

Usuwanie klastra AlloyDB i wszystkich instancji

Jeśli korzystasz z wersji próbnej AlloyDB. Nie usuwaj klastra próbnego, jeśli planujesz testować inne laboratoria i zasoby przy użyciu tego klastra. Nie będzie można utworzyć kolejnego klastra próbnego w tym samym projekcie.

Klaster zostanie zniszczony z opcją force, która powoduje też usunięcie wszystkich instancji należących do klastra.

W Cloud Shell zdefiniuj projekt i zmienne środowiskowe, jeśli połączenie zostało przerwane i wszystkie poprzednie ustawienia zostały utracone:

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

Usuń klaster:

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

Oczekiwane dane wyjściowe konsoli:

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.   

Usuwanie kopii zapasowych AlloyDB

Usuń wszystkie kopie zapasowe AlloyDB dla klastra:

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

Oczekiwane dane wyjściowe konsoli:

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. Gratulacje

Gratulujemy ukończenia ćwiczenia.

Omówione zagadnienia

  • Jak utworzyć klaster AlloyDB i zaimportować przykładowe dane
  • Jak włączyć interfejs API dostępu do danych AlloyDB
  • Jak włączyć MCP w Google Cloud dla AlloyDB NL
  • Dodawanie narzędzia Google Cloud MCP dla AlloyDB do agenta ADK
  • Jak używać Google Cloud MCP w przypadku AlloyDB w aplikacji
  • Jak używać agentów z usługą AlloyDBMCP na potrzeby analizy

13. Ankieta

Dane wyjściowe:

Jak zamierzasz korzystać z tego samouczka?

Tylko przeczytaj Przeczytaj i wykonaj ćwiczenia