1. Ziel dieses Labs
In diesem Lab mit Übungen erstellen Sie mit dem ADK (Agent Development Kit) eine Multi-Agent-Anwendung, die auf Grundlage Ihres Prompts ein Bild generiert und es anhand Ihres Prompts bewertet. Wenn das Bild die im Prompt beschriebenen Anforderungen nicht zufriedenstellend erfüllt, generiert der Agent so lange Bilder, bis das Bild generiert wird, das Ihren Anforderungen entspricht. Jeder der Agents in dieser Übung hat einen einzigen Zweck. Die Agents arbeiten zusammen, um das Gesamtziel zu erreichen. Sie erfahren, wie Sie die Anwendung lokal testen und in Agent Runtime bereitstellen.
Lerninhalte
- Sie lernen die Grundlagen des ADK (Agent Development Kit) kennen und erfahren, wie Sie ein Multi-Agent-System erstellen.
- Informationen zum Bereitstellen und Verwenden von Agents in Agent Runtime
- Grundlagen des A2A Protocol
- Hier erfahren Sie, wie Sie das A2A-Protokoll und das ADK (Agent Development Kit) zusammen verwenden, um offene Agenten zu erstellen.
2. Projekt einrichten
- Rufen Sie die GCP Console auf, indem Sie auf den folgenden Link klicken: GCP Console.
- Wenn Sie noch kein Projekt haben, das Sie verwenden können, müssen Sie ein neues Projekt in der GCP Console erstellen. Wählen Sie das Projekt in der Projektauswahl (oben links in der Google Cloud Console) aus. Wenn Sie noch kein Projekt haben, folgen Sie dieser Anleitung, um ein neues Projekt zu erstellen. Nachdem Sie ein neues Projekt erstellt haben, wählen Sie es aus.

Abbildung 2: Wenn Sie auf das Feld direkt neben dem Google Cloud-Logo klicken, können Sie Ihr Projekt auswählen. Achten Sie darauf, dass Ihr Projekt ausgewählt ist.
- In diesem Lab verwenden wir den Cloud Shell-Editor, um unsere Aufgaben auszuführen. Öffnen Sie Cloud Shell und legen Sie das Projekt mit Cloud Shell fest.
- Klicken Sie auf diesen Link, um direkt zum Cloud Shell-Editor zu gelangen.
- Klicken Sie in der Seitenleiste des Cloud Shell-Editors auf die Schaltfläche Ordner öffnen.

- Ihr Basisordner sollte bereits ausgewählt sein. Drücken Sie einfach auf „OK“. Ihr Basisordner ist dann der Stammordner für diese Aufgabe.

- Öffnen Sie das Terminal, falls es noch nicht geöffnet ist. Klicken Sie dazu im Menü auf Terminal > Neues Terminal. Sie können alle Befehle in dieser Anleitung in diesem Terminal ausführen.
- Mit dem folgenden Befehl im Cloud Shell-Terminal können Sie prüfen, ob das Projekt bereits authentifiziert ist.
gcloud auth list
- Wenn Sie sich nicht mehr an Ihre Projekt-ID erinnern, können Sie alle Ihre Projekt-IDs mit
gcloud projects list
- Kopieren Sie die Projekt-ID und legen Sie sie mit dem folgenden Befehl fest.
gcloud config set project <YOUR_PROJECT_ID>
- Führen Sie in Cloud Shell den folgenden Befehl aus, um Ihr Projekt zu bestätigen:
gcloud config list project
3. APIs aktivieren
Für dieses Lab müssen wir einige API-Dienste aktivieren. Führen Sie in Cloud Shell den folgenden Befehl aus.
gcloud services enable aiplatform.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com
Einführung in die APIs
- Die Gemini Enterprise Agent Platform API (
aiplatform.googleapis.com) ermöglicht den Zugriff auf die Gemini Enterprise Agent Platform. So kann Ihre Anwendung mit Gemini-Modellen interagieren, um Text zu generieren, Chats zu führen und Funktionen aufzurufen. - Mit der Cloud Resource Manager API (
cloudresourcemanager.googleapis.com) können Sie Metadaten für Ihre Google Cloud-Projekte programmatisch verwalten, z. B. Projekt-ID und -Name. Diese sind häufig für andere Tools und SDKs erforderlich, um die Projektidentität und -berechtigungen zu bestätigen.
4. Einführung in das Agent Development Kit
Das Agent Development Kit bietet mehrere entscheidende Vorteile für Entwicklerinnen und Entwickler, die agentische Anwendungen erstellen:
- Multi-Agenten-Systeme: Erstellen Sie modulare und skalierbare Anwendungen, indem Sie mehrere spezialisierte Agenten in einer Hierarchie zusammenstellen. Ermöglichen Sie komplexe Koordination und Delegation.
- Umfangreiches Tool-Ökosystem: Statten Sie Agenten mit verschiedenen Kompetenzen aus. Verwenden Sie vorgefertigte Tools (Suche, Code-Ausführung usw.), erstellen Sie benutzerdefinierte Funktionen, integrieren Sie Tools aus Agenten-Frameworks von Drittanbietern (LangChain, CrewAI) oder nutzen Sie sogar andere Agenten als Tools.
- Flexible Orchestrierung: Definieren Sie Workflows mit Workflow-Agenten (
SequentialAgent,ParallelAgentundLoopAgent) für vorhersagbare Pipelines oder nutzen Sie LLM-basiertes dynamisches Routing (LlmAgent-Transfer) für adaptives Verhalten. - Integrierte Entwicklungsumgebung: Entwickeln, testen und debuggen Sie lokal mit einer leistungsstarken Befehlszeile und einer interaktiven Entwicklungs-UI. Prüfen Sie Ereignisse, Status und Agentenausführung Schritt für Schritt.
- Integrierte Bewertung: Bewerten Sie die Leistung des Agenten systematisch, indem Sie sowohl die Qualität der endgültigen Antwort als auch den schrittweisen Ausführungsablauf anhand vordefinierter Testläufe bewerten.
- Schnelle Bereitstellung: Sie können Ihre Agenten überall containerisieren und bereitstellen. Führen Sie sie lokal aus, skalieren Sie sie mit Agent Runtime oder integrieren Sie sie mit Cloud Run oder Docker in Ihre eigene Infrastruktur.
Während andere SDKs oder Agenten-Frameworks auf Basis generativer KI Ihnen ebenfalls ermöglichen, Modelle abzufragen und sie sogar mit Tools auszustatten, erfordert die dynamische Koordination zwischen mehreren Modellen einen erheblichen Arbeitsaufwand Ihrerseits.
Das Agent Development Kit bietet ein übergeordnetes Framework, mit dem Sie problemlos mehrere Agenten miteinander verbinden können, um komplexe, aber einfach zu wartende Workflows zu erstellen.

Abbildung 1: Positionierung des ADK (Agent Development Kit)
5. Einführung in Agent Runtime
Agent Runtime ist ein vollständig verwalteter Dienst zum Bereitstellen von Agenten in Google Cloud. Mit der Agent Runtime können Entwickler OSS-KI-Agents( ADK (Agent Development Kit) , LangChain, LangGraph, CrewAI, AutoGen und mehr) auf der Gemini Enterprise Agent Platform entwickeln, anpassen, bereitstellen, bereitstellen und verwalten.
Die Agent-Laufzeit bietet auch Dienste zur Verarbeitung der Nutzerdaten, die auch als Agent-Speicher bezeichnet werden. Derzeit sind zwei Arten von Speicherdiensten verfügbar.
- Kurzzeitspeicher: Mit Agent Engine-Sitzungen können Sie den laufenden Unterhaltungsverlauf (Status) innerhalb einer einzelnen Sitzung als Kurzzeitspeicher speichern, verwalten und abrufen.
- Langzeitspeicher: Mit der Agent Engine Memory Bank können Sie Erinnerungen (Zustand) speichern, transformieren und abrufen, insbesondere über mehrere Sitzungen hinweg als Langzeitspeicher.
Sie können Agents auch in anderen Google Cloud-Diensten wie Cloud Run oder GKE bereitstellen. Für die folgenden Anwendungsfälle sollten Sie Agent Runtime verwenden.
- Statusbehaftete verwaltete Laufzeit: Wenn Sie eine statusbehaftete, vollständig verwaltete Laufzeit für die Bereitstellung Ihres Agents benötigen, ist Agent Runtime eine gute Wahl, da sie gängige Aufgaben wie die Sitzungsverwaltung und die Persistenz für KI-Agents abstrahiert.
- Codeausführung: Wenn Ihr Agent Code ausführen muss, der während der Nutzersitzung dynamisch generiert wird, bietet die Agent Runtime eine sichere Sandbox, in der Sie den Code ausführen können.
- Flexibler Langzeitspeicher: Wenn Sie einen flexiblen Langzeitspeicher für Ihre Agenten benötigen, kann die Gemini Enterprise Agent Platform Memory Bank, die mit der Agent Runtime verwendet werden kann, eine flexible Möglichkeit bieten, sich die Informationen zu Ihrem Nutzer zu merken, die über die Sitzungen hinweg verwendet werden können.
Sie können Agent Runtime auch mit anderen Laufzeiten wie Cloud Run kombinieren, um eine flexible Anwendungsarchitektur zu erstellen. Nachfolgend finden Sie ein Beispiel für eine Referenzarchitektur, in der verschiedene Dienste zum Erstellen eines Agents verwendet werden.

Abbildung 2: Beispiel für eine Referenzarchitektur zum Erstellen von Agents mit mehreren Diensten.
6. Einführung in A2A
Das Agent2Agent-Protokoll (A2A) ist ein offener Standard, der eine nahtlose und sichere Kommunikation und Zusammenarbeit zwischen autonomen KI-Agenten aus verschiedenen Frameworks, von verschiedenen Anbietern und aus verschiedenen Bereichen ermöglichen soll.
- Universelle Interoperabilität:Mit A2A können Agents unabhängig von den zugrunde liegenden Technologien zusammenarbeiten, was ein echtes Multi-Agent-Ökosystem ermöglicht. So können Agenten, die von verschiedenen Unternehmen auf unterschiedlichen Plattformen entwickelt wurden, miteinander kommunizieren und sich abstimmen.
- Funktionsermittlung:Agenten können ihre Funktionen mithilfe von „Agentenkarten“ (JSON-Dokumenten) bekannt geben, in denen ihre Identität, die unterstützten A2A-Funktionen, die Fähigkeiten und die Authentifizierungsanforderungen beschrieben werden. So können andere Agents den am besten geeigneten Agent für eine bestimmte Aufgabe finden und auswählen.
- Standardmäßig sicher:Sicherheit ist ein zentrales Prinzip. A2A umfasst Authentifizierungs- und Autorisierungsmechanismen auf Unternehmensniveau, die Standards wie HTTPS/TLS, JWT, OIDC und API-Schlüssel verwenden, um sichere Interaktionen zu gewährleisten und sensible Daten zu schützen.
- Modalitätsunabhängig:Das Protokoll unterstützt verschiedene Kommunikationsmodalitäten, darunter Text, Audio- und Videostreaming sowie interaktive Formulare und eingebettete iFrames. So können Agenten Informationen im für die Aufgabe und den Nutzer am besten geeigneten Format austauschen.
- Strukturierte Aufgabenverwaltung:A2A definiert klare Protokolle für die Aufgabenübertragung, Überwachung und Erledigung. Es unterstützt das Gruppieren ähnlicher Aufgaben und die Verwaltung über verschiedene Agents hinweg mithilfe eindeutiger Aufgaben-IDs. Aufgaben können definierte Lebenszyklen durchlaufen (z.B. „Eingereicht“, „Wird bearbeitet“, „Abgeschlossen“).
- Undurchsichtige Ausführung:Ein wichtiges Merkmal ist, dass Agents anderen Agents ihre internen Denkprozesse, ihren Speicher oder bestimmte Tools nicht offenlegen müssen. Sie stellen nur ihre aufrufbaren Dienste zur Verfügung, was die Modularität und den Datenschutz fördert.
- Basierend auf bestehenden Standards:A2A nutzt etablierte Webtechnologien wie HTTP, Server-Sent Events (SSE) für das Echtzeit-Streaming und JSON-RPC für den strukturierten Datenaustausch. Dadurch lässt sich die Lösung einfacher in die bestehende IT-Infrastruktur integrieren.
- Asynchrone Kommunikation:Das Protokoll ist in erster Linie für die asynchrone Kommunikation konzipiert. Das ermöglicht einen flexiblen Aufgabenfortschritt und Push-Benachrichtigungen für Updates, auch wenn keine dauerhafte Verbindung besteht.
7. Agentenarchitektur
In diesem Lab erstellen Sie eine Multi-Agenten-Anwendung, die ein Bild gemäß Ihren Vorgaben generiert und das Bild bewertet, bevor es Ihnen präsentiert wird.
Das System ist mit einem Haupt-Agenten namens image_scoring strukturiert, der den gesamten Prozess orchestriert. Dieser Haupt-Agent hat einen Sub-Agenten namens image_generation_scoring_agent, der wiederum eigene Sub-Agents für spezifischere Aufgaben hat. Dadurch wird eine hierarchische Beziehung geschaffen, in der der Haupt-Agent Aufgaben an seine Sub-Agents delegiert. 
Abbildung 3: Gesamter Agentenablauf.
Liste aller Agents
Agentenmodus | Purpose | Untergeordnete Vertreter |
image_scoring (Main Agent) | Dies ist der Root-Agent, der den gesamten Workflow verwaltet. Er führt den image_generation_scoring_agent und den checker_agent wiederholt in einer Schleife aus, bis eine Abbruchbedingung erfüllt ist. | image_generation_scoring_agent |
image_generation_scoring_agent (Sub-Agent von image_scoring) | Dieser Agent ist für die Kernlogik der Bildgenerierung und ‑bewertung verantwortlich. Dazu wird eine Sequenz von drei Sub-Agents ausgeführt. | image_generation_prompt_agent |
checker_agent_instance (Sub-Agent von image_scoring) | Dieser Agent prüft, ob der Prozess zur Bewertung von Bildern fortgesetzt oder beendet werden soll. Es verwendet das Tool check_tool_condition, um die Beendigungsbedingung auszuwerten. | – |
checker_agent_instance (Sub-Agent von image_scoring) | Dieser KI-Agent ist ein Experte für die Erstellung von Prompts zur Bildgenerierung. Es nimmt einen Eingabetext entgegen und generiert einen detaillierten Prompt, der für das Modell zur Bildgenerierung geeignet ist. | – |
image_generation_prompt_agent (Unter-Agent von image_generation_scoring_agent) | Dieser KI-Agent ist ein Experte für die Erstellung von Prompts zur Bildgenerierung. Es nimmt einen Eingabetext entgegen und generiert einen detaillierten Prompt, der für das Modell zur Bildgenerierung geeignet ist. | – |
scoring_images_prompt (Sub-Agent von image_generation_scoring_agent): | Dieser Agent ist ein Experte für die Bewertung und Einstufung von Bildern anhand verschiedener Kriterien. Das generierte Bild wird bewertet. | – |
Liste aller verwendeten Tools
Tool | Beschreibung | User-Agent |
check_tool_condition | Mit diesem Tool wird geprüft, ob die Bedingung für das Beenden der Schleife erfüllt ist oder ob die maximale Anzahl von Iterationen erreicht wurde. Wenn eine dieser Bedingungen zutrifft, wird die Schleife beendet. | checker_agent_instance |
generate_images | Mit diesem Tool werden Bilder mit dem Imagen 3-Modell generiert. Die generierten Bilder können auch in einem Google Cloud Storage-Bucket gespeichert werden. | image_generation_agent |
get_policy | Mit diesem Tool wird eine Richtlinie aus einer JSON-Datei abgerufen. Die Richtlinie wird vom image_generation_prompt_agent verwendet, um den Prompt zur Bildgenerierung zu erstellen, und vom scoring_images_prompt, um die Bilder zu bewerten. | image_generation_agent |
get_image | Mit diesem Tool wird das generierte Bildartefakt geladen, damit es bewertet werden kann. | scoring_images_prompt |
set_score | Mit diesem Tool wird die Gesamtbewertung des generierten Bildes im Sitzungsstatus festgelegt. | scoring_images_prompt |
8. ADK installieren und Umgebung einrichten
In dieser Anleitung verwenden wir Cloud Shell, um die Aufgaben auszuführen.
Cloud Shell-Editor-Tab vorbereiten (diesen Schritt überspringen, wenn der Cloud Shell-Editor bereits geöffnet ist)
- Rufen Sie die GCP Console auf, indem Sie auf den folgenden Link klicken: GCP Console.
- Wenn Sie noch kein Projekt haben, das Sie verwenden können, müssen Sie ein neues Projekt in der GCP Console erstellen. Wählen Sie das Projekt in der Projektauswahl (oben links in der Google Cloud Console) aus. Wenn Sie noch kein Projekt haben, folgen Sie dieser Anleitung, um ein neues Projekt zu erstellen. Nachdem Sie ein neues Projekt erstellt haben, wählen Sie es aus.

Abbildung 2: Wenn Sie auf das Feld direkt neben dem Google Cloud-Logo klicken, können Sie Ihr Projekt auswählen. Achten Sie darauf, dass Ihr Projekt ausgewählt ist.
- In diesem Lab verwenden wir den Cloud Shell-Editor, um unsere Aufgaben auszuführen. Öffnen Sie Cloud Shell und legen Sie das Projekt mit Cloud Shell fest.
- Klicken Sie auf diesen Link, um direkt zum Cloud Shell-Editor zu gelangen.
- Klicken Sie in der Seitenleiste des Cloud Shell-Editors auf die Schaltfläche Ordner öffnen.

- Ihr Basisordner sollte bereits ausgewählt sein. Drücken Sie einfach auf „OK“. Ihr Basisordner ist dann der Stammordner für diese Aufgabe.

- Öffnen Sie das Terminal, falls es noch nicht geöffnet ist. Klicken Sie dazu im Menü auf Terminal > Neues Terminal. Sie können alle Befehle in dieser Anleitung in diesem Terminal ausführen.
- Mit dem folgenden Befehl im Cloud Shell-Terminal können Sie prüfen, ob das Projekt bereits authentifiziert ist.
gcloud auth list
- Wenn Sie sich nicht mehr an Ihre Projekt-ID erinnern, können Sie alle Ihre Projekt-IDs mit
gcloud projects list
- Kopieren Sie die Projekt-ID und legen Sie sie mit dem folgenden Befehl fest.
gcloud config set project <YOUR_PROJECT_ID>
- Führen Sie in Cloud Shell den folgenden Befehl aus, um Ihr Projekt zu bestätigen:
gcloud config list project
ADK und Codebeispiele für dieses Lab herunterladen und installieren
- Führen Sie die folgenden Befehle aus, um die erforderliche Quelle von GitHub zu klonen und die erforderlichen Bibliotheken zu installieren. Führen Sie die Befehle im Terminal aus, das im Cloud Shell-Editor geöffnet ist.
#create the project directory
mkdir ~/imagescoring
cd ~/imagescoring
#clone the code in the local directory
git clone https://github.com/haren-bh/multiagenthandson.git
- Wir verwenden uv, um eine Python-Umgebung zu erstellen (im Cloud Shell-Editor-Terminal ausführen):
#Install uv if you do not have installed yet
pip install uv
#Create the virtual environment
uv venv .adkvenv
source .adkvenv/bin/activate
#go to the project directory
cd ~/imagescoring/multiagenthandson
#install dependencies
uv pip install -r pyproject.toml
- Wenn Sie keinen Cloud Storage-Bucket haben, erstellen Sie einen neuen in Google Cloud Storage. Sie können den Bucket auch mit einem gcloud-Befehl erstellen. Gewähren Sie der Agent-Laufzeit Zugriff auf Google Cloud Storage (im Cloud Shell Editor-Terminal ausführen).
# First, make sure your PROJECT_ID variable is set
PROJECT_ID=$(gcloud config get-value project)
# Now, create the bucket with a unique name
# We'll use the project ID to help ensure uniqueness
gcloud storage buckets create gs://${PROJECT_ID}-imagescoring-bucket
#Now lets give Agent Runtime the permission to access Cloud Storage
# 1. Get the current Project ID (text) and Project Number (numeric)
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
# 2. Construct the Reasoning Engine Service Account email
SA_EMAIL="service-${PROJECT_NUMBER}@gcp-sa-aiplatform-re.iam.gserviceaccount.com"
# 3. Create Agent Runtime Service account if not already created
gcloud beta services identity create --service=aiplatform.googleapis.com --project=${PROJECT_NUMBER}
# 3. Grant GCS Access
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/storage.objectUser" --condition=None
- Klicken Sie im Editor auf „Ansicht“ > „Versteckte Dateien einblenden“. Erstellen Sie im Ordner image_scoring eine .env-Datei mit folgendem Inhalt. Fügen Sie die erforderlichen Details wie Projektname und Cloud Storage-Bucket hinzu (Run in Cloud Shell Editor Terminal).
#go to image_scoring folder
cd ~/imagescoring/multiagenthandson/image_scoring
cat <<EOF>> .env
GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project)
GOOGLE_CLOUD_LOCATION=global
AGENT_ENGINE_LOCATION=us-central1
GOOGLE_CLOUD_STORAGE_BUCKET=$(gcloud config get-value project)-imagescoring-bucket
GCS_BUCKET_NAME=$(gcloud config get-value project)-imagescoring-bucket
SCORE_THRESHOLD=40
IMAGEN_MODEL="gemini-3.1-flash-lite-image"
GENAI_MODEL="gemini-3.5-flash"
EOF
- Rufen Sie in der Seitenleiste des Explorers den Ordner imagescoring/multiagenthandson/image_scoring auf. Klicken Sie auf die Datei agent.py, um sie zu öffnen und sich die Agent-Struktur anzusehen. Dieser Agent enthält den Stamm-Agenten, der eine Verbindung zu den anderen untergeordneten Agenten herstellt.

Abbildung 4: Die Ordnerstruktur, die in der Explorer-Seitenleiste zu sehen ist. Klicken Sie einfach auf eine Datei, um ihren Inhalt zu sehen.
- Kehren Sie im Terminal zum obersten Verzeichnis multiagenthandson zurück und führen Sie den folgenden Befehl aus, um den Agenten lokal auszuführen (im Cloud Shell-Editor-Terminal ausführen).
#go to the directory multiagenthandson
cd ~/imagescoring/multiagenthandson
# Run the following command to run agents locally
adk web --host 0.0.0.0 --port 8080 --allow_origins "regex:https://.*8080-.*\.cloudshell\.dev"

Abbildung 5: ADK-Anwendungsstart
- Strg+Klick (CMD+Klick für MacOS) auf die im Terminal angezeigte http://-URL, um den browserbasierten GUI-Client des ADK zu öffnen. Das Ergebnis sollte so aussehen wie in Abbildung 5.
- Wählen Sie im Drop-down-Menü oben links „image_scoring“ aus (siehe Abbildung 5). Lassen Sie uns jetzt einige Bilder generieren. Die Bilder sollten sich auch im Google Cloud Storage-Bucket befinden. Sie können auf den Bereich Artefakte klicken, um Ihre lokal gespeicherten Bilder zu sehen. Probieren Sie die folgenden Prompts oder eigene Prompts aus.
- Eine friedliche Berglandschaft bei Sonnenuntergang
- Eine Katze fährt Fahrrad

Abbildung 6: Beispielausgabe
9. In Agent Runtime bereitstellen
Jetzt stellen wir den Agent in der Agent Engine bereit. Agent Engine ist ein vollständig verwalteter Dienst zum Bereitstellen von Agenten in der GCP. Die Agent Engine ist mit dem ADK (Agent Development Kit) kompatibel. Daher können mit dem ADK (Agent Development Kit) erstellte Agents in der Agent Engine bereitgestellt werden.
- Bevor Sie mit den Schritten unten im Cloud Shell Editor-Terminal fortfahren, fahren Sie den ADK-Server mit Strg + C herunter.
- Erstellen Sie die Datei requirements.txt mit Poetry. Poetry verwendet pyproject.toml, um die Datei requirements.txt zu erstellen. Prüfen Sie nach dem Ausführen des Befehls, ob die Datei requirements.txt erstellt wurde (im Cloud Shell-Editor-Terminal ausführen).
# Go to the parent folder containing pyproject.toml file
cd ~/imagescoring/multiagenthandson
# install poetry-plugin-export
uv pip install poetry-plugin-export
#Create requirements.txt file
python3 -m poetry export -f requirements.txt --output requirements.txt --without-hashes
- Erstellen Sie das Paket. Wir müssen unsere App in ein Python-Paket vom Typ .whl packen. Dazu verwenden wir Gedichte. Prüfen Sie nach der Ausführung des Befehls, ob ein „dist“-Ordner erstellt wurde, der die Datei .whl enthält (im Cloud Shell-Editor-Terminal ausführen).
# Go to the parent folder containing pyproject.toml file
cd ~/imagescoring/multiagenthandson
#Create python package, to create whl file
python3 -m poetry build
- Als Nächstes bereiten wir das Skript vor, mit dem unser Agent für die Bildbewertung im Agent Engine-Dienst bereitgestellt wird. Suchen Sie im Verzeichnis deploy in der Seitenleiste des Cloud Shell-Editors nach deploy.py und klicken Sie darauf, um die Datei zu öffnen. So bestätigen Sie den Inhalt:
import vertexai
from image_scoring.agent import root_agent
import os
import glob # To easily find the wheel file
from dotenv import load_dotenv
# Load environment variables from image_scoring/.env
env_path = os.path.join(os.path.dirname(__file__), "..", "image_scoring", ".env")
load_dotenv(env_path)
PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")
LOCATION = os.getenv("GOOGLE_CLOUD_LOCATION", "us-central1")
STAGING_BUCKET = f"gs://{os.getenv('GOOGLE_CLOUD_STORAGE_BUCKET')}"
from vertexai import agent_engines
client=vertexai.Client(
project=PROJECT_ID,
location=LOCATION,
)
remote_app = client.agent_engines.create(
agent=root_agent,
config={
"display_name": "image-scoring",
"staging_bucket": STAGING_BUCKET,
"requirements": open(os.path.join(os.getcwd(), "requirements.txt")).readlines() + ["./dist/image_scoring-0.1.0-py3-none-any.whl"],
"extra_packages": [
"./dist/image_scoring-0.1.0-py3-none-any.whl",
], "env_vars":{"GCS_BUCKET_NAME":os.getenv('GOOGLE_CLOUD_STORAGE_BUCKET')}
}
)
print(f"DEBUG: AgentEngine attributes: {dir(remote_app)}")
try:
print(remote_app.api_resource.name)
except AttributeError:
print("Could not find resource_name, check DEBUG output above.")
- Wir können jetzt das Bereitstellungsskript ausführen. Wechseln Sie zuerst zum obersten Ordner multiagenthandson (im Cloud Shell Editor-Terminal ausführen).
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson
#run deploy script from the parent folder containing deploy.py
python3 -m deploy.deploy
Nach der Bereitstellung sollte etwa Folgendes angezeigt werden: 
Abbildung 7: Beispielausgabe
- Jetzt testen wir den bereitgestellten Agenten. Wenn Sie die remote bereitgestellte Agent-Engine testen möchten, kopieren Sie zuerst den Agent-Speicherort aus der Bereitstellungsausgabe im Terminal. Sie sollte etwa so aussehen: projects/xxx/locations/us-central1/reasoningEngines/xxx .
Führen Sie im Cloud Shell-Editor-Terminal im Stammverzeichnis multiagenthandson den folgenden Befehl aus.
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson
#execute remote_test.py
python3 -m testclient.remote_test
- Geben Sie die ID der Reasoning Engine ein. Sie sollte so aussehen:
projects/xxx/locations/us-central1/reasoningEngines/xxx". Geben Sie dann Ihren Prompt ein, um das Bild zu erstellen. Sie können die Bildausgabe im Cloud Storage-Ordner bestätigen.

Abbildung 8: Beispielausgabe
10. A2A-Agenten erstellen
In diesem Schritt erstellen wir einen einfachen A2A-Agenten auf Grundlage des Agenten, den wir in den vorherigen Schritten erstellt haben. Bestehende ADK-Agenten (Agent Development Kit) können unter dem A2A-Protokoll veröffentlicht werden. In diesem Schritt lernen Sie Folgendes:
- Grundlagen des A2A-Protokolls
- Informationen zum Zusammenspiel von ADK- und A2A-Protokollen
- Informationen zur Interaktion mit dem A2A-Protokoll
In dieser Übung verwenden wir den Code im Ordner image_scoring_adk_a2a_server. Bevor Sie mit der Aufgabe beginnen, wechseln Sie bitte in diesen Ordner (im Cloud Shell-Editor-Terminal ausführen).
#change directory to image_scoring_adk_a2a_server
cd ~/imagescoring/multiagenthandson/image_scoring_adk_a2a_server
#copy the env file
cp ~/imagescoring/multiagenthandson/image_scoring/.env remote_a2a/image_scoring
1. A2A-KI-Agentenkarte erstellen
Das A2A-Protokoll erfordert eine Agentenkarte, die alle Informationen zum Agenten enthält, z. B. Agentenfunktionen und eine Anleitung zur Verwendung des Agenten. Sobald ein A2A-Agent bereitgestellt wurde, kann die Agentenkarte über den Link .well-known/agent-card.json aufgerufen werden. Clients können sich auf diese Informationen beziehen, um die Anfrage an Kundenservicemitarbeiter zu senden.
Rufen Sie das Verzeichnis remote_a2a/image_scoring auf und suchen Sie in der Seitenleiste des Cloud Shell-Editors nach „agents.json“. Klicken Sie auf die Datei, um sie zu öffnen und zu prüfen, ob der Inhalt dem folgenden entspricht:
{
"name": "image_scoring",
"description": "Agent that generates images based on user prompts and scores their adherence to the prompt.",
"url": "http://localhost:8001/a2a/image_scoring",
"version": "1.0.0",
"defaultInputModes": ["text/plain"],
"defaultOutputModes": ["image/png", "text/plain"],
"capabilities": {
"streaming": true,
"functions": true
},
"skills": [
{
"id": "generate_and_score_image",
"name": "Generate and Score Image",
"description": "Generates an image from a given text prompt and then evaluates how well the generated image adheres to the original prompt, providing a score.",
"tags": ["image generation", "image scoring", "evaluation", "AI art"],
"examples": [
"Generate an image of a futuristic city at sunset",
"Create an image of a cat playing a piano",
"Show me an image of a serene forest with a hidden waterfall"
]
}
]
}
2. A2A-KI-Agent erstellen Prüfen Sie im Stammverzeichnis image_scoring_adk_a2a_server, ob die Datei „a2a_agent.py“ vorhanden ist. Sie können sie öffnen, indem Sie in der Seitenleiste des Cloud Shell-Editors auf den Dateinamen klicken. Diese Datei dient als Einstiegspunkt für den A2A-Agenten und sollte den folgenden Inhalt haben:
#change directory to image_scoring_adk_a2a_server
cd ~/imagescoring/multiagenthandson/image_scoring_adk_a2a_server
from google.adk.agents.remote_a2a_agent import RemoteA2aAgent
root_agent = RemoteA2aAgent(
name="image_scoring",
description="Agent to give interesting facts.",
agent_card="http://localhost:8001/a2a/image_scoring/.well-known/agent.json",
# Optional configurations
timeout=300.0, # HTTP timeout (seconds)
httpx_client=None, # Custom HTTP client
)
3. A2A-Agenten ausführen
Jetzt können wir den Agent ausführen. image_scoring_adk_a2a_server
#following command runs the ADK agent as a2a agent
adk api_server --a2a --port 8001 remote_a2a
4. A2A-KI-Agenten testen
Sobald der Agent ausgeführt wird, können wir ihn testen. Sehen wir uns zuerst die Agent-Karte an. Öffnen Sie ein neues Terminal über „Terminal“ > „Neues Terminal“ und führen Sie den folgenden Befehl aus (im neu geöffneten Cloud Shell-Editor-Terminal).
#Execute the following
curl http://localhost:8001/a2a/image_scoring/.well-known/agent.json
Wenn Sie den obigen Befehl ausführen, sollte die Agentenkarte für unseren A2A-Agenten angezeigt werden. Sie enthält hauptsächlich den Inhalt der Datei agent.json, die wir im vorherigen Schritt erstellt haben.
Senden wir jetzt eine Anfrage an den KI-Agenten. Wir können „curl“ verwenden, um Anfragen an den Agent zu senden. Führen Sie den Befehl im neu geöffneten Cloud Shell-Editor-Terminal aus.
curl -X POST http://localhost:8001/a2a/image_scoring -H 'Content-Type: application/json' -d '{
"id": "uuid-123",
"params": {
"message": {
"messageId": "msg-456",
"parts": [{"text": "Create an image of a cat"}],
"role": "user"
}
}
}'
Im obigen Beispiel können Sie den Prompt ändern, indem Sie die Zeile Create an image of a cat (Erstelle ein Bild einer Katze) ändern. Nachdem Sie den Befehl ausgeführt haben, können Sie das Ausgabebild im angegebenen Google Cloud Storage suchen.
11. Bereinigen
Jetzt räumen wir auf.
- Löschen Sie den gerade erstellten Agent Runtime-Server. Rufen Sie die Gemini Enterprise Agent Platform auf, indem Sie „Gemini Enterprise Agent Platform“ in die Suchleiste der Google Cloud Console eingeben. Klicken Sie links auf Agent Engine.Sie können den Agenten löschen, indem Sie auf „Löschen“ klicken.

Abbildung 9: Sie können die Agent Runtime-Instanzen über die Google Cloud Console löschen.
- Dateien in Cloud Shell löschen
#Execute the following to delete the files
cd ~
rm -R ~/imagescoring
- Löschen Sie den Bucket. Sie können in der GCP Console unter „Cloud Storage“ Ihren Bucket auswählen und löschen.

Abbildung 10: Bucket löschen
12. Fazit
Das wars! Sie haben das Lab erfolgreich abgeschlossen. Sie haben eine Multi-Agenten-Anwendung mit dem ADK (Agent Development Kit) erfolgreich in der Agent Runtime bereitgestellt. Dies ist ein wichtiger Schritt, der den Kernlebenszyklus einer modernen cloudnativen Anwendung abdeckt und Ihnen eine solide Grundlage für die Bereitstellung Ihrer eigenen komplexen Agentensysteme bietet.
Zusammenfassung
In diesem Lab haben Sie Folgendes gelernt:
- Multi-Agenten-Anwendung mit dem ADK (Agent Development Kit) erstellen
- Stellen Sie die Anwendung in der Agent Runtime bereit.
- Erstellen Sie einen Agenten, der über das A2A-Protokoll kommunizieren kann.
Nützliche Ressourcen
Vom Prototyp zur Produktion
Dieses Lab ist Teil des Lernpfads „Produktionsreife KI mit Google Cloud“.
- Gesamten Lehrplan ansehen
- Teilen Sie Ihre Fortschritte unter dem Hashtag #ProductionReadyAI.