Multi-Agent-App mit ADK, Agent Engine und AlloyDB

1. Übersicht

Ein Agent ist ein autonomes Programm, das mit einem KI-Modell kommuniziert, um eine zielbasierte Operation mit den ihm zur Verfügung stehenden Tools und dem Kontext auszuführen. Es ist in der Lage, autonome Entscheidungen auf der Grundlage von Fakten zu treffen.

Wenn Ihre Anwendung mehrere KI-Agenten hat, die autonom sind und bei Bedarf zusammenarbeiten, um ihren übergeordneten Zweck zu erfüllen, und jeder Agent unabhängig über Wissen verfügt und für einen bestimmten Schwerpunktbereich zuständig ist, dann ist Ihre Anwendung ein Multi-Agenten-System.

Das Agent Development Kit (ADK)

Das Agent Development Kit (ADK) ist ein flexibles und modulares Framework zum Entwickeln und Bereitstellen von KI-Agenten. Das ADK unterstützt das Erstellen komplexer Anwendungen, indem mehrere unterschiedliche Agenteninstanzen zu einem Multi-Agenten-System (MAS) zusammengefasst werden.

Im ADK ist ein Multi-Agenten-System eine Anwendung, in der verschiedene KI-Agenten, oft in einer Hierarchie, zusammenarbeiten oder sich koordinieren, um ein größeres Ziel zu erreichen. Diese Strukturierung Ihrer Anwendung bietet erhebliche Vorteile, darunter verbesserte Modularität, Spezialisierung, Wiederverwendbarkeit, Wartbarkeit und die Möglichkeit, strukturierte Steuerungsabläufe mithilfe dedizierter Workflow-Agenten zu definieren.

Wichtige Hinweise für Multi-Agenten-Systeme

Zuerst ist es wichtig, die Spezialisierung jedes KI-Agenten richtig zu verstehen und zu begründen. – „Wissen Sie, warum Sie für etwas einen bestimmten Sub-Agenten brauchen?“ Finden Sie das zuerst heraus.

Zweitens: Wie Sie die Sub-Agenten mit einem Root-Agenten zusammenführen, um ihre Ausgaben zu verarbeiten und die Antworten zu interpretieren.

Drittens gibt es verschiedene Arten der Weiterleitung zwischen Agenten. Informationen dazu finden Sie in dieser Dokumentation. Wählen Sie die Methode aus, die am besten zum Ablauf Ihrer Anwendung passt. Außerdem sollten Sie sich überlegen, welche verschiedenen Kontexte und Zustände Sie für die Ablaufsteuerung Ihres Multi-Agenten-Systems benötigen.

Aufgaben

Wir erstellen ein Multi-Agenten-System für Küchenrenovierungen. Dazu brauchen wir ein System mit drei KI-Agenten:

  1. Agent für Renovierungsangebote
  2. Agent für Genehmigungs- und Complianceprüfung
  3. Agent zum Prüfen des Bestellstatus

Der Agent für Renovierungsangebote erstellt das Angebot für die Küchenrenovierung.

Der Agent für Genehmigungs- und Complianceprüfung kümmert sich um die nötigen Genehmigungen und die Einhaltung der Vorschriften.

Order Status Check Agent, um den Bestellstatus von Materialien zu prüfen. Dazu wird die Datenbank für die Auftragsverwaltung verwendet, die wir in AlloyDB eingerichtet haben.

Wir haben einen Root-Agenten, der diese Agenten je nach Anforderung orchestriert.

Voraussetzungen

  • Ein Browser, z. B. Chrome oder Firefox
  • Google Cloud-Projekt mit aktivierter Abrechnungsfunktion.

2. Hinweis

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 der Cloud Shell auf den entsprechenden Button klicken.
  4. Sobald die Verbindung mit der Cloud Shell hergestellt ist, können Sie mit dem folgenden Befehl prüfen, ob Sie bereits authentifiziert sind und für das Projekt schon Ihre Projekt-ID eingestellt ist:
gcloud auth list
  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um zu prüfen, ob der gcloud-Befehl Ihr Projekt kennt.
gcloud config list project
  1. Wenn Ihr Projekt nicht festgelegt ist, verwenden Sie den folgenden Befehl, um es festzulegen:
gcloud config set project <YOUR_PROJECT_ID>
  1. Verwenden Sie Python 3.9 oder höher.
  2. Aktivieren Sie die folgenden APIs mit den folgenden Befehlen:
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com
  1. Informationen zu gcloud-Befehlen und deren Verwendung finden Sie in der Dokumentation.

3. Prototyp

Sie können diesen Schritt überspringen, wenn Sie sich für das Modell Gemini 2.5 Pro für das Projekt entscheiden.

Rufen Sie Google AI Studio auf. Beginnen Sie mit der Eingabe Ihres Prompts. Hier ist mein Prompt:

I want to renovate my kitchen, basically just remodel it. I don't know where to start. So I want to use Gemini to generate a plan. For that I need a good prompt. Give me a short yet detailed prompt that I can use.

Passen Sie die Parameter auf der rechten Seite an, um eine optimale Antwort zu erhalten.

Auf Grundlage dieser einfachen Beschreibung hat Gemini einen unglaublich detaillierten Prompt für mich erstellt, mit dem ich meine Renovierung starten kann. Wir verwenden Gemini, um noch bessere Antworten von AI Studio und unseren Modellen zu erhalten. Je nach Anwendungsfall können Sie auch verschiedene Modelle auswählen.

Wir haben uns für Gemini 2.5 Pro entschieden. Das ist ein Thinking-Modell, was bedeutet, dass wir noch mehr Ausgabetokens erhalten, in diesem Fall bis zu 65.000 Tokens, für lange Analysen und detaillierte Dokumente. Die Gemini-Denkblase wird angezeigt, wenn Sie Gemini 2.5 Pro aktivieren. Diese Version hat native Schlussfolgerungsfunktionen und kann Anfragen mit langem Kontext verarbeiten.

Hier ein Snippet der Antwort:

a80d4bad4b3864f7.png

AI Studio hat meine Daten analysiert und all diese Dinge wie Schränke, Arbeitsplatten, Rückwand, Bodenbelag, Spüle, Kohäsion, Farbpalette und Materialauswahl erstellt. Gemini zitiert sogar Quellen.

Wiederholen Sie den Vorgang mit verschiedenen Modellen, bis Sie mit dem Ergebnis zufrieden sind. Aber warum sollte man sich die Mühe machen, wenn man Gemini 2.5 hat? :)

Sehen Sie sich nun an, wie die Idee mit einem anderen Prompt umgesetzt wird:

Add flat and circular light accessories above the island area for my current kitchen in the attached image.

Fügen Sie einen Link zum Bild Ihrer aktuellen Küche (oder einem Beispielbild einer Küche) hinzu. Ändern Sie das Modell in „Gemini 2.0 Flash Preview Image Generation“, damit Sie Bilder generieren können.

Ich habe diese Ausgabe erhalten:

b5b1e83fcada28f5.png

Das ist die Stärke von Gemini.

Gemini kann Videos analysieren, Bilder generieren und echte Informationen mit der Google Suche verknüpfen – das sind nur einige der Funktionen, die nur mit Gemini möglich sind.

In AI Studio können Sie diesen Prototyp verwenden, den API-Schlüssel abrufen und ihn mit dem Vertex AI ADK zu einer vollständigen Agent-Anwendung skalieren.

4. ADK-Einrichtung

  1. Erstellen Sie eine virtuelle Umgebung und aktivieren Sie sie (empfohlen).

Erstellen Sie im Cloud Shell-Terminal eine virtuelle Umgebung:

python -m venv .venv

Aktivieren Sie die virtuelle Umgebung:

source .venv/bin/activate
  1. ADK installieren
pip install google-adk

5. Projektstruktur

  1. Erstellen Sie im Terminal von Cloud Shell ein Verzeichnis am gewünschten Speicherort für Ihr Projekt.
mkdir agentic-apps
cd agentic-apps
mkdir renovation-agent
  1. Rufen Sie den Cloud Shell-Editor auf und erstellen Sie die folgende Projektstruktur, indem Sie die Dateien anlegen (zuerst leer):
renovation-agent/
        __init__.py
        agent.py
        .env
        requirements.txt

6. Quellcode

  1. Öffnen Sie „init.py“ und fügen Sie den folgenden Inhalt ein:
from . import agent
  1. Rufen Sie „agent.py“ auf und aktualisieren Sie die Datei mit dem folgenden Inhalt aus dem folgenden Pfad:
https://github.com/AbiramiSukumaran/adk-renovation-agent/blob/main/agent.py

In „agent.py“ importieren wir die erforderlichen Abhängigkeiten, rufen Konfigurationsparameter aus der .env-Datei ab und definieren den „root_agent“, der die drei untergeordneten Agenten orchestriert, die wir in dieser Anwendung erstellen möchten. Es gibt mehrere Tools, die bei den Kern- und unterstützenden Funktionen dieser untergeordneten Agents helfen.

  1. Prüfen, ob Sie den Cloud Storage-Bucket haben

Hier wird das vom KI-Agenten generierte Angebotsdokument gespeichert. Erstellen Sie ihn und gewähren Sie Zugriff, damit das mit Vertex AI erstellte Multi-Agenten-System darauf zugreifen kann. Gehen Sie dazu so vor:

https://cloud.google.com/storage/docs/creating-buckets#console

Geben Sie Ihrem Bucket den Namen next-demo-store. Wenn Sie einen anderen Namen verwenden, müssen Sie den Wert von STORAGE_BUCKET in der .env-Datei aktualisieren (im Schritt „ENV Variables Setup“).

  1. Um den Zugriff auf den Bucket einzurichten, rufen Sie die Cloud Storage-Konsole und Ihren Storage-Bucket auf. In unserem Fall lautet der Bucket-Name „next-demo-storage“: https://console.cloud.google.com/storage/browser/next-demo-storage.

Klicken Sie auf „Berechtigungen“ > „Hauptkonten ansehen“ > „Zugriff gewähren“. Wählen Sie „allUsers“ als Identitäten und „Storage Object User“ als Rolle aus.

Make sure to not enable "prevent public access". Since this is a demo/study application we are going with a public bucket. Remember to configure permission settings appropriately when you are building your application.
  1. Liste mit Abhängigkeiten erstellen

Listen Sie alle Abhängigkeiten in requirements.txt auf. Sie können sie aus dem Repository kopieren.

Multi-Agenten-System – Erklärung des Quellcodes

In der Datei „agent.py“ sind die Struktur und das Verhalten unseres Multi-Agenten-Systems für die Küchenrenovierung mithilfe des Agent Development Kit (ADK) definiert. Sehen wir uns die wichtigsten Komponenten an:

Definitionen der Agenten

RenovationProposalAgent

Dieser KI-Agent ist für das Erstellen des Angebots für die Küchenrenovierung zuständig. Optional können Eingabeparameter wie Küchengröße, gewünschter Stil, Budget und Kundenpräferenzen angegeben werden. Anhand dieser Informationen wird mit einem Gemini 2.5-LLM (Large Language Model) ein detailliertes Angebot erstellt. Dieses wird dann in einem Google Cloud Storage-Bucket gespeichert.

PermitsAndComplianceCheckAgent

Dieser KI-Agent sorgt dafür, dass das Renovierungsprojekt den örtlichen Bauvorschriften und -bestimmungen entspricht. Er erhält Informationen über die geplante Renovierung (wie bauliche Veränderungen, Elektroarbeiten, Änderungen an den Wasserleitungen) und prüft mit dem LLM, welche Genehmigungen erforderlich sind und welche Vorschriften eingehalten werden müssen. Der Agent verwendet Informationen aus einer Wissensdatenbank, die Sie anpassen können, um auf externe APIs zuzugreifen und relevante Vorschriften zu erfassen.

OrderingAgent

Dieser KI-Agent (Sie können ihn auskommentieren, wenn Sie ihn jetzt nicht implementieren möchten) prüft den Bestellstatus von Materialien und Geräten, die für die Renovierung benötigt werden. Wenn Sie ihn aktivieren möchten, müssen Sie eine Cloud Run-Funktion erstellen, wie in den Einrichtungsschritten beschrieben. Der Agent ruft dann diese Cloud Run-Funktion auf, die mit einer AlloyDB-Datenbank mit Bestellinformationen interagiert. Hier wird die Einbindung in ein Datenbanksystem zur Erfassung von Echtzeitdaten gezeigt.

Root-Agent (Orchestrator)

Der root_agent fungiert als zentraler Orchestrator des Multi-Agenten-Systems. Er empfängt die Renovierungsanfrage und bestimmt anhand der Anforderungen, welche Sub-Agents aufgerufen werden sollen. Wenn beispielsweise eine Überprüfung der Genehmigungsanforderungen erforderlich ist, wird der PermitsAndComplianceCheckAgent aufgerufen. Wenn die Nutzerin oder der Nutzer den Bestellstatus prüfen möchte, wird der OrderingAgent aufgerufen (sofern aktiviert).

Der root_agent sammelt dann die Antworten der Sub-Agenten und kombiniert sie, um eine umfassende Antwort zu geben. Diese kann eine Zusammenfassung des Angebots, eine Liste der erforderlichen Genehmigungen sowie Informationen zum Bestellstatus enthalten.

Datenfluss und Schlüsselkonzepte

Der Nutzer initiiert eine Anfrage über die ADK-Schnittstelle (entweder das Terminal oder die Webbenutzeroberfläche).

  1. Die Anfrage wird vom root_agent empfangen.
  2. Der root_agent analysiert die Anfrage und leitet sie an die entsprechenden Sub-Agenten weiter.
  3. Die Sub-Agenten verwenden LLMs, Wissensdatenbanken, APIs und Datenbanken, um die Anfrage zu verarbeiten und Antworten zu generieren.
  4. Die Sub-Agenten senden ihre Antworten an den root_agent zurück.
  5. Der root_agent kombiniert die Antworten und gibt eine endgültige Ausgabe an die Nutzerin oder den Nutzer aus.

LLMs (Large Language Models)

Die KI-Agenten nutzen LLMs, um Texte zu generieren, Fragen zu beantworten und Schlussfolgerungen zu ziehen. Die LLMs sind das „Gehirn“, das den Agenten hilft, Nutzeranfragen zu verstehen und zu beantworten. In dieser Anwendung verwenden wir Gemini 2.5.

Google Cloud Storage

Dient zum Speichern der generierten Dokumente mit den Renovierungsangeboten. Sie müssen einen Bucket erstellen und den KI-Agenten die erforderlichen Berechtigungen für den Zugriff darauf gewähren.

Cloud Run (optional)

Der OrderingAgent verwendet eine Cloud Run-Funktion, um mit AlloyDB zu interagieren. Cloud Run bietet eine serverlose Umgebung, in der Code als Reaktion auf HTTP-Anfragen ausgeführt werden kann.

AlloyDB

Wenn Sie den OrderingAgent verwenden, müssen Sie eine AlloyDB-Datenbank zum Speichern der Bestellinformationen einrichten. Im nächsten Abschnitt „Datenbank einrichten“ gehen wir auf die Details ein.

.env-Datei

In der .env-Datei werden vertrauliche Informationen wie API-Schlüssel, Datenbankanmeldedaten und Bucket-Namen gespeichert. Es ist wichtig, diese Datei sicher aufzubewahren und sie nicht in Ihrem Repository zu speichern. Außerdem werden dort die Konfigurationseinstellungen für die Agenten und Ihr Google Cloud-Projekt gespeichert. Der root_agent oder unterstützende Funktionen lesen in der Regel Werte aus dieser Datei. Achten Sie darauf, dass alle erforderlichen Variablen in der .env-Datei korrekt festgelegt sind. Dazu gehört auch der Name des Cloud Storage-Buckets.

7. Datenbank einrichten

In einem der vom ordering_agent verwendeten Tools namens „check_status“ greifen wir auf die AlloyDB-Bestelldatenbank zu, um den Status von Bestellungen abzurufen. In diesem Abschnitt richten wir einen AlloyDB-Datenbankcluster und eine ‑Instanz ein.

Cluster und Instanz erstellen

  1. Rufen Sie in der Cloud Console die AlloyDB-Seite auf. Die meisten Seiten in der Cloud Console lassen sich ganz einfach über die Suchleiste der Console finden.
  2. Wählen Sie auf dieser Seite CLUSTER ERSTELLEN aus:

f76ff480c8c889aa.png

  1. Sie sehen dann einen Bildschirm wie den folgenden. Erstellen Sie einen Cluster und eine Instanz mit den folgenden Werten. Achten Sie darauf, dass die Werte übereinstimmen, wenn Sie den Anwendungscode aus dem Repository klonen:
  • Cluster-ID: „vector-cluster
  • password: "alloydb"
  • PostgreSQL 15 / neueste empfohlene Version
  • Region: "us-central1"
  • Netzwerk: „default

538dba58908162fb.png

  1. Wenn Sie das Standardnetzwerk auswählen, wird ein Bildschirm wie der unten stehende angezeigt.

Wählen Sie VERBINDUNG EINRICHTEN aus.
7939bbb6802a91bf.png

  1. Wählen Sie dort Automatisch zugewiesenen IP-Bereich verwenden aus und klicken Sie auf „Weiter“. Nachdem Sie die Informationen geprüft haben, wählen Sie „VERBINDUNG ERSTELLEN“ aus. 768ff5210e79676f.png
  2. Nachdem Sie Ihr Netzwerk eingerichtet haben, können Sie mit der Erstellung Ihres Clusters fortfahren. Klicken Sie auf CLUSTER ERSTELLEN, um die Einrichtung des Clusters abzuschließen (siehe unten):

e06623e55195e16e.png

Achten Sie darauf, die Instanz-ID zu ändern (die Sie bei der Konfiguration des Clusters / der Instanz finden), in

vector-instance: Wenn Sie sie nicht ändern können, denken Sie daran, in allen anstehenden Verweisen Ihre Instanz-ID zu verwenden.

Die Clustererstellung dauert etwa 10 Minuten. Nach erfolgreicher Ausführung sollte ein Bildschirm mit der Übersicht des gerade erstellten Clusters angezeigt werden.

Datenaufnahme

Jetzt ist es an der Zeit, eine Tabelle mit den Daten zum Geschäft hinzuzufügen. Rufen Sie AlloyDB auf, wählen Sie den primären Cluster und dann AlloyDB Studio aus:

847e35f1bf8a8bd8.png

Möglicherweise müssen Sie warten, bis die Instanz erstellt wurde. Melden Sie sich dann mit den Anmeldedaten in AlloyDB an, die Sie beim Erstellen des Clusters erstellt haben. Verwenden Sie die folgenden Daten für die Authentifizierung bei PostgreSQL:

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

Nachdem Sie sich erfolgreich in AlloyDB Studio authentifiziert haben, werden SQL-Befehle im Editor eingegeben. Sie können mehrere Editorfenster hinzufügen, indem Sie auf das Pluszeichen rechts neben dem letzten Fenster klicken.

91a86d9469d499c4.png

Sie geben Befehle für AlloyDB in Editorfenstern ein und verwenden bei Bedarf die Optionen „Ausführen“, „Formatieren“ und „Löschen“.

Tabelle erstellen

Sie können eine Tabelle mit der folgenden DDL-Anweisung in AlloyDB Studio erstellen:

-- Table DDL for Procurement Material Order Status

CREATE TABLE material_order_status (
    order_id VARCHAR(50) PRIMARY KEY,
    material_name VARCHAR(100) NOT NULL,
    supplier_name VARCHAR(100) NOT NULL,
    order_date DATE NOT NULL,
    estimated_delivery_date DATE,
    actual_delivery_date DATE,
    quantity_ordered INT NOT NULL,
    quantity_received INT,
    unit_price DECIMAL(10, 2) NOT NULL,
    total_amount DECIMAL(12, 2),
    order_status VARCHAR(50) NOT NULL, -- e.g., "Ordered", "Shipped", "Delivered", "Cancelled"
    delivery_address VARCHAR(255),
    contact_person VARCHAR(100),
    contact_phone VARCHAR(20),
    tracking_number VARCHAR(100),
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    quality_check_passed BOOLEAN,  -- Indicates if the material passed quality control
    quality_check_notes TEXT,        -- Notes from the quality control check
    priority VARCHAR(20),            -- e.g., "High", "Medium", "Low"
    project_id VARCHAR(50),          -- Link to a specific project
    receiver_name VARCHAR(100),        -- Name of the person who received the delivery
    return_reason TEXT,               -- Reason for returning material if applicable
    po_number VARCHAR(50)             -- Purchase order number
);

Datensätze einfügen

Kopieren Sie die insert-Abfrageanweisung aus dem oben erwähnten database_script.sql-Skript in den Editor.

Klicken Sie auf Ausführen.

Nachdem der Datensatz fertig ist, erstellen wir eine Java Cloud Run Functions-Anwendung, um den Status zu extrahieren.

Cloud Run-Funktion in Java erstellen, um Informationen zum Bestellstatus zu extrahieren

  1. Erstellen Sie hier eine Cloud Run-Funktion: https://console.cloud.google.com/run/create?deploymentType=function.
  2. Legen Sie „check-status“ als Funktionsnamen fest und wählen Sie „Java 17“ als Laufzeit aus.
  3. Da es sich um eine Demoanwendung handelt, können Sie die Authentifizierung auf Nicht authentifizierte Aufrufe zulassen setzen.
  4. Wählen Sie Java 17 als Laufzeit und den Inline-Editor für den Quellcode aus.
  5. An dieser Stelle wird der Platzhaltercode in den Editor geladen.

Platzhaltercode ersetzen

  1. Ändern Sie den Namen der Java-Datei in ProposalOrdersTool.java und den Klassennamen in ProposalOrdersTool.
  2. Ersetzen Sie den Platzhaltercode in ProposalOrdersTool.java und pom.xml durch den Code aus den entsprechenden Dateien im Ordner „Cloud Run Function“ in diesem Repository.
  3. Suchen Sie in ProposalOrdersTool.java die folgende Codezeile und ersetzen Sie die Platzhalterwerte durch Werte aus Ihrer Konfiguration:
String ALLOYDB_INSTANCE_NAME = "projects/<<YOUR_PROJECT_ID>>/locations/us-central1/clusters/<<YOUR_CLUSTER>>/instances/<<YOUR_INSTANCE>>";
  1. Klicken Sie auf „Erstellen“.
  2. Die Cloud Run-Funktion wird erstellt und bereitgestellt.

WICHTIGER SCHRITT:

Nach der Bereitstellung erstellen wir den VPC-Connector, damit die Cloud-Funktion auf unsere AlloyDB-Datenbankinstanz zugreifen kann.

Sobald Sie die Bereitstellung gestartet haben, sollten Sie die Funktionen in der Google Cloud Run Functions-Konsole sehen können. Suchen Sie nach der neu erstellten Funktion (check-status), klicken Sie darauf und dann auf NEUE ÜBERARBEITUNG BEARBEITEN UND ERSTELLEN (in der Cloud Run Functions-Konsole durch das Symbol „Bearbeiten“ (Stift) oben gekennzeichnet). Ändern Sie Folgendes:

  1. Rufen Sie den Tab „Netzwerk“ auf:

828cd861864d99ea.png

  1. Wählen Sie Mit einer VPC für ausgehenden Traffic verbinden und dann Connectors für serverlosen VPC-Zugriff verwenden aus.
  2. Klicken Sie im Drop-down-Menü „Netzwerk“ auf „Einstellungen“ und wählen Sie dann die Option Neuen VPC-Connector hinzufügen aus (falls Sie den Standard-Connector noch nicht konfiguriert haben). Folgen Sie der Anleitung im Pop-up-Dialogfeld:

6559ccfd10e597f2.png

  1. Geben Sie einen Namen für den VPC-Connector an und achten Sie darauf, dass die Region mit der Ihrer Instanz übereinstimmt. Lassen Sie den Netzwerk-Wert auf dem Standardwert und legen Sie das Subnetz als benutzerdefinierten IP-Bereich mit dem IP-Bereich 10.8.0.0 oder einem ähnlichen verfügbaren Bereich fest.
  2. Maximieren Sie die SKALIERUNGSEINSTELLUNGEN ANZEIGEN und prüfen Sie, ob die Konfiguration genau wie folgt eingestellt ist:

199b0ccd80215004.png

  1. Klicken Sie auf ERSTELLEN. Der Connector sollte jetzt in den Einstellungen für den ausgehenden Traffic aufgeführt sein.
  2. Wählen Sie den neu erstellten Connector aus.
  3. Wählen Sie aus, dass der gesamte Traffic über diesen VPC-Connector weitergeleitet werden soll.
  4. Klicken Sie auf WEITER und dann auf BEREITSTELLEN.
  5. Nachdem die aktualisierte Cloud-Funktion bereitgestellt wurde, sollte der Endpunkt generiert werden.
  6. Sie können die Funktion testen, indem Sie oben in der Cloud Run Functions Console auf die Schaltfläche „TEST“ klicken und den resultierenden Befehl im Cloud Shell-Terminal ausführen.
  7. Der bereitgestellte Endpunkt ist die URL, die Sie in der .env-Variablen CHECK_ORDER_STATUS_ENDPOINT aktualisieren müssen.

8. Modelleinrichtung

Die Fähigkeit Ihres KI-Agenten, Nutzeranfragen zu verstehen und Antworten zu generieren, basiert auf einem Large Language Model (LLM). Ihr Agent muss sichere Aufrufe an diesen externen LLM-Dienst durchführen. Dazu sind Authentifizierungsanmeldedaten erforderlich. Ohne gültige Authentifizierung lehnt der LLM-Dienst die Anfragen des Agents ab und der Agent kann nicht funktionieren.

  1. Rufen Sie einen API-Schlüssel von Google AI Studio ab.
  2. Ersetzen Sie im nächsten Schritt, in dem Sie die .env-Datei einrichten, <<your API KEY>> durch den tatsächlichen Wert Ihres API-Schlüssels.

9. Umgebungsvariablen einrichten

  1. Legen Sie die Werte für die Parameter in der .env-Vorlagendatei in diesem Repository fest. In meinem Fall enthält die .env-Datei diese Variablen:
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=<<your API KEY>>
GOOGLE_CLOUD_LOCATION=us-central1 <<or your region>>
GOOGLE_CLOUD_PROJECT=<<your project id>>
PROJECT_ID=<<your project id>>
GOOGLE_CLOUD_REGION=us-central1 <<or your region>>
STORAGE_BUCKET=next-demo-store <<or your storage bucket name>>
CHECK_ORDER_STATUS_ENDPOINT=<<YOUR_ENDPOINT_TO_CLOUD FUNCTION_TO_READ_ORDER_DATA_FROM_ALLOYDB>>

Ersetzen Sie die Platzhalter durch Ihre Werte.

10. Agent ausführen

  1. Wechseln Sie im Terminal zum übergeordneten Verzeichnis Ihres Agent-Projekts:
cd renovation-agent
  1. Alle Abhängigkeiten installieren
pip install -r requirements.txt
  1. Sie können den folgenden Befehl in Ihrem Cloud Shell-Terminal ausführen, um den KI-Agenten auszuführen:
adk run .
  1. Sie können Folgendes ausführen, um es in einer mit dem ADK bereitgestellten Web-UI auszuführen:
adk web
  1. Testen Sie mit den folgenden Prompts:
user>> 

Hello. Generate Proposal Document for the kitchen remodel requirement. I have no other specification.

11. Ergebnis

@ Multi-Agenten-System für Küchenrenovierungsaufgaben

623fa35fce53b51b.png

12. Bereitstellung in Agent Engine

Nachdem Sie das Multi-Agenten-System getestet haben, machen wir es serverlos und stellen es in der Cloud für alle Nutzer und Anwendungen zur Verfügung. Entfernen Sie die Kommentarzeichen aus dem folgenden Code-Snippet in der Datei agent.py aus dem Repository. Danach können Sie Ihr Multi-Agenten-System bereitstellen:

# Agent Engine Deployment:
# Create a remote app for our multiagent with agent Engine.
# This may take 1-2 minutes to finish.
# Uncomment the below segment when you're ready to deploy.

app = AdkApp(
    agent=root_agent,
    enable_tracing=True,
)

vertexai.init(
    project=PROJECT_ID,
    location=GOOGLE_CLOUD_LOCATION,
    staging_bucket=STAGING_BUCKET,
)

remote_app = agent_engines.create(
    app,
    requirements=[
        "google-cloud-aiplatform[agent_engines,adk]>=1.88",
        "google-adk",
        "pysqlite3-binary",
        "toolbox-langchain==0.1.0",
        "pdfplumber",
        "google-cloud-aiplatform",
        "cloudpickle==3.1.1",
        "pydantic==2.10.6",
        "pytest",
        "overrides",
        "scikit-learn",
        "reportlab",
        "google-auth",
        "google-cloud-storage",
    ],
)
# Deployment to Agent Engine related code ends

Führen Sie „agent.py“ noch einmal im Projektordner mit dem folgenden Befehl aus:

>> cd adk-renovation-agent

>> python agent.py

Das kann einige Minuten dauern. Anschließend erhalten Sie einen Endpunkt, der so aussieht:

'projects/123456789/locations/us-central1/reasoningEngines/123456'

Sie können Ihren bereitgestellten KI-Agenten mit dem folgenden Code testen, indem Sie eine neue Datei test.py hinzufügen.

import vertexai
from vertexai.preview import reasoning_engines
from vertexai import agent_engines
import os
import warnings
from dotenv import load_dotenv
load_dotenv() 


GOOGLE_CLOUD_PROJECT = os.environ["GOOGLE_CLOUD_PROJECT"]
GOOGLE_CLOUD_LOCATION = os.environ["GOOGLE_CLOUD_LOCATION"]
GOOGLE_API_KEY = os.environ["GOOGLE_API_KEY"]
GOOGLE_GENAI_USE_VERTEXAI=os.environ["GOOGLE_GENAI_USE_VERTEXAI"]
AGENT_NAME = "adk_renovation_agent"
MODEL_NAME = "gemini-2.5-pro-preview-03-25" 
warnings.filterwarnings("ignore")
PROJECT_ID = GOOGLE_CLOUD_PROJECT

reasoning_engine_id = "<<YOUR_DEPLOYED_ENGINE_ID>>"

vertexai.init(project=PROJECT_ID, location="us-central1")
agent = agent_engines.get(reasoning_engine_id)
print("**********************")
print(agent)
print("**********************")


for event in agent.stream_query(
    user_id="test_user",
    message="I want you to check order status.",
):
    print(event)

Ersetzen Sie im obigen Code den Wert für den Platzhalter <<YOUR_DEPLOYED_ENGINE_ID>> und führen Sie den Befehl python test.py aus. Jetzt können Sie mit einem Multi-Agenten-System interagieren, das in Agent Engine bereitgestellt wird, und Ihre Küche renovieren lassen.

13. Einzeilige Bereitstellungsoptionen

Nachdem Sie das bereitgestellte Multi-Agenten-System getestet haben, sehen wir uns nun einfachere Methoden an, die den Bereitstellungsschritt aus dem vorherigen Schritt abstrahieren: BEREITSTELLUNGSOPTIONEN IN EINER ZEILE:

  1. In Cloud Run:

Syntax:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=<<YOUR_SERVICE_NAME>> \
--app_name=<<YOUR_APP_NAME>> \
--with_ui \
./<<YOUR_AGENT_PROJECT_NAME>>

In diesem Fall gilt:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=renovation-agent \
--app_name=renovation-app \
--with_ui \
./renovation-agent

Sie können den bereitgestellten Endpunkt für nachgelagerte Integrationen verwenden.

  1. An Agent Engine:

Syntax:

adk deploy agent_engine \
  --project <your-project-id> \
  --region us-central1 \
  --staging_bucket gs://<your-google-cloud-storage-bucket> \
  --trace_to_cloud \
  path/to/agent/folder

In diesem Fall gilt:

adk deploy agent_engine --project <<YOUR_PROJECT_ID>> --region us-central1 --staging_bucket gs://<<YOUR_BUCKET_NAME>> --trace_to_cloud renovation-agent

In der Agent Engine-Benutzeroberfläche in der Google Cloud Console sollte ein neuer Agent angezeigt werden. Weitere Informationen finden Sie in diesem Blog.

14. Bereinigen

So vermeiden Sie, dass Ihrem Google Cloud-Konto die in diesem Beitrag 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 auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Herunterfahren, um das Projekt zu löschen.

15. Glückwunsch

Das wars! Sie haben das Lab erfolgreich abgeschlossen. Sie haben erfolgreich Ihren ersten Agenten mit dem ADK erstellt und mit ihm interagiert.