KI-Assistent für einen Sportartikel-Shop mit ADK, MCP Toolbox und AlloyDB erstellen

1. Einführung

Umfang

In diesem Codelab erfahren Sie, wie Sie einen KI-Assistenten für einen Sportartikel-Shop erstellen. Diese KI-Anwendung der nächsten Generation für Agenten, die auf ADK, MCP Toolbox und AlloyDB basiert, unterstützt Nutzer bei verschiedenen Aufgaben, darunter:

  • Produkte anhand natürlicher Sprache suchen
  • Geschäfte in der Nähe finden, in denen empfohlene Produkte gekauft werden können
  • Neue Bestellungen aufgeben
  • Vorhandene Bestellstatus prüfen
  • Bestellungen mit bevorzugten Versandarten aktualisieren

7d9b5c1b10d1c654.png

Lerninhalte

  • Bereitstellung und Befüllung einer AlloyDB for PostgreSQL-Datenbank.
  • MCP Toolbox for Databases mit Ihrer AlloyDB for PostgreSQL-Instanz einrichten.
  • Entwicklung eines KI-Agenten mit dem Agent Development Kit (ADK) zur Unterstützung bei Anfragen zu Sportgeschäften
  • Testen Sie Ihren Agenten und die MCP Toolbox for Databases in einer Cloud-Umgebung.
  • Die erweiterten Abfragefunktionen von AlloyDB für intelligente Agent-Antworten nutzen.

Voraussetzungen

Für dieses Codelab benötigen Sie Folgendes:

  • Sie verwenden den Chrome-Webbrowser.
  • Ein Gmail-Konto.
  • Google Cloud-Projekt mit aktivierter Abrechnungsfunktion

Dieses Codelab richtet sich an Entwickler aller Erfahrungsstufen, auch an Anfänger.

2. Hinweis

In diesem Abschnitt wird die Ersteinrichtung beschrieben, die in Ihrem Google Cloud-Projekt erforderlich ist, bevor Sie mit der Entwicklung des KI-Assistenten für den Sportartikel-Shop-Agent beginnen können.

Projekt erstellen

  1. Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist .
  3. Aktivieren Sie Cloud Shell, indem Sie auf diesen Link klicken. Sie können zwischen dem Cloud Shell-Terminal (zum Ausführen von Cloud-Befehlen) und dem Editor (zum Erstellen von Projekten) wechseln, indem Sie in Cloud Shell auf die entsprechende Schaltfläche klicken.

e44cf973ddf8b70f.png

  1. Wenn Sie mit Cloud Shell verbunden sind, können Sie mit dem folgenden Befehl prüfen, ob Sie bereits authentifiziert sind und das Projekt auf Ihre Projekt-ID festgelegt ist:
gcloud auth list
  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt.
gcloud config list project
  1. Legen Sie die Variable PROJECT_ID mit dem folgenden Befehl fest:
export PROJECT_ID=[YOUR_PROJECT_ID]
gcloud config set project $PROJECT_ID
  1. Aktivieren Sie die folgenden APIs, indem Sie die folgenden Befehle ausführen:
gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       vpcaccess.googleapis.com \
                       aiplatform.googleapis.com

3. AlloyDB-Instanz erstellen

In diesem Abschnitt richten Sie Ihren AlloyDB-Datenbankcluster und Ihre ‑Instanz ein und konfigurieren die erforderlichen Netzwerk- und Berechtigungseinstellungen für Ihren KI-Agenten.

Führen Sie zuerst den folgenden Befehl in Ihrem Cloud Shell-Terminal aus, um den AlloyDB-Cluster zu erstellen:

gcloud alloydb clusters create alloydb-cluster \
    --password=alloydb\
    --network=default \
    --region=us-central1 \
    --database-version=POSTGRES_16

AlloyDB nutzt private IP-Verbindungen für sicheren und leistungsstarken Zugriff. Sie müssen in Ihrer VPC einen privaten IP-Bereich zuweisen, den Google für die Dienst-Peering-Verbindung zur von Google verwalteten Dienstnetzwerkinfrastruktur verwendet. Führen Sie dazu diesen Befehl aus:

gcloud compute addresses create peering-range-for-alloydb \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="Automatically allocated IP range for service networking" \
    --network=default

Erstellen Sie als Nächstes die VPC-Dienst-Peering-Verbindung. So kann Ihr Google Cloud-VPC-Netzwerk (Virtual Private Cloud) sicher und privat mit den verwalteten Diensten von Google kommunizieren, einschließlich AlloyDB. Führen Sie dazu diesen Befehl aus:

gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=peering-range-for-alloydb \
--network=default

Erstellen Sie nun die primäre Instanz in Ihrem AlloyDB-Cluster. Dies ist der tatsächliche Datenbankendpunkt, mit dem sich Ihre Anwendungen verbinden. Führen Sie den folgenden Befehl aus, um eine AlloyDB-Instanz zu erstellen:

gcloud alloydb instances create alloydb-inst \
     --instance-type=PRIMARY \
     --cpu-count=2 \
     --region=us-central1 \
     --cluster=alloydb-cluster \
     --availability-type=ZONAL \
     --ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED

Hinweis:Das Erstellen der Instanz kann etwa 10 Minuten dauern. Warten Sie, bis dieser Vorgang abgeschlossen ist, bevor Sie fortfahren.

Vertex AI-Einbindung aktivieren

Damit Ihre AlloyDB-Instanz Vektorsuchanfragen ausführen kann, die für KI-Funktionen wie die semantische Suche unerlässlich sind, und in Vertex AI bereitgestellte Modelle aufrufen kann, müssen Sie dem AlloyDB-Dienstkonto Berechtigungen für Vertex AI gewähren.

Rufen Sie zuerst Ihre Google Cloud-Projektnummer ab, da sie für die IAM-Bindung erforderlich ist.

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
gcloud projects describe $PROJECT_ID --format="value(projectNumber)"

Erteilen Sie dann Vertex AI die Berechtigung für den AlloyDB-Dienst-Agent:

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"

Öffentliche IP-Adresse aktivieren

Zur Vorbereitung auf die folgenden Schritte aktivieren wir die öffentliche IP-Konnektivität in unserer AlloyDB-Instanz.

Rufen Sie in der Console das Suchfeld oben in der Mitte des Bildschirms auf, geben Sie „alloydb“ ein und bearbeiten Sie den Abschnitt „Public IP connectivity“ (Verbindung über öffentliche IP-Adresse). Setzen Sie ein Häkchen in das Kästchen „Öffentliche IP-Adresse aktivieren“ und geben Sie die IP-Adresse Ihrer Cloud Shell-Maschine ein.

c200ee8f8b776ed4.png

Wenn Sie die IP-Adresse Ihrer Cloud Shell-Maschine abrufen möchten, rufen Sie das Cloud Shell-Terminal auf und geben Sie den Befehl „ifconfig | grep -A 1 eth0“ ein. Ersetzen Sie im Ergebnis die letzten beiden Ziffern durch 0.0 mit der Maskengröße „/16“. Ein Beispiel dafür ist „XX.XX.0.0/16“, wobei XX für Zahlen steht.

Fügen Sie diese IP-Adresse auf der Seite zum Bearbeiten der Instanz in das Textfeld „Netzwerke“ unter „Autorisierte externe Netzwerke“ ein.

a274101902019848.png

Hinweis:Der Aktualisierungsvorgang kann bis zu 3 Minuten dauern.

4. Datenbank laden

Shop-Datenbank erstellen

Jetzt ist es an der Zeit, die Datenbank zu erstellen und die ersten Daten für Ihren Sportartikelshop zu laden.

Damit psql über Cloud Shell eine Verbindung zu Ihrer privaten AlloyDB-Instanz herstellen kann, verwenden Sie den AlloyDB Auth-Proxy. Dieses Tool stellt einen sicheren Tunnel für Ihre Verbindung zur Datenbank her. (Siehe AlloyDB Auth-Proxy)

Laden Sie den AlloyDB Auth-Proxy mit dem folgenden Befehl herunter:

wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.3/alloydb-auth-proxy.linux.amd64 -O alloydb-auth-proxy

Machen Sie es ausführbar:

chmod +x alloydb-auth-proxy

Führen Sie diesen Befehl im ersten Cloud Shell-Terminalfenster aus. Der Proxy wird im Hintergrund ausgeführt und leitet Verbindungen weiter.

./alloydb-auth-proxy "projects/$PROJECT_ID/locations/us-central1/clusters/alloydb-cluster/instances/alloydb-inst" --public-ip

Wichtig:Lassen Sie dieses Terminalfenster geöffnet und den Proxy laufen. Schließen Sie es nicht.

Öffnen Sie ein neues Terminalfenster in Cloud Shell. Klicken Sie dazu oben neben dem Tab „Cloud Shell-Terminal“ auf das Symbol +.

4495f22b29cd62e8.png

Stellen Sie mit psql eine Verbindung zur AlloyDB-Instanz her:

psql -h 127.0.0.1 -U postgres

Hinweis:Geben Sie bei Aufforderung das Passwort ein, das Sie beim Erstellen des Clusters für den Nutzer postgres festgelegt haben. Wenn Sie der Dokumentation direkt folgen, lautet das Passwort alloydb.

Erstellen Sie die Speicherdatenbank für unsere Anwendung (führen Sie die Befehle nacheinander aus):

CREATE DATABASE store;
\c store
exit

Quellcode

Klonen Sie nun das Quellcode-Repository des Codelabs. Achten Sie darauf, dass Sie sich in Ihrem Basisverzeichnis oder an einem geeigneten Ort befinden, bevor Sie den Klonvorgang starten, und führen Sie den folgenden Befehl aus:

git clone https://github.com/mtoscano84/sports-agent-adk-mcp-alloydb.git

Datenbank füllen

Rufen Sie den Ordner data des geklonten Projekts auf, um auf die Datenbank-Dumpdatei zuzugreifen.

cd sports-agent-adk-mcp-alloydb/data

Importieren Sie dann das Beispieldataset mit der Datei store_backup.sql aus dem Repository in Ihre store-Datenbank.

psql -h 127.0.0.1 -U postgres -d store -f store_backup.sql

Hinweis:Während des Imports werden möglicherweise einige WARNUNGs- und FEHLER-Meldungen angezeigt, die in diesem Codelab ignoriert werden können. Diese beziehen sich häufig auf Berechtigungen oder Objekte, die bereits vorhanden sind, wenn der Dump das vollständige Schema enthält. Sie finden einige WARNUNGEN und FEHLER, die ignoriert werden können.

5. Autorisierungsdienst einrichten

In diesem Abschnitt richten Sie den Autorisierungsdienst für Ihre Anwendung ein. Dieser Dienst ist entscheidend, um den Zugriff zu sichern und vor Prompt-Injection-Schwachstellen in Ihrem KI-Agenten zu schützen.

Zuerst fügen Sie der Tabelle users in Ihrer Datenbank store einen Beispielnutzer hinzu. Dieser Nutzer wird für die Authentifizierung in Ihrer Anwendung verwendet.

Rufen Sie die Console auf, gehen Sie zu AlloyDB, wählen Sie die primäre Instanz und dann AlloyDB Studio aus:

a15964d53b4b15e1.png

Melden Sie sich bei entsprechender Aufforderung mit den Anmeldedaten in AlloyDB Studio an, die Sie beim Einrichten des Clusters erstellt haben:

  • Nutzername: „postgres“
  • Datenbank: „store“
  • Passwort: „alloydb“

Führen Sie im SQL-Editor eine INSERT-Anweisung aus, um den Nutzer der Datenbank hinzuzufügen. Ändern Sie den Namen, den Nachnamen und die E‑Mail-Adresse.

Wichtig:

  • Behalten Sie den LOCATION-Wert aus dem Beispiel bei.
  • Verwenden Sie dieselbe E-Mail-Adresse, mit der Sie sich in der Google Cloud Console registrieren.
INSERT INTO users (user_id, first_name, last_name, Address, city, postal_code, location, email)
VALUES (10,'John', 'Doe', 'Carrer Muntaner 39', 'Barcelona', '08019', '0101000020E61000008AAE0B3F38B144401FBB0B9414780140', 'john.doe@example.com');

Als Nächstes müssen Sie den OAuth-Zustimmungsbildschirm für Ihr Projekt konfigurieren. Dieser Bildschirm wird Nutzern angezeigt, wenn Ihre Anwendung Zugriff auf ihr Google-Konto anfordert. Außerdem wird hier die Marke Ihrer Anwendung definiert.

Rufen Sie in der Console „APIs und Dienste“ > „Google OAuth Consent“ auf:

cb4db28df92abcb2.png

Geben Sie die folgenden Informationen an, um die Marke Ihrer Anwendung zu erstellen:

  • App-Name: „Sports Shopping Agent AI“
  • E‑Mail-Adresse für Nutzersupport: „YOUR_EMAIL“
  • Zielgruppe: „Extern“
  • Kontaktdaten: „YOUR_EMAIL“

Als Nächstes erstellen Sie die OAuth-Client-ID, die Ihre Frontend-Anwendung verwenden wird, um die Nutzeridentität bei Google zu bestätigen.

Prüfen Sie zuerst, ob Sie Ihre Google Cloud-Projektnummer haben. Dies ist erforderlich, um die Weiterleitungs-URIs richtig zu konfigurieren. Führen Sie den folgenden Befehl in einem Cloud Shell-Terminal aus:

Falls die Variable PROJECT_ID in diesem Cloud Shell-Terminalfenster nicht festgelegt ist, führen Sie folgenden Befehl aus:

export PROJECT_ID=[YOUR_PROJECT_ID]

Rufen Sie dann die PROJECT_NUMBER mit dem folgenden Befehl ab:

gcloud projects describe $PROJECT_ID --format="value(projectNumber)"

Rufen Sie dann „APIs und Dienste“ -> „Anmeldedaten“ -> „Anmeldedaten erstellen“ -> „OAuth-Client-ID“ auf.

45623e96d417192d.png

Verwenden Sie die folgenden Informationen, um die Anmeldedaten zu erstellen:

  • Anwendungstyp: „Webanwendung“
  • Name: „Sports Shopping Agent AI App“

Autorisierte JavaScript-Quellen:

  • URL1: https://finn-frontend-[YOUR_PROJECT_NUMBER].us-central1.run.app

Autorisierte Weiterleitungs-URIs:

  • URL1: https://finn-frontend-[YOUR_PROJECT_NUMBER].us-central1.run.app

Hinweis:Die URL https://finn-frontend-[YOUR_PROJECT_NUMBER].us-central1.run.app ist die erwartete Deployment-URL für Ihre Frontend-Anwendung, die später in diesem Codelab eingerichtet wird. Ersetzen Sie [YOUR_PROJECT_NUMBER] durch die tatsächliche Nummer, die Sie kopiert haben.

1873d292fd27f07c.png

Wichtig:Nach der Erstellung wird in einem Pop-up-Fenster Ihre OAuth-Client-ID und manchmal ein Clientschlüssel angezeigt. Bewahren Sie Ihre OAuth-Client-ID an einem sicheren Ort auf, da Sie sie in einem späteren Schritt beim Konfigurieren Ihres Front-Ends benötigen.

6. MCP ToolBox for Databases einrichten

Toolbox befindet sich zwischen dem Orchestrierungs-Framework Ihrer Anwendung und Ihrer Datenbank und bietet eine Steuerungsebene, mit der Tools geändert, verteilt oder aufgerufen werden können. Es vereinfacht die Verwaltung Ihrer Tools, da Sie Tools zentral speichern und aktualisieren können. So können Sie Tools zwischen Agents und Anwendungen freigeben und aktualisieren, ohne Ihre Anwendung neu bereitstellen zu müssen.

Da AlloyDB eine der von MCP Toolbox for Databases unterstützten Datenbanken ist und wir sie bereits im vorherigen Abschnitt bereitgestellt haben, können wir jetzt mit der Einrichtung der Toolbox fortfahren.

26596138ffc32d98.png

Zuerst richten Sie den MCP Toolbox-Server lokal in Ihrer Cloud Shell-Umgebung ein, um seine Funktionalität zu überprüfen.

  1. Wechseln Sie im Cloud Shell-Terminal zum Ordner toolbox in Ihrem geklonten Projekt-Repository:
cd sports-agent-adk-mcp-alloydb/src/toolbox
  1. Führen Sie die folgenden Befehle aus, um die Toolbox-Binärdatei herunterzuladen und ihr Ausführungsberechtigungen zu erteilen:
# see releases page for other versions
export VERSION=0.7.0

curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox

chmod +x toolbox

Hinweis:Hier wird Version 0.7.0 angegeben. Für Produktionsumgebungen sollten Sie immer die neueste stabile Version von der Seite „Toolbox-Releases“ verwenden.

  1. Rufen Sie den Cloud Shell-Editor auf. Sie können vom Terminal aus wechseln, indem Sie auf das Editorsymbol klicken.

4000e21f50fa507e.png

Im selben Verzeichnis sports-agent-adk-mcp-alloydb/src/toolbox finden Sie eine Datei namens tools.yaml. Öffnen Sie diese Datei und aktualisieren Sie die Platzhalter mit Ihrer OAuth-Client-ID und Google Cloud-Projekt-ID aus den vorherigen Schritten.

4c0008d3d0f3bcfb.png

tools.yaml

Quellen sind die verschiedenen Datenquellen, mit denen ein Tool interagieren kann. Eine Quelle ist eine Datenquelle, mit der ein Tool interagieren kann. Sie können Quellen als Map im Abschnitt „sources“ Ihrer tools.yaml-Datei definieren. Normalerweise enthält eine Quellkonfiguration alle Informationen, die für die Verbindung mit der Datenbank und die Interaktion mit ihr erforderlich sind.

Tools definieren Aktionen, die ein Agent ausführen kann, z. B. das Lesen und Schreiben in eine Quelle. Ein Tool stellt eine Aktion dar, die Ihr Agent ausführen kann, z. B. das Ausführen einer SQL-Anweisung. Sie können Tools als Map im Abschnitt „tools“ Ihrer Datei „tools.yaml“ definieren. Normalerweise benötigt ein Tool eine Quelle, auf die es sich beziehen kann.

Weitere Informationen zum Konfigurieren von „tools.yaml“ finden Sie in dieser Dokumentation.

MCP-Toolbox für Datenbanken-Server ausführen

Führen Sie den folgenden Befehl aus dem Ordner „mcp-toolbox“ aus, um den Server zu starten:

./toolbox --tools-file "tools.yaml"

Wenn Sie den Server jetzt in einem Webvorschaumodus in der Cloud öffnen, sollte der Toolbox-Server mit allen Tools unserer Anwendung ausgeführt werden.

Der MCP Toolbox-Server wird standardmäßig auf Port 5000 ausgeführt. Wir verwenden Cloud Shell, um dies zu testen.

Klicken Sie in Cloud Shell auf „Webvorschau“ (siehe unten):

2a5bc3fb3bc5056e.png

Klicken Sie auf „Port ändern“, legen Sie den Port wie unten dargestellt auf 5000 fest und klicken Sie auf „Ändern und Vorschau“.

cec224667bff2293.png

Dies sollte die folgende Ausgabe liefern:

ce4c72e5be0f44c4.png

Das MCP Toolkit for Databases enthält ein Python SDK, mit dem Sie die Tools validieren und testen können. Die Dokumentation dazu finden Sie hier. Wir überspringen das und gehen im nächsten Abschnitt direkt zum Agent Development Kit (ADK) über, in dem diese Tools verwendet werden.

Toolbox in Cloud Run bereitstellen

Damit Ihr Toolbox-Server als öffentlicher Endpunkt zugänglich ist, der in andere Anwendungen und Ihren KI-Agenten eingebunden werden kann, stellen Sie ihn in Cloud Run bereit. Eine ausführliche Anleitung zum Hosten der Toolbox in Cloud Run finden Sie hier.

Kehren Sie zum Cloud Shell-Terminal zurück und wechseln Sie zum Toolbox-Ordner:

cd sports-agent-adk-mcp-alloydb/src/toolbox

Achten Sie darauf, dass die Umgebungsvariable PROJECT_ID auf Ihre Google Cloud-Projekt-ID eingestellt ist.

export PROJECT_ID=$PROJECT_ID

Prüfen Sie als Nächstes, ob die folgenden Google Cloud-Dienste im Projekt aktiviert sind.

gcloud services enable run.googleapis.com \
                       cloudbuild.googleapis.com \
                       artifactregistry.googleapis.com \
                       iam.googleapis.com \
                       secretmanager.googleapis.com

Erstellen wir ein separates Dienstkonto, das als Identität für den Toolbox-Dienst dient, den wir in Google Cloud Run bereitstellen. Wir sorgen auch dafür, dass dieses Dienstkonto die richtigen Rollen hat, d.h. Zugriff auf Secret Manager und die Möglichkeit zur Kommunikation mit AlloyDB.

gcloud iam service-accounts create toolbox-identity

gcloud projects add-iam-policy-binding $PROJECT_ID \
   --member serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com \
   --role roles/secretmanager.secretAccessor


gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member='serviceAccount:toolbox-identity@'$PROJECT_ID'.iam.gserviceaccount.com' \
    --role='roles/alloydb.client'


gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member='serviceAccount:toolbox-identity@'$PROJECT_ID'.iam.gserviceaccount.com' \
    --role='roles/serviceusage.serviceUsageConsumer'

Anschließend laden Sie die Datei „tools.yaml“ als Secret hoch. Da wir die Toolbox in Cloud Run installieren müssen, verwenden wir das aktuelle Container-Image für die Toolbox und legen es in der IMAGE-Variablen fest.

gcloud secrets create tools --data-file=tools.yaml

export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest

Stellen Sie den Toolbox-Server mit dem folgenden Befehl in Cloud Run bereit. Mit diesem Befehl wird Ihre Anwendung in einen Container gepackt, das Dienstkonto konfiguriert, das Secret eingefügt und öffentlich zugänglich gemacht:

gcloud run deploy toolbox \
--image $IMAGE \
--service-account toolbox-identity \
--region us-central1 \
--set-secrets "/app/tools.yaml=tools:latest" \
--args="--tools_file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
--allow-unauthenticated

Dadurch sollte der Prozess zum Bereitstellen des Toolbox-Servers mit unserer konfigurierten „tools.yaml“-Datei in Cloud Run gestartet werden. Bei erfolgreicher Bereitstellung wird eine Meldung ähnlich der folgenden angezeigt:

Deploying container to Cloud Run service [toolbox] in project [sports-store-agent-ai] region [us-central1]
OK Deploying... Done.
  OK Creating Revision...
  OK Routing traffic...
  OK Setting IAM Policy...
Done.
Service [toolbox] revision [toolbox-00002-dn2] has been deployed and is serving 100 percent of traffic.
Service URL: https://toolbox-[YOUR_PROJECT_NUMBER].us-central1.run.app

Sie können jetzt die oben aufgeführte Dienst-URL im Browser aufrufen. Es sollte die Meldung „Hello World“ angezeigt werden, die wir zuvor gesehen haben. Unter der folgenden URL finden Sie eine Übersicht der verfügbaren Tools:

https://toolbox-[YOUR_PROJECT_NUMBER].us-central1.run.app/api/toolset

Sie können auch in der Google Cloud Console Cloud Run aufrufen. Der Toolbox-Dienst wird in der Liste der Dienste in Cloud Run angezeigt.

7. Auf ADK basierender Agent

In diesem Abschnitt stellen Sie Ihren KI-Agenten, der mit dem Agent Development Kit (ADK) erstellt wurde, in Cloud Run bereit.

Aktivieren Sie zuerst die erforderlichen APIs in Ihrem Projekt, um Ihren Agent in Cloud Run zu erstellen und bereitzustellen und mit Artifact Registry und Cloud Storage zu interagieren. Führen Sie im Cloud Shell-Terminal den folgenden Befehl aus:

gcloud services enable artifactregistry.googleapis.com \
                       cloudbuild.googleapis.com \
                       run.googleapis.com \
                       storage.googleapis.com

Anschließend weisen wir dem Standard-Compute-Dienstkonto in unserem Projekt die erforderlichen Berechtigungen zu. Führen Sie zuerst den folgenden Befehl in Ihrem Cloud Shell-Terminal aus, um die PROJECT_NUMBER abzurufen:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

Weisen Sie dem Standard-Compute-Dienstkonto Berechtigungen zu:

# Grant Cloud Run service account access to GCS
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/storage.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/run.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/artifactregistry.writer"

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
--role="roles/artifactregistry.repoAdmin"

# Grant Vertex AI User role to the service account
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/aiplatform.user"

# Grant Vertex AI Model User role to the service account
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/aiplatform.modelUser"

Agent mit Tools verbinden

Wir verbinden unseren Agent mit Tools. Im Kontext des ADK stellt ein Tool eine bestimmte Funktion dar, die einem KI-Agenten zur Verfügung gestellt wird, damit er Aktionen ausführen und mit der Welt interagieren kann, die über seine grundlegenden Fähigkeiten zur Textgenerierung und zum logischen Denken hinausgehen.

In unserem Fall statten wir unseren Agenten jetzt mit den Tools aus, die wir in der MCP Toolbox for Databases konfiguriert haben.

Rufen Sie mit dem Cloud Shell-Editor das Verzeichnis „sports-agent-adk-mcp-alloydb/src/backend/“ auf und bearbeiten Sie die Datei „finn_agent.py“ mit dem folgenden Code. Beachten Sie, dass wir die Cloud Run-Dienst-URL des im vorherigen Schritt bereitgestellten MCP ToolBox-Servers verwenden:

14cdb7fdcb9f6176.png

Agent in Cloud Run bereitstellen

Schließlich stellen Sie Ihren konfigurierten KI-Agent in Cloud Run bereit, sodass er über einen HTTP-Endpunkt zugänglich ist.

Erstellen Sie zuerst ein Docker-Repository in Artifact Registry, um die Container-Images Ihres Agent zu speichern. Führen Sie in Cloud Shell den folgenden Befehl aus:

gcloud artifacts repositories create finn-agent-images \
    --repository-format=docker \
    --location=us-central1 \
    --project=$PROJECT_ID \
    --description="Repository for finn-agent images"

Als Nächstes erstellen Sie das Docker-Image für Ihren Agent mit Cloud Build. Führen Sie diesen Befehl im Stammverzeichnis Ihres geklonten Projekts (sports-agent-adk-mcp-alloydb/) aus:

gcloud builds submit src/backend/ --tag us-central1-docker.pkg.dev/$PROJECT_ID/finn-agent-images/finn-agent

Stellen Sie nun den Agent-Dienst bereit. Mit diesem Befehl wird ein Cloud Run-Dienst erstellt, das Image aus Artifact Registry abgerufen und Umgebungsvariablen konfiguriert.

gcloud run deploy finn-agent \
    --image us-central1-docker.pkg.dev/$PROJECT_ID/finn-agent-images/finn-agent \
    --platform managed \
    --allow-unauthenticated \
    --region us-central1 \
    --project $PROJECT_ID --set-env-vars="GOOGLE_CLOUD_PROJECT=$PROJECT_ID,GOOGLE_CLOUD_LOCATION=us-central1,GOOGLE_GENAI_USE_VERTEXAI=TRUE"

Hinweis:Wir legen Umgebungsvariablen dynamisch fest, einschließlich GOOGLE_CLOUD_PROJECT (mit der Shell-Variablen $PROJECT_ID).

Sie sollten eine ähnliche Ausgabe erhalten, die angibt, dass Ihr Agent erfolgreich bereitgestellt wurde:

Deploying container to Cloud Run service [finn-agent] in project [sports-store-agent-ai] region [us-central1]
OK Deploying... Done.
  OK Creating Revision...
  OK Routing traffic...
  OK Setting IAM Policy...
Done.
Service [finn-agent] revision [finn-agent-00005-476] has been deployed and is serving 100 percent of traffic.
Service URL: https://finn-agent-359225437509.us-central1.run.app

Testen Sie Ihren Agent, indem Sie den folgenden curl-Befehl in Ihrem Cloud Shell-Terminal ausführen:

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"message":"Hello"}' \
  https://finn-agent-[YOUR_PROJECT_NUMBER].us-central1.run.app/chat

Die Ausgabe sollte in etwa so aussehen:

„Hallo! Ich bin Finn, dein KI‑Assistent für Sportartikel. Ich kann dir helfen, Sportprodukte, Ausrüstung und Zubehör zu finden. Was kann ich für Sie tun?

Sie haben die Bereitstellung von AlloyDB, der MCP Toolbox und Ihres mit dem ADK erstellten Agenten validiert.

8. Frontend bereitstellen

In diesem Abschnitt stellen Sie die Konversations-Benutzeroberfläche für Ihren KI-Assistenten in Cloud Run bereit. Dieses Frontend wurde mit React und JavaScript erstellt.

Vor der Bereitstellung müssen Sie den Quellcode des Frontends mit den URLs Ihres bereitgestellten Agents und Ihrer OAuth-Client-ID aktualisieren.

Rufen Sie im Cloud Shell-Editor sports-agent-adk-mcp-alloydb/src/frontend/src/pages/ auf und öffnen Sie die Datei Home.jsx. Sie müssen den Platzhalter für die Cloud Run-Dienst-URL Ihres Agents aktualisieren. Ersetzen Sie sie dann durch die Cloud Run-Dienst-URL Ihres Agenten aus dem vorherigen Schritt (z.B. https://finn-agent-[YOUR_PROJECT_NUMBER].us-central1.run.app) verwenden.

dac45857844de929.png

Rufen Sie als Nächstes sports-agent-adk-mcp-alloydb/src/frontend/src/components/ auf und öffnen Sie die Datei GoogleSignInButton.jsx. Sie aktualisieren diese Datei mit der OAuth-Client-ID, die Sie im Abschnitt „Autorisierungsdienst einrichten“ erhalten haben:

82db1e66c439a9cb.png

Frontend in Cloud Run bereitstellen

Nachdem Sie die Frontend-Anwendung konfiguriert haben, können Sie sie in Cloud Run bereitstellen.

Führen Sie den folgenden Befehl in einem Cloud Shell-Terminal aus dem Stammverzeichnis (sports-agent-adk-mcp-alloydb/) aus, um ein Docker-Repository in Artifact Registry für Ihre Frontend-Images zu erstellen.

gcloud artifacts repositories create finn-frontend-images \
    --repository-format=docker \
    --location=us-central1 \
    --project=$PROJECT_ID \
    --description="Repository for finn-frontend images"

Als Nächstes erstellen Sie mit Cloud Build das Docker-Image für Ihre Frontend-Anwendung. Führen Sie diesen Befehl im Stammverzeichnis Ihres Projekts aus:

gcloud builds submit src/frontend/ --tag us-central1-docker.pkg.dev/$PROJECT_ID/finn-frontend-images/finn-frontend

Schließlich stellen wir das Frontend mit dem folgenden Befehl in Cloud Run bereit:

gcloud run deploy finn-frontend \
    --image us-central1-docker.pkg.dev/$PROJECT_ID/finn-frontend-images/finn-frontend \
    --platform managed \
    --allow-unauthenticated \
    --region us-central1 \
    --project $PROJECT_ID

Sie sollten eine ähnliche Ausgabe erhalten, die die erfolgreiche Bereitstellung Ihres Front-Ends angibt:

Deploying container to Cloud Run service [finn-frontend] in project [sport-store-agent-ai] region [us-central1]
OK Deploying... Done.
  OK Creating Revision...
  OK Routing traffic...
  OK Setting IAM Policy...
Done.
Service [finn-frontend] revision [finn-frontend-00002-mwc] has been deployed and is serving 100 percent of traffic.
Service URL: https://finn-frontend-535807247199.us-central1.run.app

Öffnen Sie Ihren Webbrowser und verwenden Sie die Dienst-URL aus dem vorherigen Schritt, um Ihre neu bereitgestellte Anwendung zu öffnen, die von Ihrem KI-Agenten unterstützt wird.

15bdc2dfd6e47c69.png

9. Agent ausführen

Ihr KI‑Assistent „Sports Store Agent“, Finn, ist jetzt vollständig bereitgestellt und kann Ihnen bei Käufen helfen.

Öffnen Sie Ihren Webbrowser und rufen Sie die Dienst-URL Ihrer Frontend-Anwendung aus dem vorherigen Schritt auf. Die URL hat folgendes Format: https://finn-frontend-[YOUR_PROJECT_NUMBER].us-central1.run.app

Klicken Sie nach dem Laden des Frontends rechts oben auf die Schaltfläche (in der Regel mit „Anmelden“ oder einem ähnlichen Hinweis), um sich mit Ihren Google-Anmeldedaten zu authentifizieren. Bei dieser Aktion wird die OAuth-Konfiguration verwendet, die Sie zuvor eingerichtet haben.

Nach erfolgreicher Authentifizierung können Sie mit Finn interagieren. Klicken Sie auf die Schaltfläche „Jetzt einkaufen“, um mit dem Conversational Shopping zu beginnen.

2b22ae486cebff1b.png

Verwenden Sie das folgende Skript, um die verschiedenen Funktionen Ihres KI-Agents zu testen. Kopieren Sie diese Prompts und fügen Sie sie einzeln in die Chatoberfläche ein:

  1. Hallo Finn!
  2. Ich suche Laufschuhe für einen Ultratrail.
  3. Erzähl mir mehr über Ultra Glide.
  4. Setz Ultra Glide, Größe 40, Farbe Rot/Grau auf meine Einkaufsliste
  5. Zeig mir meine Einkaufsliste
  6. Geschäfte in meiner Nähe finden
  7. Bitte gib eine Bestellung für das Geschäft Sports Diagonal Mar über meine Einkaufsliste auf.
  8. Status meiner Bestellungen prüfen
  9. Bitte liste die Liefermethoden für das Geschäft Sports Diagonal Mar auf.
  10. Liefermethode für meine Bestellung [YOUR_ORDER_NUMBER] auf Expressversand umstellen
  11. Status meiner Bestellungen prüfen
  12. Danke, Finn!

Eine visuelle Demonstration des bereitgestellten Finn-Agents und seiner Funktionen finden Sie im folgenden Video:

Demo eines KI-Assistenten für Sportagenten, der auf AlloyDB basiert

10. Ergebnisse

Nachdem Sie das vorherige Skript ausgeführt haben, haben Sie die vollständige Integration Ihres ADK-Agents, seine Verbindung zu AlloyDB und die Verwendung der MCP Toolbox erfolgreich validiert. In diesem Abschnitt werden die von Ihnen implementierten Kernfunktionen hervorgehoben.

  1. Autorisierungsdienst

Die MCP Toolbox for Databases bietet die Möglichkeit, einen Autorisierungsdienst (in diesem Codelab speziell Google Sign-in) zu föderieren, um Nutzer in Ihrer Anwendung zu authentifizieren. In der MCP Toolbox wird Ihre OAuth-Client-ID verwendet, um die Nutzeridentität zu bestätigen, wenn ein Tool aufgerufen wird.

Dieser robuste Authentifizierungsmechanismus bietet eine hervorragende Lösung, um Ihre Agent-Anwendung vor Prompt Injection zu schützen. Bei dieser Art von Angriff wird versucht, das beabsichtigte Verhalten des Agents durch schädliche Eingaben zu umgehen oder zu manipulieren. Weitere Informationen finden Sie im Wikipedia-Artikel Prompt Injection .

In dieser Anwendung wird diese Technik verwendet, wenn ein Nutzer fragt: „Check the status of our orders“ (Prüfe den Status unserer Bestellungen) oder „Show my shopping list“ (Zeige meine Einkaufsliste an). Der Agent ist so konzipiert, dass nur die Bestellungen des authentifizierten Nutzers angezeigt werden. So wird unbefugter Zugriff auf Bestellinformationen verhindert.

27b03aa215c454a.png

  1. Vektorsuche

Ihre agentische Anwendung nutzt AlloyDB for PostgreSQL, um erweiterte Abfragefunktionen bereitzustellen, insbesondere durch die Vektorsuche. AlloyDB unterstützt die Online-Generierung von Einbettungen direkt in der Datenbank mithilfe von SQL-Funktionen.

Mit dieser leistungsstarken Funktion kann der Agent die Eingabe eines Nutzers in natürlicher Sprache in eine numerische Einbettungsdarstellung übersetzen. Anschließend kann eine Ähnlichkeitssuche in Ihrem Produktkatalog (oder anderen relevanten Daten) auf Grundlage dieser Einbettungen durchgeführt werden, um hochrelevante Suchergebnisse zu erzielen.

In Ihrer Anwendung wird diese Technik angewendet, wenn Sie Finn fragen: „Ich suche Laufschuhe für einen Ultra-Trail.“

1a9172b827077bde.png

  1. Geospatiale Funktionen (PostGis)

AlloyDB for PostgreSQL ist zu 100% mit den Standard-PostgreSQL-Funktionen kompatibel. In dieser Anwendung nutzen wir die beliebte PostgreSQL-Erweiterung PostGIS, um dem Agenten Funktionen für die geografische Positionierung zur Verfügung zu stellen.

Wenn Sie den Agenten fragen: „Finde Geschäfte in meiner Nähe“, führt der Agent ein Tool aus, das PostGIS-Indizes in der Datenbank nutzt, um die Geschäfte in der Nähe des angegebenen oder abgeleiteten Standorts des Nutzers effizient zu finden.

fa491f214521371.png

11. (Optional) AlloyDB AI Natural Language to SQL testen

In diesem Abschnitt wird ein Pre-GA-Feature von AlloyDB for PostgreSQL vorgestellt: Natural Language to SQL. Mit dieser Funktion können Sie SQL-Abfragen direkt aus Prompts in natürlicher Sprache generieren und so die Leistungsfähigkeit von KI in Ihrer Datenbank nutzen.

Wichtig:Da es sich um eine Pre-GA-Funktion handelt, müssen Sie sich registrieren und den Zugriff für Ihr Google Cloud-Projekt, Ihren AlloyDB-Cluster und Ihre Datenbank aktivieren lassen.

  • Für Zugriff registrieren:Bitte verwenden Sie dieses Formular, um Zugriff für Ihr Projekt anzufordern.
  • Dokumentation:Weitere Informationen zur Verwendung von AlloyDB AI Natural Language to SQL finden Sie in der offiziellen Dokumentation.

Nachdem Sie sich registriert und den Zugriff für Ihr Projekt bestätigt haben, fahren Sie mit den folgenden Schritten in AlloyDB Studio fort.

a15964d53b4b15e1.png

Melden Sie sich mit den Anmeldedaten bei AlloyDB an, die Sie beim Erstellen des Clusters erstellt haben:

  • Nutzername: „postgres“
  • Datenbank: „store“
  • Passwort: „alloydb“

1. Erstellen Sie die Erweiterung „alloydb_ai_nl“. Diese Erweiterung bietet die erforderlichen Funktionen für die AlloyDB AI-Funktionen für natürliche Sprache.

CREATE EXTENSION alloydb_ai_nl cascade;

2. Konfiguration für Ihre Anwendung erstellen Eine Konfiguration definiert den Schemakontext, den das KI-Modell verwendet, um Ihre Datenbank zu verstehen.

SELECT
 alloydb_ai_nl.g_create_configuration(
   'finn_app_config'        -- configuration_id
 );

3. Registrieren Sie das Schema bzw. die Tabellen mit der Konfiguration. Fügen Sie der Konfiguration die spezifischen Tabellen und Schemas hinzu, mit denen der Agent Ihrer Anwendung interagieren soll.

SELECT alloydb_ai_nl.g_manage_configuration(
   operation => 'register_table_view',
   configuration_id_in => 'finn_app_config',
   table_views_in=>'{public.products, public.products_variants, public.orders, public.orders_items, public.users, public.inventory, public.stores}'
);

4. Kontext für das Schema / die Tabellen generieren In diesem Schritt werden die registrierten Tabellen verarbeitet, um den erforderlichen Kontext für das KI-Modell zu generieren. Dieser Vorgang kann etwa 2–3 Minuten dauern.

SELECT alloydb_ai_nl.generate_schema_context(
 'finn_app_config',
 TRUE
);

5. Optional: Überprüfen Sie den automatisch generierten Kontext für bestimmte Tabellen und Spalten. Sie können den generierten Kontext prüfen, um zu sehen, wie das KI-Modell Ihr Schema interpretiert.

SELECT object_context
FROM alloydb_ai_nl.generated_schema_context_view
WHERE schema_object = 'public.inventory';


SELECT object_context
FROM alloydb_ai_nl.generated_schema_context_view
WHERE schema_object = 'public.products.name';


SELECT object_context
FROM alloydb_ai_nl.generated_schema_context_view
WHERE schema_object = 'public.products.popularity_score';

In der Datei „tools.yaml“ unseres Agents finden Sie das Tool „check-inventory-by-store-brand-category“. Für dieses Tool wird AlloyDB Natural Language to SQL verwendet:

2cd70da8caefe2f5.png

Öffnen Sie einen Webbrowser und rufen Sie die Anwendung über die Dienst-URL auf: „https://finn-frontend-[YOUR_PROJECT_NUMBER].us-central1.run.app“.

Verwenden Sie dann das folgende Script in der Chatoberfläche, um diese neue Funktion zu testen:

  • Hallo Finn!
  • Wie hoch ist die Gesamtmenge der Produkte der Kategorie „Laufen“ von Salomon, die im Geschäft „Sports Diagonal Mar“ auf Lager sind?

Wenn Sie die tatsächliche SQL-Abfrage sehen möchten, die von AlloyDB AI aus Ihrer Eingabe in natürlicher Sprache generiert wurde, kehren Sie zu AlloyDB Studio zurück und führen Sie die folgende Abfrage aus:

SELECT
   alloydb_ai_nl.get_sql(
       'finn_app_config',
       'What is the total quantity of category Running products of Salomon in stock at the "Sports Diagonal Mar" store?'
   ) ->> 'sql';

Dadurch wird die SQL-Anweisung angezeigt, die von AlloyDB AI generiert wurde.

12. Bereinigen

So vermeiden Sie, dass Ihrem Google Cloud-Konto die in diesem Lab verwendeten Ressourcen in Rechnung gestellt werden:

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf „Löschen“.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf „Beenden“, um das Projekt zu löschen.

13. Glückwunsch

Glückwunsch! Sie haben erfolgreich eine datengesteuerte agentische KI-Anwendung mit dem ADK, der MCP Toolbox for Databases und AlloyDB for PostgreSQL erstellt.

Weitere Informationen finden Sie in der Produktdokumentation: Agent Development Kit, MCP Toolbox for Databases und AlloyDB for PostgreSQL.