1. Einführung
Übersicht
In diesem Lab erfahren Sie, wie Sie komplexe Multi-Agent-Systeme mit dem Google Agent Development Kit (Google ADK) orchestrieren. Sie gehen von einfachen Agentenhierarchien zur Erstellung automatisierter, kollaborativer Workflows über.
Aufgaben
Sie erstellen zwei verschiedene Multi-Agenten-Systeme:
- Ein einfacher Reiseplanungs-Agent, der lernt, Unterhaltungen zwischen einem „Brainstorming“-Agenten und einem „Attraktionsplanung“-Agenten zu übertragen.
- Ein fortschrittlicherer Generator für Filmkonzepte, der einen „Writer’s Room“ mit automatisierten Agenten (z. B. einem Rechercheur, einem Drehbuchautor und einem Kritiker) verwendet, die in einer Schleife zusammenarbeiten, um eine vollständige Filmhandlung zu erstellen.
Lerninhalte
- So erstellen Sie Beziehungen zwischen übergeordneten und untergeordneten Agents.
- So schreiben Sie Daten aus einem Tool in die Sitzung
state. - So lesen Sie Daten aus
statemithilfe von Schlüsselvorlagen (z.B.{my_key?}). SequentialAgentfür Schritt-für-Schritt-Workflows verwendenLoopAgentverwenden, um iterative Optimierungszyklen zu erstellen.- So verwenden Sie ein
ParallelAgent, um unabhängige Aufgaben gleichzeitig auszuführen.
2. Multi-Agenten-Systeme
Mit dem Agent Development Kit (ADK) können Entwickler zuverlässigere, komplexere und mehrstufige Verhaltensweisen von generativen Modellen abrufen. Mit dem ADK können Sie anstelle eines komplexen Prompts einen Ablauf aus mehreren, einfacheren Agenten erstellen, die zusammenarbeiten, um ein Problem zu lösen, indem sie die Arbeit aufteilen.
Dieser Ansatz bietet mehrere Vorteile gegenüber der Verwendung eines einzelnen, monolithischen Prompts:
- Einfacheres Design:Es ist einfacher, einen Ablauf kleiner, spezialisierter Agents zu entwerfen und zu organisieren, als einen großen, komplexen Prompt zu erstellen.
- Zuverlässigkeit:Spezialisierte Agents sind bei ihren spezifischen Aufgaben zuverlässiger als ein großer, komplexer Agent.
- Wartungsfreundlichkeit:Es ist einfacher, einen kleinen, spezialisierten Agenten zu korrigieren oder zu verbessern, ohne andere Teile des Systems zu beschädigen.
- Modularität:Agents, die für einen Workflow entwickelt wurden, können problemlos in anderen Workflows wiederverwendet werden.
Hierarchische Agent-Baumstruktur

Im ADK organisieren Sie Agents in einer Baumstruktur. Diese Hierarchie ist entscheidend für die Steuerung des Gesprächsverlaufs, da sie einschränkt, welcher Agent das Gespräch an welchen anderen Agenten „übergeben“ kann. Dadurch ist das Verhalten des Systems besser vorhersagbar und die Fehlerbehebung wird einfacher. Die wichtigsten Vorteile:
- Intuitives Design:Die Struktur ist an echten Teams orientiert, was die Nachvollziehbarkeit erleichtert.
- Kontrollierter Ablauf:Die Hierarchie ermöglicht eine präzise Steuerung der Aufgabenübertragung, was beim Debuggen hilfreich ist. Die Baumstruktur sorgt beispielsweise dafür, dass der richtige Agent zum Erstellen von Berichten aufgerufen wird, auch wenn Sie zwei mit ähnlichen Beschreibungen haben.
Die gesamte Struktur beginnt mit dem root_agent. Dieser Agent fungiert als übergeordnetes Element und kann ein oder mehrere untergeordnete Agents haben, die wiederum auch übergeordnete Elemente für ihre eigenen untergeordneten Agents sein können. So entsteht der Baum.
3. Projekt einrichten
Google-Konto
Wenn Sie noch kein privates Google-Konto haben, müssen Sie ein Google-Konto erstellen.
Verwenden Sie stattdessen ein privates Konto.
In der Google Cloud Console anmelden
Melden Sie sich mit einem privaten Google-Konto in der Google Cloud Console an.
Abrechnung aktivieren
Google Cloud-Guthaben im Wert von 5 $einlösen (optional)
Für diesen Workshop benötigen Sie ein Rechnungskonto mit Guthaben. Wenn Sie Ihre eigene Abrechnung verwenden möchten, können Sie diesen Schritt überspringen.
- Klicken Sie auf diesen Link und melden Sie sich mit einem privaten Google-Konto an.Sie sehen dann etwa Folgendes:

- Klicken Sie auf die Schaltfläche HIER KLICKEN, UM AUF IHR GUTHABEN ZUZUGREIFEN. Sie werden dann auf eine Seite weitergeleitet, auf der Sie Ihr Abrechnungsprofil einrichten können.

- Klicken Sie auf Bestätigen.
Sie sind jetzt mit einem Google Cloud Platform-Testrechnungskonto verbunden.

Privates Rechnungskonto einrichten
Wenn Sie die Abrechnung mit Google Cloud-Guthaben eingerichtet haben, können Sie diesen Schritt überspringen.
Klicken Sie hier, um die Abrechnung in der Cloud Console zu aktivieren und ein privates Rechnungskonto einzurichten.
Hinweise:
- Die Kosten für Cloud-Ressourcen für dieses Lab sollten weniger als 1 $betragen.
- Sie können die Schritte am Ende dieses Labs ausführen, um Ressourcen zu löschen und so weitere Kosten zu vermeiden.
- Neuen Nutzern steht die kostenlose Testversion mit einem Guthaben von 300$ zur Verfügung.
Projekt erstellen (optional)
Wenn Sie kein aktuelles Projekt haben, das Sie für dieses Label verwenden möchten, erstellen Sie hier ein neues Projekt.
4. Cloud Shell-Editor öffnen
- Klicken Sie auf diesen Link, um direkt zum Cloud Shell-Editor zu gelangen.
- Wenn Sie heute an irgendeinem Punkt zur Autorisierung aufgefordert werden, klicken Sie auf Autorisieren, um fortzufahren.

- Wenn das Terminal nicht unten auf dem Bildschirm angezeigt wird, öffnen Sie es:
- Klicken Sie auf Ansehen.
- Klicken Sie auf Terminal
.
- Legen Sie im Terminal Ihr Projekt mit diesem Befehl fest:
gcloud config set project [PROJECT_ID]- Beispiel:
gcloud config set project lab-project-id-example - Wenn Sie sich nicht mehr an Ihre Projekt-ID erinnern, können Sie alle Ihre Projekt-IDs mit folgendem Befehl auflisten:
gcloud projects list
- Beispiel:
- Es sollte folgende Meldung angezeigt werden:
Updated property [core/project].
5. APIs aktivieren
Wenn Sie die Vertex AI API verwenden und mit dem Gemini-Modell interagieren möchten, müssen Sie die Vertex AI API in Ihrem Google Cloud-Projekt aktivieren.
- Aktivieren Sie die API im Terminal:
gcloud services enable aiplatform.googleapis.com
Hier finden Sie die aktualisierten Abschnitte, in denen das manuelle Erstellen von Dateien durch Anleitungen zum Klonen des GitHub-Repositorys und Installieren der Abhängigkeiten ersetzt wird.
Einführung in das Vertex AI SDK für Python
Wenn Sie in Ihrer Python-Anwendung mit Modellen interagieren möchten, die auf Vertex AI gehostet werden, verwenden Sie das Vertex AI SDK für Python. Dieses SDK vereinfacht das Senden von Prompts, das Festlegen von Modellparametern und das Empfangen von Antworten, ohne dass die Komplexität der zugrunde liegenden API-Aufrufe direkt berücksichtigt werden muss.
Eine umfassende Dokumentation zum Vertex AI SDK für Python finden Sie unter Einführung in das Vertex AI SDK für Python | Google Cloud.
6. Projektumgebung einrichten
Repository klonen
- Klonen Sie im Terminal das Repository mit den Startdateien.
Das Flaggit clone --depth 1 https://github.com/GoogleCloudPlatform/devrel-demos.git--depth 1klont nur die neueste Version, was schneller geht. - Wechseln Sie im Terminal in das richtige Arbeitsverzeichnis für dieses Lab.
cd devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems
Virtuelle Umgebung aktivieren
- Erstellen und aktivieren Sie im Terminal eine virtuelle Umgebung mit
uv:uv venv source .venv/bin/activate - Installieren Sie im Terminal
google-adkund die anderen Abhängigkeiten aus der Dateirequirements.txt:uv pip install -r requirements.txt
Dateistruktur überprüfen
Nachdem alle Dateien erstellt wurden, öffnen Sie den Ordner adk_multiagent_systems im Explorer, um die vollständige Struktur zu sehen.
- Wählen Sie im Menü des Cloud Shell-Editors Datei > Ordner öffnen… aus.

- Fügen Sie im Pop-up-Fenster nach Ihrem Nutzernamen die folgenden Ordnerinformationen hinzu:
devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems/. Klicken Sie auf OK.
Das sollte ungefähr so aussehen:
- Der Explorer-Bereich auf der linken Seite wird aktualisiert. Sie sollten nun die vollständige Projektstruktur mit den Unterverzeichnissen
parent_and_subagentsundworkflow_agentssehen.
Umgebungsvariablen einrichten
- Sie befinden sich bereits im Verzeichnis
adk_multiagent_systems. Erstellen Sie im Terminal eine.env-Datei zum Speichern Ihrer Umgebungsvariablen:cloudshell edit .env - Fügen Sie Folgendes in die Datei
.envein, die im Editor geöffnet wird:GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT="[YOUR-PROJECT-ID]" GOOGLE_CLOUD_LOCATION=global MODEL="gemini-2.5-flash" - Ersetzen Sie
[YOUR-PROJECT-ID]durch Ihre tatsächliche Google Cloud-Projekt-ID. (z.B.PROJECT_ID = "google-cloud-labs")
Wenn Sie sich nicht an Ihre Projekt-ID erinnern können, führen Sie den folgenden Befehl in Ihrem Terminal aus. Sie sehen dann eine Liste aller Ihrer Projekte und deren IDs.gcloud projects list - Kopieren Sie im Terminal die Datei
.envin die Unter-Agent-Verzeichnisse, damit auch sie auf die Variablen zugreifen können: Die Dateistruktur sollte jetzt so aussehen:cp .env parent_and_subagents/.env cp .env workflow_agents/.env
7. Übertragungen zwischen übergeordneten, untergeordneten und gleichrangigen Agenten
Die Unterhaltung beginnt immer mit dem root_agent. Standardmäßig verwendet ein übergeordneter Agent die description seiner untergeordneten Agents, um zu entscheiden, wann die Unterhaltung weitergeleitet werden soll. Sie können diese Übertragungen auch explizit im instruction des übergeordneten Kontos mithilfe der name der untergeordneten Konten steuern.
Probieren wir es aus.
- Öffnen Sie im Cloud Shell-Editor die Datei
adk_multiagent_systems/parent_and_subagents/agent.py. Beachten Sie die drei Agents in der Dateiagent.py:root_agent(mit dem Namensteering): Stellt dem Nutzer eine Frage, um zu entscheiden, an welchen untergeordneten Agenten weitergeleitet werden soll. Anfangs stützt sie sich nur auf diedescriptionihrer untergeordneten Agents.travel_brainstormer: Hilft dem Nutzer, Ideen für Reiseziele zu sammeln.attractions_planner: Hilft dem Nutzer, eine Liste mit Aktivitäten in einem bestimmten Land zu erstellen.
- Machen Sie
travel_brainstormerundattractions_plannerzu Sub-Agents vonroot_agent, indem Sie die folgende Zeile in die Erstellung vonroot_agenteinfügen:sub_agents=[travel_brainstormer, attractions_planner] - Chatten Sie im Terminal mit Ihrem Agent:
cd ~/devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems adk run parent_and_subagents - Geben Sie bei der Eingabeaufforderung
[user]:im Terminal Folgendes ein: Beispielausgabe (Ihre Ausgabe kann etwas anders aussehen):hello[steering]: Hi there! Do you already have a country in mind for your trip, or would you like some help deciding where to go?
- Teilen Sie dem Agent im Terminal Folgendes mit:
Beispielausgabe (Ihre Ausgabe kann etwas anders aussehen):I could use some help deciding. Beachten Sie das Tag[travel_brainstormer]: Okay! To give you the best recommendations, I need to understand what you're looking for in a trip. ...
[travel_brainstormer]. Dieroot_agent-Übertragung basiert nur auf derdescriptiondes untergeordneten Kundenservicemitarbeiters. - Geben Sie an der Eingabeaufforderung
user:im Terminalexitein und drücken Sie die Eingabetaste, um die Unterhaltung zu beenden. - Sehen wir uns das genauer an. Fügen Sie in
agent.pyFolgendes zuminstructiondesroot_agenthinzu:If they need help deciding, send them to 'travel_brainstormer'. If they know what country they'd like to visit, send them to the 'attractions_planner'. - Führen Sie den Agent im Terminal noch einmal aus:
adk run parent_and_subagents - Geben Sie bei der Eingabeaufforderung
[user]:im Terminal Folgendes ein:hello - Das solltest du sagen:
Beispielausgabe (Ihre Ausgabe kann etwas anders aussehen):I would like to go to Japan. Beachten Sie die Übertragung zu[attractions_planner]: Okay, I can help you with that! Here are some popular attractions in Japan: ...
attractions_plannergemäß Ihrer neuen Anleitung. - Antworte jetzt mit:
Beispielausgabe (Ihre Ausgabe kann etwas anders aussehen):Actually I don't know what country to visit. Sie wurden an[travel_brainstormer]: Okay! I can help you brainstorm some countries for travel...
travel_brainstormerweitergeleitet, einen Peer vonattractions_planner. Das ist standardmäßig zulässig. - Geben Sie an der Nutzeraufforderung
exitein, um die Sitzung zu beenden.
Zusammenfassung
In diesem Abschnitt haben Sie die Grundlagen der Agent-Hierarchie und des Unterhaltungsablaufs kennengelernt:
- Die Unterhaltung beginnt immer mit dem
root_agent. - Ein übergeordneter Agent kann automatisch an einen untergeordneten Agenten übertragen werden, basierend auf seiner
description. - Sie können diesen Ablauf explizit steuern, indem Sie dem Elternteil
instructiongeben, um die Übertragung an einen untergeordneten Kundenservicemitarbeiter übernamezu ermöglichen. - Standardmäßig können Agents an ihre
peer-Agents (Geschwister in der Hierarchie) weitergeleitet werden.
8. Sitzungsstatus zum Speichern und Abrufen von Informationen verwenden
Jede ADK-Unterhaltung hat ein Session, das ein Sitzungsstatus-Dictionary enthält. Auf diesen Status können alle Agents zugreifen. Er eignet sich daher ideal, um Informationen zwischen ihnen zu übergeben oder Daten (z. B. eine Liste) während der Konversation beizubehalten.
So fügen Sie dem Status etwas hinzu und lesen daraus:
- Zur Datei
adk_multiagent_systems/parent_and_subagents/agent.pyzurückkehren - Fügen Sie die folgende Funktionsdefinition nach dem
# Tools-Header ein: Beachten Sie in diesem Code Folgendes:def save_attractions_to_state( tool_context: ToolContext, attractions: List[str] ) -> dict[str, str]: """Saves the list of attractions to state["attractions"]. Args: attractions [str]: a list of strings to add to the list of attractions Returns: None """ # Load existing attractions from state. If none exist, start an empty list existing_attractions = tool_context.state.get("attractions", []) # Update the 'attractions' key with a combo of old and new lists. # When the tool is run, ADK will create an event and make # corresponding updates in the session's state. tool_context.state["attractions"] = existing_attractions + attractions # A best practice for tools is to return a status message in a return dict return {"status": "success"}- Die Funktion empfängt
tool_context: ToolContext. Dieses Objekt ist Ihr Gateway zur Sitzung. - In Zeile
tool_context.state["attractions"] = ...wird direkt aus dem Status-Dictionary der Sitzung gelesen und in dieses geschrieben. Das ADK erledigt den Rest.
- Die Funktion empfängt
- Fügen Sie das Tool dem
attractions_planner-Agent hinzu, indem Sie den Parametertoolshinzufügen:tools=[save_attractions_to_state] - Fügen Sie dem vorhandenen
instructiondesattractions_planner-Agents die folgenden Aufzählungszeichen hinzu:- When they reply, use your tool to save their selected attraction and then provide more possible attractions. - If they ask to view the list, provide a bulleted list of { attractions? } and then suggest some more. - Starten Sie die Web-UI des Agent Development Kit mit dem folgenden Befehl im Terminal:
Ausgabeadk webINFO: Started server process [2434] INFO: Waiting for application startup. +-------------------------------------------------------+ | ADK Web Server started | | | | For local testing, access at http://localhost:8000. | +-------------------------------------------------------+ INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) - Klicken Sie im Cloud Shell-Terminal auf die Schaltfläche Webvorschau und wählen Sie Port ändern aus, um die Weboberfläche in einem neuen Tab aufzurufen.

- Geben Sie die Portnummer 8000 ein und klicken Sie auf Ändern und Vorschau. Ein neuer Browsertab mit der ADK Dev UI wird geöffnet.

- Wählen Sie links im Drop-down-Menü Agent auswählen die Option
parent_and_subagentsaus. - Beginne das Gespräch mit:
hello - Nachdem der Kundenservicemitarbeiter Sie begrüßt hat, antworten Sie mit:
Sie werden zurI'd like to go to Egypt.attractions_plannerweitergeleitet und erhalten eine Liste mit Sehenswürdigkeiten. - Wählen Sie eine Attraktion aus, z. B.:
I'll go to the Sphinx - Sie sollten eine Antwort wie Okay, I've saved The Sphinx to your list... (Okay, ich habe die Sphinx auf deiner Liste gespeichert) erhalten.
- Klicken Sie auf das Antworttool-Kästchen (mit einem Häkchen markiert), um den Termin aufzurufen, der aus der Antwort des Tools erstellt wurde.
Beachten Sie, dass es ein Feld actions enthält, dasstateDeltamit den Änderungen des Status enthält. - Antworten Sie mit einer anderen Attraktion aus der Liste des Kundenservicemitarbeiters.
- Klicken Sie im Navigationsmenü auf der linken Seite auf das „X“, um den Fokus auf das zuvor untersuchte Ereignis zu beenden.
- Klicken Sie in der linken Seitenleiste auf den Tab Status. Sie können das
attractions-Array jetzt im Status der Sitzung sehen. Es sollte beide ausgewählten Elemente enthalten.
- Senden Sie diese Nachricht an den Kundenservicemitarbeiter:
Der Agent sollte jetzt den Status lesen und Ihre Liste zurückgeben.What is on my list? - Wenn Sie mit dem Testen des Agents fertig sind, schließen Sie den Webbrowser-Tab und drücken Sie im Cloud Shell-Terminal STRG + C, um den Server zu beenden.
Zusammenfassung des Abschnitts
In diesem Abschnitt haben Sie gelernt, wie Sie den Status Session verwenden, um Daten freizugeben:
- Status schreiben: Sie schreiben aus einem Tool in das Status-Dictionary und verwenden dazu das
tool_context.state-Objekt (z.B.tool_context.state["my_list"] = [...]) verwenden. - Status lesen: Sie fügen Statusdaten direkt in die
instructioneines Agenten ein, indem Sie Schlüsselvorlagen verwenden (z.B.Here is your list: {my_list?}) verwenden. - Status prüfen: Sie können den Sitzungsstatus live in der ADK Dev UI auf dem Tab „State“ (Status) überwachen.
9. Workflow-Agenten
Bisher haben Sie gesehen, wie ein übergeordneter Agent die Anfrage an einen untergeordneten Agenten weiterleitet und dann auf den Nutzer wartet. Workflow-Agents funktionieren anders: Sie führen ihre untergeordneten Agents nacheinander in einem automatisierten Ablauf aus, ohne auf Nutzereingaben zu warten.
Das ist ideal für automatisierte, mehrstufige Aufgaben wie eine „Plan and Execute“- oder „Draft and Revise“-Pipeline. Das ADK bietet drei integrierte Workflow-Agents, um dies zu verwalten:
SequentialAgentLoopAgentParallelAgent
Im restlichen Teil dieses Labs geht es darum, mit diesen drei Workflow-Agents ein Multi-Agent-System zu erstellen.
Sie erstellen einen Agent, der ein Konzeptdokument für einen neuen Film über eine historische Figur entwickelt. Ihre Agents übernehmen die Recherche, das iterative Schreiben und die Berichterstellung.
Am Ende sieht Ihr System so aus:

Sie erstellen dieses System Schritt für Schritt und beginnen mit dem einfachsten Workflow.
10. Multi-Agent-System mit einem SequentialAgent erstellen
Ein SequentialAgent ist ein Workflow-Agent, der seine untergeordneten Agents in einer einfachen, linearen Reihenfolge ausführt. Jeder Agent in der sub_agents-Liste wird nacheinander ausgeführt. Das ist ideal für Pipelines, in denen Aufgaben in einer bestimmten Reihenfolge ausgeführt werden müssen, wie beim Agenten für Filmvorschläge, den Sie jetzt erstellen.
Die erste Version ist so strukturiert:

- Ein
root_agent(greeter) begrüßt den Nutzer und ermittelt das Filmthema. - Die Daten werden dann in ein
SequentialAgentmit dem Namenfilm_concept_teamübertragen. DiesesSequentialAgenthat folgende Eigenschaften:- Führen Sie einen
researcher-Agent aus, um Fakten aus Wikipedia abzurufen. - Führen Sie einen
screenwriter-Agent aus, um diese Fakten zum Schreiben einer Handlung zu verwenden. - Führen Sie einen
file_writer-Agent aus, um das endgültige Diagramm in einer Datei zu speichern.
- Führen Sie einen
Führen wir die Abfrage aus.
- Öffnen Sie im Cloud Shell-Editor die Datei
adk_multiagent_systems/workflow_agents/agent.py.
Lesen Sie diese Agent-Definitionsdatei. Da untergeordnete Agents definiert werden müssen, bevor sie einem übergeordneten Agent zugewiesen werden können, können Sie die Agents von unten nach oben lesen, um die Datei in der Reihenfolge des Unterhaltungsablaufs zu lesen. - Beachten Sie das
append_to_state-Tool. Mit dieser Hilfsfunktion können Kundenservicemitarbeiter Daten an eine Liste im Sitzungsstatus anhängen. So übergebenresearcherundscreenwriterihre Arbeit. - Probieren Sie den KI-Agenten aus. Starten Sie die Weboberfläche im Terminal mit aktivierter Live-Aktualisierung:
cd ~/devrel-demos/ai-ml/build-multiagent-systems-with-adk/adk_multiagent_systems adk web --reload_agents - Klicken Sie im Cloud Shell-Terminal auf die Schaltfläche Webvorschau und wählen Sie Port ändern aus, um die Weboberfläche in einem neuen Tab aufzurufen.

- Geben Sie die Portnummer 8000 ein und klicken Sie auf Ändern und Vorschau. Ein neuer Browsertab mit der ADK Dev UI wird geöffnet.

- Wählen Sie im Drop-down-Menü Agent auswählen die Option
workflow_agentsaus. - Beginne die Unterhaltung mit:
hello. Dergreeter-Agent antwortet. - Geben Sie bei Aufforderung eine historische Person ein. Sie können eine dieser Optionen oder eine eigene verwenden:
- Zhang Zhongjing
- Ada Lovelace
- Marcus Aurelius
- Die
SequentialAgentwird jetzt übernommen. Es werden keine Zwischennachrichten angezeigt. Dieresearcher,screenwriterundfile_writerwerden nacheinander ausgeführt. Der Agent antwortet erst, wenn die gesamte Sequenz abgeschlossen ist.
Wenn das nicht funktioniert, können Sie oben rechts auf + Neue Sitzung klicken und es noch einmal versuchen. - Sobald der Agent bestätigt, dass die Datei geschrieben wurde, suchen Sie die neue
.txt-Datei im Verzeichnismovie_pitchesim Cloud Shell-Editor und öffnen Sie sie, um die Ausgabe zu sehen. - Klicken Sie in der ADK-Entwickler-UI auf das letzte Agentsymbol im Chatverlauf, um die Ereignisansicht zu öffnen.
- In der Ereignisansicht wird ein visuelles Diagramm des Agent-Baums angezeigt. Sie sehen, wie der
greeterdenfilm_concept_teamaufgerufen hat, der dann seine einzelnen untergeordneten Agents der Reihe nach aufgerufen hat.
- Sie können für jeden Agenten im Diagramm auf die Tabs Anfrage und Antwort klicken, um die genauen Daten zu sehen, die übergeben wurden, einschließlich des Sitzungsstatus.
Zusammenfassung des Abschnitts
In diesem Abschnitt haben Sie gelernt, wie Sie einen Workflow-Agent verwenden:
- Ein
SequentialAgentführt seine untergeordneten Agents nacheinander aus, ohne zwischen den Schritten auf Nutzereingaben zu warten. - Dies ist ein „Workflow“, da der Nutzer mit
root_agentspricht, das dann die Arbeit anSequentialAgentübergibt, damit diese abgeschlossen werden kann. - Untergeordnete Agents in der Sequenz verwenden den Sitzungsstatus (z.B.
{ PLOT_OUTLINE? }) aufrufen, um auf die Arbeit vorheriger Kundenservicemitarbeiter zuzugreifen. - Mit dem Ereignisdiagramm in der Entwickler-UI können Sie den gesamten Agent-zu-Agent-Workflow visualisieren und debuggen.
11. LoopAgent für iterative Arbeit hinzufügen
Der LoopAgent ist ein Workflow-Agent, der seine untergeordneten Agents nacheinander ausführt und dann wiederholt, beginnend mit dem ersten. Diese „Schleife“ wird fortgesetzt, bis eine Bedingung erfüllt ist, z. B. bis eine bestimmte Anzahl von max_iterations erreicht ist oder ein untergeordneter Agent das integrierte Tool exit_loop aufruft.
Das ist nützlich für Aufgaben, die eine iterative Verfeinerung erfordern. Sie fügen diesen LoopAgent hinzu, um einen „Writer’s Room“ für Ihren Filmkonzept-Agenten zu erstellen. So können ein researcher-, ein screenwriter- und ein neuer critic-Agent in einer Schleife zusammenarbeiten und die Handlung mit jedem Durchlauf verbessern, bis der critic-Agent entscheidet, dass sie fertig ist. So kann der Agent auch vage Nutzereingaben (z. B. „ein alter Arzt“) verarbeiten, da er eine Idee recherchieren und verfeinern kann.

So nehmen Sie diese Änderungen vor:
- Fügen Sie in
adk_multiagent_systems/workflow_agents/agent.pyden Import fürexit_loophinzu (in der Nähe der anderengoogle.adk-Importe):from google.adk.tools import exit_loop - Fügen Sie den neuen
critic-Agent hinzu. Dieser Agent überprüft den Plot. Wenn es gut ist, wirdexit_loopaufgerufen. Falls nicht, wird dem Status für den nächsten Schleifendurchlauf Feedback hinzugefügt.
Fügen Sie die folgende Agent-Definition unter dem Abschnitt# Agentsein:critic = Agent( name="critic", model=model_name, description="Reviews the outline so that it can be improved.", instruction=""" INSTRUCTIONS: Consider these questions about the PLOT_OUTLINE: - Does it meet a satisfying three-act cinematic structure? - Do the characters' struggles seem engaging? - Does it feel grounded in a real time period in history? - Does it sufficiently incorporate historical details from the RESEARCH? If the PLOT_OUTLINE does a good job with these questions, exit the writing loop with your 'exit_loop' tool. If significant improvements can be made, use the 'append_to_state' tool to add your feedback to the field 'CRITICAL_FEEDBACK'. Explain your decision and briefly summarize the feedback you have provided. PLOT_OUTLINE: { PLOT_OUTLINE? } RESEARCH: { research? } """, before_model_callback=log_query_to_model, after_model_callback=log_model_response, tools=[append_to_state, exit_loop] ) - Erstellen Sie den
writers_roomLoopAgent. Sie enthält die drei Agents, die in der Schleife verwendet werden.
Fügen Sie den folgenden Code über derfilm_concept_team-Agent-Definition ein:writers_room = LoopAgent( name="writers_room", description="Iterates through research and writing to improve a movie plot outline.", sub_agents=[ researcher, screenwriter, critic ], max_iterations=5, ) - Aktualisieren Sie die
film_concept_teamSequentialAgent, um die neuewriters_room-Schleife zu verwenden. Ersetzen Sieresearcherundscreenwriterdurch den einzelnenwriters_room-Agenten.Ersetzen Sie Ihre vorhandenefilm_concept_team-Definition durch Folgendes:film_concept_team = SequentialAgent( name="film_concept_team", description="Write a film plot outline and save it as a text file.", sub_agents=[ writers_room, file_writer ], ) - Kehren Sie zum Tab „ADK Dev UI“ zurück und klicken Sie oben rechts auf + Neue Sitzung.
- Beginne eine neue Unterhaltung mit:
hello - Geben Sie dem Kundenservicemitarbeiter dieses Mal ein allgemeineres Thema an. Hier einige Ideen:
- ein Industriedesigner, der Produkte für die breite Masse entwarf
- ein Kartograf (ein Kartenhersteller)
- der Mann, der dafür sorgte, dass Pflanzen mehr Nahrungsmittel lieferten
- Wenn die Schleife abgeschlossen ist, schreibt der Agent die Datei. Sehen Sie sich die generierte Datei im Verzeichnis
adk_multiagent_systems/movie_pitchesan. - Sehen Sie sich das Ereignisdiagramm in der Entwickler-UI an, um die Schleifenstruktur zu sehen.
Zusammenfassung des Abschnitts
In diesem Abschnitt haben Sie gelernt, wie Sie die LoopAgent verwenden:
- Ein
LoopAgentist ein Workflow-Agent, der seine Sequenz von untergeordneten Agents wiederholt und so eine „innere Schleife“ für iterative Aufgaben erstellt. - Agents innerhalb der Schleife verwenden den Sitzungsstatus, um Aufgaben zu übergeben (z.B.
PLOT_OUTLINE) und Feedback (z.B.CRITICAL_FEEDBACK) zueinander. - Die Schleife kann durch Erreichen eines
max_iterations-Limits oder durch einen Agenten, der dasexit_loop-Tool aufruft, beendet werden.
12. ParallelAgent für „Fan-out-and-gather“ verwenden
Der ParallelAgent ist ein Workflow-Agent, der alle seine Sub-Agents gleichzeitig (parallel) ausführt. Das ist nützlich für Aufgaben, die in unabhängige Unteraufgaben unterteilt werden können, z. B. für die Ausführung von zwei verschiedenen Forschungsjobs.
Sie verwenden ein ParallelAgent, um ein „Pre-Production-Team“ zu erstellen, das parallel arbeitet. Ein Kundenservicemitarbeiter recherchiert das Einspielergebnis, während ein anderer gleichzeitig Ideen für die Besetzung sammelt. Dies wird oft als „Fan-out-and-Gather“-Muster bezeichnet: Der ParallelAgent „fächert“ die Arbeit auf und ein späterer Agent (unser file_writer) „sammelt“ die Ergebnisse.

Ihr endgültiger Agentenablauf sieht so aus:
- Der
greeter(Stamm) startet den Chat. - Sie wird an
film_concept_team(SequentialAgent) übertragen, die Folgendes ausführt:- Die
writers_room(LoopAgent) zum Erstellen des Diagramms. - Mit dem neuen Feld
preproduction_team(ParallelAgent) können Sie gleichzeitig Informationen zu Einspielergebnissen und Besetzung abrufen. - Die
file_writer, um alle Ergebnisse zu erfassen und die Datei zu speichern.
- Die
So nehmen Sie diese Änderungen vor:
- Fügen Sie in
adk_multiagent_systems/workflow_agents/agent.pydas neueParallelAgentund seine untergeordneten Agents unter der Überschrift# Agentsein.box_office_researcher = Agent( name="box_office_researcher", model=model_name, description="Considers the box office potential of this film", instruction=""" PLOT_OUTLINE: { PLOT_OUTLINE? } INSTRUCTIONS: Write a report on the box office potential of a movie like that described in PLOT_OUTLINE based on the reported box office performance of other recent films. """, output_key="box_office_report" ) casting_agent = Agent( name="casting_agent", model=model_name, description="Generates casting ideas for this film", instruction=""" PLOT_OUTLINE: { PLOT_OUTLINE? } INSTRUCTIONS: Generate ideas for casting for the characters described in PLOT_OUTLINE by suggesting actors who have received positive feedback from critics and/or fans when they have played similar roles. """, output_key="casting_report" ) preproduction_team = ParallelAgent( name="preproduction_team", sub_agents=[ box_office_researcher, casting_agent ] ) - Aktualisieren Sie die
sub_agents-Liste desfilm_concept_teamSequentialAgent, um die neuepreproduction_team(zwischenwriters_roomundfile_writer) einzufügen. Ersetzen Sie die vorhandenefilm_concept_team-Definition durch Folgendes:film_concept_team = SequentialAgent( name="film_concept_team", description="Write a film plot outline and save it as a text file.", sub_agents=[ writers_room, preproduction_team, file_writer ], ) - Aktualisieren Sie die
instructiondesfile_writer-Agents, damit die neuen Berichte aus dem Status „erfasst“ und der Datei hinzugefügt werden.
Ersetzen Sie den Stringinstructionfürfile_writerdurch Folgendes:instruction=""" INSTRUCTIONS: - Create a marketable, contemporary movie title suggestion for the movie described in the PLOT_OUTLINE. If a title has been suggested in PLOT_OUTLINE, you can use it, or replace it with a better one. - Use your 'write_file' tool to create a new txt file with the following arguments: - for a filename, use the movie title - Write to the 'movie_pitches' directory. - For the 'content' to write, include: - The PLOT_OUTLINE - The BOX_OFFICE_REPORT - The CASTING_REPORT PLOT_OUTLINE: { PLOT_OUTLINE? } BOX_OFFICE_REPORT: { box_office_report? } CASTING_REPORT: { casting_report? } """, - Kehren Sie zum Tab „ADK Dev UI“ zurück und klicken Sie auf + New Session (+ Neue Sitzung).
- Geben Sie
helloein, um die Unterhaltung zu starten. - Geben Sie bei Aufforderung eine neue Idee für eine Figur ein. Hier einige Ideen:
- die Schauspielerin, die die Technologie für WLAN erfunden hat
- ein aufregender Koch
- wichtige Akteure bei den Weltausstellungen
- Wenn der Agent seine Arbeit abgeschlossen hat, sehen Sie sich die endgültige Datei im Verzeichnis
adk_multiagent_systems/movie_pitchesan. Es sollte nun die Handlung, den Bericht zum Einspielergebnis und den Bericht zur Besetzung in einem Dokument enthalten.
Zusammenfassung des Abschnitts
In diesem Abschnitt haben Sie gelernt, wie Sie die ParallelAgent verwenden:
- Ein
ParallelAgent„fächert“ die Arbeit auf und führt alle untergeordneten Agents gleichzeitig statt nacheinander aus. - Das ist sehr effizient für Aufgaben, die nicht voneinander abhängen, z. B. die Recherche zu zwei verschiedenen Themen.
- Die Ergebnisse paralleler Agents werden von einem späteren Agent „erfasst“. Dazu speichern die parallelen Agents ihre Arbeit im Sitzungsstatus (mit
output_key) und ein letzter Agent (z. B.file_writer) liest diese Schlüssel.
13. Benutzerdefinierte Workflow-Agenten
Wenn die vordefinierten Workflow-Agents von SequentialAgent, LoopAgent und ParallelAgent nicht ausreichen, bietet CustomAgent die Flexibilität, neue Workflow-Logik zu implementieren.
Sie können Muster für die Ablaufsteuerung, die bedingte Ausführung oder die Statusverwaltung zwischen untergeordneten Agents definieren. Das ist nützlich für komplexe Workflows, zustandsorientierte Orchestrierungen oder die Integration benutzerdefinierter Geschäftslogik in die Orchestrierungsebene des Frameworks.
Das Erstellen einer CustomAgent ist nicht Teil dieses Labs. Es ist jedoch gut zu wissen, dass sie existiert, falls Sie sie benötigen.
14. Glückwunsch!
Sie haben mit dem Google Agent Development Kit (ADK) ein komplexes Multi-Agent-System erstellt. Sie haben sich von einer einfachen über- und untergeordneten Beziehung zwischen KI‑Agenten zu komplexen, automatisierten Workflows entwickelt, die ein kreatives Projekt recherchieren, schreiben und optimieren können.
Zusammenfassung
In diesem Lab haben Sie Folgendes getan:
- Organisierte Kundenservicemitarbeiter in einem hierarchischen Baum mit Beziehungen zwischen über- und untergeordneten Kundenservicemitarbeitern.
- Kontrollierte Agent-zu-Agent-Übertragungen, sowohl automatisch (mit
description) als auch explizit (mitinstruction). - Sie haben ein Tool verwendet, um Daten in das
tool_context.state-Dictionary zu schreiben. - Schlüsselvorlagen verwendet (z.B.
{ PLOT_OUTLINE? }), um den Sitzungsstatus zu lesen und den Prompt eines Kundenservicemitarbeiters zu steuern. SequentialAgentimplementiert, um einen einfachen, schrittweisen Workflow zu erstellen (Recherche –> Schreiben –> Speichern).LoopAgentmit einemcritic-Agenten und demexit_loop-Tool verwendet, um einen iterativen Optimierungszyklus zu erstellen.- Es wurde ein
ParallelAgentverwendet, um unabhängige Aufgaben (z. B. Casting und Recherche an der Kinokasse) parallel auszuführen.
Weitere Tests
Es gibt viele Möglichkeiten, auf dem aufzubauen, was Sie gelernt haben. Hier einige Tipps:
- Weitere Agenten hinzufügen:Fügen Sie Ihrem
preproduction_teamParallelAgenteinen neuen Agenten hinzu. Sie könnten beispielsweise einmarketing_agenterstellen, das basierend auf demPLOT_OUTLINEeine Tagline für den Film schreibt. - Weitere Tools hinzufügen:Sie können Ihrem
researcher-Agent weitere Tools zur Verfügung stellen. Sie könnten ein Tool erstellen, das eine Google Search API verwendet, um Informationen zu finden, die nicht auf Wikipedia verfügbar sind. - Labs erkunden
CustomAgent:Im Lab wird dieCustomAgentfür Workflows erwähnt, die nicht den Standardvorlagen entsprechen. Sie können beispielsweise einen Agent erstellen, der nur dann bedingt ausgeführt wird, wenn ein bestimmter Schlüssel im Sitzungsstatus vorhanden ist.