1. Einführung
Der moderne Agenten-Stack
Die Entwicklung eines KI-Agenten in Produktionsqualität erfordert mehr als nur ein Large Language Model (LLM). Ein LLM bietet zwar die Reasoning-Funktionen, aber ein robuster Agent muss auch mit der Außenwelt interagieren, den Unterhaltungsstatus verwalten und sich die Präferenzen der Nutzer im Laufe der Zeit merken können.


In diesem Workshop erfahren Sie, wie Sie ein umfassendes agentisches System mit drei grundlegenden Technologien entwerfen und erstellen:
- Konnektivität (MCP): Damit Ihr Agent Zugriff auf lokale Tools und Daten hat.
- Orchestrierung (ADK): Zum Verwalten der Reasoning Loop und des Zustands des KI-Agenten.
- Memory (Memory Bank): Für langfristigen, personalisierten Kontext.

Wichtige Konzepte
Komponente | Funktion |
Model Context Protocol (MCP) | Ein universeller Standard, der KI-Modelle ohne benutzerdefinierte Integrationen mit externen Systemen (Datenbanken, Dateisystemen, APIs) verbindet. |
Agent Development Kit (ADK) | Ein Framework, das die Laufzeitumgebung für KI-Agenten bereitstellt und die Ereignisschleife, Zustandsübergänge und die Ausführung von Tools verwaltet. |
Sitzungsdienst | Verarbeitet den Kurzzeitspeicher. Der unmittelbare Kontext der Unterhaltung (z.B. „Was hat der Nutzer gerade gefragt?“) wird beibehalten, aber am Ende der Sitzung gelöscht. |
Vertex AI Memory Bank | Verarbeitet das Langzeitgedächtnis. Sie speichert nutzerspezifische Fakten und Einstellungen (z.B. „Nutzer bevorzugt Python“) unbegrenzt, sodass der Agent zukünftige Interaktionen personalisieren kann. |
Vertex AI Agent Engine | Der verwaltete Infrastrukturdienst, der die Logik und die Speicherkomponenten Ihrer KI-Agenten in großem Umfang hostet. |
Umfang
Zur Veranschaulichung dieser Konzepte erstellen Sie einen Holiday Design Assistant. Dieser KI-Agent kann allgemeine Nutzeranfragen entgegennehmen und autonom lokale Python-Tools orchestrieren, um personalisierten Code und Bilder zu generieren.
Sie durchlaufen drei Phasen:
- Tooling-Ebene: Erstellen Sie einen MCP-Server, um lokale Python-Funktionen für die KI bereitzustellen.
- Agentenebene: Mit dem ADK können Sie einen Agenten erstellen, der mehrstufige Workflows plant und ausführt.
- Memory Layer: Integrieren Sie Memory Bank, damit der KI-Agent die Stilpräferenzen der Nutzer lernen und sich merken kann.
2. Erstelle ein
Für unsere KI-Agenten benötigen wir zwei Dinge: ein Google Cloud-Projekt als Grundlage
Teil 1: Rechnungskonto aktivieren
Für dieses Codelab benötigen Sie ein Rechnungskonto mit Guthaben. Verwenden Sie das Guthaben aus dem Banner oben in diesem Codelab, um loszulegen. Wenn Sie bereits mit einem Rechnungskonto verbunden sind, können Sie diesen Schritt überspringen.
Teil 2: Umgebung öffnen
- 👉 Klicken Sie auf diesen Link, um direkt zum Cloud Shell-Editor zu gelangen.
- 👉 Wenn Sie heute zu irgendeinem Zeitpunkt 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.

- 👉💻 Prüfen Sie im Terminal mit dem folgenden Befehl, ob Sie bereits authentifiziert sind und ob das Projekt auf Ihre Projekt-ID festgelegt ist:
gcloud auth list - 👉💻 Klonen Sie das Bootstrap-Projekt von GitHub:
git clone https://github.com/cuppibla/holiday_workshop - 👉💻 Führen Sie das Setupscript im Projektverzeichnis aus.
Das Skript übernimmt den Rest des Einrichtungsvorgangs automatisch.cd ~/holiday_workshop ./init.sh - 👉💻 Legen Sie die erforderliche Projekt-ID fest:
gcloud config set project $(cat ~/project_id.txt) --quiet
Teil 3: Berechtigungen einrichten
- 👉💻 Aktivieren Sie die erforderlichen APIs mit dem folgenden Befehl. Dies kann einige Minuten dauern.
gcloud services enable \ cloudresourcemanager.googleapis.com \ servicenetworking.googleapis.com \ run.googleapis.com \ aiplatform.googleapis.com \ compute.googleapis.com - 👉💻 Erteilen Sie die erforderlichen Berechtigungen, indem Sie die folgenden Befehle im Terminal ausführen:
. ~/holiday_workshop/set_env.sh
Beachten Sie, dass eine .env-Datei für Sie erstellt wird. Daraufhin werden Ihre Projektinformationen angezeigt.
3. Mehr Leistung mit MCP
Der „USB-C“-Moment für KI
Stellen Sie sich vor, Sie müssten jedes Mal, wenn Sie eine neue Maus kaufen, diese an Ihr Motherboard löten. Das war bis vor Kurzem der Stand der KI-Tools. Entwickler mussten benutzerdefinierten „Glue Code“ schreiben, um LLMs mit Datenbanken, Dateisystemen oder APIs zu verbinden.
Geben Sie das Model Context Protocol (MCP) ein. Man kann sich das MCP als USB‑C-Anschluss für KI-Anwendungen vorstellen. Es bietet eine standardisierte Möglichkeit, KI-Modelle mit Datenquellen und Tools zu verbinden.
Wenn Sie einmal einen MCP-Server für Ihre Tools erstellen, können Sie ihn in die Gemini CLI, eine IDE oder einen anderen MCP-kompatiblen Client einbinden, ohne eine einzige Zeile Code ändern zu müssen.
Umfang

In diesem Codelab erstellen Sie einen Designassistenten für die Feiertage, der Folgendes kann:
- Verbindet sich über MCP mit Ihrer lokalen Umgebung (Studio-Tools).
- Verwaltet den Kontext von Unterhaltungen zuverlässig mit dem Agent Development Kit (ADK).
- Merkt sich Ihre Einstellungen (z.B. „Ich bevorzuge Python-Code“) über verschiedene Sitzungen hinweg mithilfe von Vertex AI Memory Bank.
Serverlogik erstellen
Wir haben die Umgebung vorbereitet, aber die Serverlogik ist unvollständig. Wir müssen die vier spezifischen Tools implementieren, die unser KI-Agent letztendlich zum Erstellen der Weihnachtskarte verwenden wird.
Teil 1: Server-Skeleton öffnen
Wir arbeiten im Verzeichnis 01-MCP-Files-Testing/01-starter.
- Prüfen Sie im Cloud Shell-Terminal, ob Sie sich im richtigen Verzeichnis befinden:
cd ~/holiday_workshop/01-MCP-Files-Testing/01-starter/ - Öffnen Sie die Datei im Cloud Shell-Editor, indem Sie Folgendes ausführen:
cloudshell edit ~/holiday_workshop/01-MCP-Files-Testing/01-starter/mcp_server.py
Der Boilerplate-Code (Einrichten des MCP-Servers, Verwalten von Verbindungen und Initialisieren des Vertex AI-Clients) ist bereits vorhanden. Die vier Hauptfunktionen sind jedoch derzeit leere Platzhalter.
Teil 2: Holiday Scene Generator implementieren
Zuerst benötigen wir ein Tool, das das Interesse eines Nutzers (z.B. „Vögel“) in einen umfangreichen, detaillierten Prompt umwandelt, der für die Bildgenerierung optimiert ist.
Suchen Sie den Kommentar #REPLACE_GENERATE_HOLIDAY_SCENE in der Funktion generate_holiday_scene.
Ersetzen Sie diese gesamte Zeile durch den folgenden Code:
prompt = (
f"""
Create a cozy, high-fidelity 3D render of a winter holiday scene.
The scene should be warm and inviting with soft cinematic lighting.
Seamlessly integrate the following specific theme/interest into the
holiday decor or landscape: {interest}.
The style should be whimsical but detailed.
Aspect Ratio: 16:9 Landscape.
"""
)
generate_image(prompt, "16:9", "static/generated_scene.png")
return "Done! Saved at generated_scene.png"
Teil 3: Das endgültige Fotoergebnis implementieren
Außerdem möchten wir sicherstellen, dass die Beleuchtung und der Stil fotorealistisch und festlich wirken.
Suchen Sie den Kommentar #REPLACE_GENERATE_FINAL_PHOTO.
Ersetzen Sie diese gesamte Zeile durch den folgenden Code, um die endgültige Stilübertragung und das Rendering durchzuführen:
prompt = (
"""
Generate a photorealistic close-up shot of a rustic wooden fireplace mantle.
Lighting: Warm, glowing ambient light from a fire below (out of frame).
Background: Softly blurred (bokeh) pine garland and twinkling lights.
Foreground Composition:
1. A wooden picture frame containing the [attached selfie image].
The face in the photo must be clearly visible.
2. A folded holiday greeting card standing upright next to the frame.
The front of the card displays the [attached holiday scene image] as a print.
Ensure the perspective is grounded and realistic, as if taken with a 50mm lens.
"""
)
generate_image(prompt, "16:9", "static/generated_final_photo.png", ["static/generated_selfie.png", "static/generated_scene.png"])
return "Done! Saved at generated_final_photo.png"
Umgebung einrichten
Nachdem der Code nun vorhanden ist, müssen wir dafür sorgen, dass unsere Abhängigkeiten installiert sind. Wir verwenden uv, einen schnellen Python-Paket- und Projektmanager.
👉💻 Führen Sie im Terminal den folgenden Befehl aus, um FastMCP als Abhängigkeit des Projekts hinzuzufügen:
cd ~/holiday_workshop/01-MCP-Files-Testing/01-starter/
uv add fastmcp
Sie sehen, dass der Datei ~/holiday_workshop/01-MCP-Files-Testing/01-starter/pyproject.toml eine neue Abhängigkeit fastmcp>=2.13.3 hinzugefügt wurde.
4. Mit der Gemini CLI für den MCP-Server testen
Nachdem der Servercode fertig ist, wie testen wir ihn?
Normalerweise müssen Sie zum Testen eines Backend-Servers eine Frontend-UI erstellen oder komplexe curl-Anfragen schreiben. Hier können wir jedoch die Gemini CLI verwenden.
Das ist für die Entwicklung unglaublich nützlich, da die Logik isoliert wird. Sie können prüfen, ob das Modell Ihre Tools versteht und sie korrekt aufruft, bevor Sie sich Gedanken über die Erstellung einer Weboberfläche oder eines Agenten-Frameworks machen müssen.

Verbinden und ausführen
Wir weisen die Gemini CLI mit dem Befehl mcp add an, unseren Server zu verwalten.
Führen Sie im Terminal folgenden Befehl aus:
gemini mcp add holidays uv run ~/holiday_workshop/01-MCP-Files-Testing/01-starter/mcp_server.py
add holidays: Wir haben unserem Server einen Alias („holidays“) gegeben.uv run ...: Wir haben den expliziten Befehl zum Starten des gerade geänderten Python-Servers angegeben.
Los gehts!
Starten Sie jetzt die Chatsitzung:
gemini
Testen Sie mit dem folgenden Prompt, ob Gemini Ihre neuen Tools „sehen“ kann. Möglicherweise müssen Sie der Gemini CLI die Verwendung des Feiertags-Tools erlauben.
- 👉 Nutzer:
"I want to create a festive holiday photo. I like birds a lot." - Gemini:
*Thinking...* *Calling tool: generate_holiday_scene(interest='birds')* Done! Saved at generated_scene.png - 👉 Nutzer:
"Great! Now generate a knitting pattern for a sweater with reindeer on it." - Gemini:
Da Sie MCP verwendet haben, hat die KI genau verstanden, welche Python-Funktion aufgerufen werden muss, um Ihre Anfrage zu erfüllen.*Thinking...* *Calling tool: generate_sweater_pattern(motif='reindeer')* Done! Saved at generated_pattern.png
Bild überprüfen
- Beenden Sie die Gemini CLI, indem Sie
Control+Cdrücken. - Sehen Sie sich das generierte Bild in Ihrem Ordner an:
~/holiday_workshop/01-MCP-Files-Testing/01-starter/static.
Hier kannst du dir dein Foto ansehen: 
Fazit und nächste Schritte
Glückwunsch! Sie haben einen funktionierenden MCP-Server erstellt. Sie haben jetzt eine Reihe von KI-Tools, mit denen Sie Muster und zusammengesetzte Bilder generieren und Szenen optimieren können.
Ist Ihnen im obigen Test etwas aufgefallen? Sie mussten den Prozess vorantreiben. Sie mussten nach der Szene fragen, dann nach dem Muster und dann nach der Kombination.
Gemini ist zwar intelligent, aber für einen komplexen Produktionsworkflow, bei dem wir ein Muster generieren müssen, bevor wir es auf einen Pullover drucken können, und Fehler behandeln müssen, wenn die Bildgenerierung fehlschlägt, möchten wir mehr Kontrolle haben. Wir möchten ein dediziertes System, das die Planung übernehmen, die eigene Arbeit kritisieren und den Status unserer Weihnachtskarte verwalten kann, ohne dass wir es bei jedem Schritt anleiten müssen.
Im nächsten Abschnitt bringen wir Ordnung in dieses kreative Chaos. Wir implementieren das Agent Development Kit (ADK), um einen strukturierten KI-Agenten zu erstellen, der diese MCP-Tools in einer perfekten Produktionspipeline orchestriert.
5. ADK-Agent per Vibe Coding erstellen
Wir haben eine Reihe von Tools (unseren MCP-Server), aber derzeit müssen wir die ganze Arbeit erledigen und Gemini genau sagen, welches Tool wann aufgerufen werden soll.
In diesem Abschnitt erstellen wir einen KI-Agenten: ein System, das selbstständig Schlussfolgerungen ziehen, planen und mehrstufige Aufgaben ausführen kann. Dazu verwenden wir das Agent Development Kit (ADK).

Was ist ein KI-Agent?
Wenn die MCP-Tools die „Hände“ sind (die die Arbeit erledigen), ist der Agent das „Gehirn“. Ein Agent verwendet ein LLM, um die Absicht eines Nutzers zu verstehen („Erstelle eine Urlaubskarte“), unterteilt sie in Schritte („Zuerst brauche ich eine Szene, dann ein Muster…“) und entscheidet, welche Tools verwendet werden sollen, um das Ziel zu erreichen.
Was ist das ADK?
Das Agent Development Kit (ADK) ist ein Framework von Google, mit dem sich solche Agenten ganz einfach erstellen lassen. Sie übernimmt die komplexe „Infrastruktur“, z. B. die Verwaltung des Chatverlaufs, die Verbindung zu Tools und den Wechsel zwischen verschiedenen Modellen. So können Sie sich auf die Persönlichkeit und Logik Ihrer App konzentrieren.
Kontextbasiertes Vibe Coding
Es ist üblich, einen einzigen, sehr umfangreichen Prompt zu verwenden, um Code zu generieren. Beim Erstellen komplexer Anwendungen ist es jedoch oft besser, die KI als Partner zu betrachten, der den Kontext im Laufe der Zeit beibehält.
Wir verwenden die Memory-Funktionen der Gemini CLI, um die Grundlagen zu schaffen, bevor wir eine einzige Zeile Code schreiben.
1. Umgebung vorbereiten
Öffnen Sie Ihr Terminal und rufen Sie das Starterverzeichnis auf:
cd ~/holiday_workshop/02-Vibe-Coding-ADK-Agent/01-starter
Starten Sie die Gemini CLI:
gemini
2. Kontext und gemerkte Informationen verwalten
Beim Vibe-Coding muss die KI wissen, wer sie ist und was sie weiß. Mit der Gemini CLI können wir das explizit verwalten.
/memory show: Geben Sie dies ein, um zu sehen, was die KI derzeit über Ihr Projekt und Ihre Sitzung weiß./memory add: Verwenden Sie diese Option, um grundlegendes Wissen einzufügen, das sich die KI während der gesamten Unterhaltung merken soll.
Lassen Sie uns zuerst die Persona unseres Coding-Assistenten definieren. Führen Sie den folgenden Befehl in der Gemini CLI aus:
/memory add "You are an expert Python developer specialized in the Google Agent Development Kit (ADK). You write clean, modular code and prefer using the latest ADK patterns."
Gemini versteht jetzt seine Rolle. Dieser Kontext beeinflusst jede nachfolgende Antwort und sorgt für hochwertigen, ADK-konformen Code.
3. Schritt 1: Basis-Agenten per Vibe-Coding erstellen
Anstatt das gesamte System auf einmal zu generieren, beginnen wir mit dem Grundgerüst. Wir möchten die Dateistruktur und die grundlegende Persönlichkeit des KI-Agenten festlegen.
Geben Sie den folgenden Prompt in der Gemini CLI ein:
Let's start by building the basic agent structure.
Please create a file structure for a `root_agent`.
1. Create `root_agent/__init__.py` that imports `agent`.
2. Create `root_agent/agent.py` by following exactly how this file is doing import and agent creation @~/holiday_workshop/02-Vibe-Coding-ADK-Agent/01-starter/agent_reference.py
In `agent.py`:
- Create an `Agent` named "root_agent" using the model "gemini-2.5-flash".
- The instruction string should define a "Holiday Magic Assistant".
- The personality should be enthusiastic (`🎄✨`) and prefer "cute, kawaii, cartoon" styles for any visual tasks.
Gemini erstellt die Dateistruktur und den ersten Python-Code. Prüfen Sie, ob alles korrekt ist, und übernehmen/akzeptieren Sie die Änderungen.
4. Schritt 2: MCP-Server (die Tools) hinzufügen
Nachdem wir einen einfachen KI-Agenten erstellt haben, müssen wir ihm „Hände“ geben. Wir müssen den Agenten mit dem MCP-Server verbinden, den wir im vorherigen Lab erstellt haben.
Geben Sie den folgenden Prompt in der Gemini CLI ein:
Now, let's give the agent access to tools. Update `agent.py` to include our local MCP server. By following exactly how this agent is connecting to mcp tool @~/holiday_workshop/02-Vibe-Coding-ADK-Agent/01-starter/agent_reference.py
In `agent.py`:
- Import `McpToolset` to define our STDIO MCP server. as @~/holiday_workshop/02-Vibe-Coding-ADK-Agent/01-starter/agent_reference.py
- Connect to the python file located at `../mcp_server.py` relative to agent.py.
Gemini refaktoriert jetzt Ihre vorhandene agent.py, um die Tooldefinitionen und die Verbindungslogik einzufügen.
Hinweis: Wenn Sie Ihre Arbeit überprüfen möchten oder der generierte Code nicht wie erwartet funktioniert, können Sie Ihre Dateien mit der Referenzlösung vergleichen, die sich hier befindet: ~/holiday_workshop/02-Vibe-Coding-ADK-Agent/solution
6. Weboberfläche des KI-Agenten ausführen
Das ADK enthält eine integrierte Testoberfläche namens adk web. Dadurch wird eine einfache Chat-Benutzeroberfläche geöffnet, über die wir sofort mit unserem KI-Agenten sprechen können.
- Wenn GeminiCLI noch geöffnet ist, drücken Sie
control+C, um es zu schließen. Führen Sie jetzt im Terminal (im Ordnersolution) den folgenden Befehl aus. Sie können den Code im Ordnerstartertesten, indem Sieuv run adk webim Ordnerstarterausführen:cd ~/holiday_workshop/02-Vibe-Coding-ADK-Agent/02-solution uv run adk web --port 8000 - Cloud Shell benachrichtigt Sie, dass ein Dienst auf Port 8000 ausgeführt wird. Klicken Sie auf Webvorschau > Vorschau auf Port 8000.
KI-Agenten testen
Sie sollten jetzt eine Chatoberfläche sehen. Sehen wir uns an, ob unser KI-Agent die neuen Anweisungen befolgt und korrekt auf die MCP-Tools zugreift.
Mögliche Prompts:
- „Hallo, Wer bist du?"
- (Erwarte eine festliche, begeisterte Antwort).
- „Ich brauche einen Hintergrund für meine Weihnachtskarte. Mach daraus ein verschneites Dorf.“
- (Der KI-Agent sollte
generate_holiday_sceneaufrufen. Beachten Sie, dass der in den Systemanweisungen definierte Stil „cute/cartoon“ automatisch angewendet wird.
- (Der KI-Agent sollte
- „Erstelle ein Pullovermuster mit kleinen Pizzastücken.“
- (Der Kundenservicemitarbeiter sollte
generate_sweater_patternanrufen).
- (Der Kundenservicemitarbeiter sollte

Hier können Sie sich das generierte Bild ansehen:

Drücken Sie Control+C, um den Test zu beenden.
Fazit und nächste Schritte
Sie haben jetzt erfolgreich einen Google ADK-Agenten mit einem kontextsensitiven Ansatz „Vibe-Coded“.
- Kontext herstellen: Wir haben
/memory addverwendet, um eine Experten-Persona zu definieren. - Wir haben iterativ gearbeitet: Wir haben zuerst das Grundgerüst erstellt und dann die Toolverbindungen hinzugefügt.
Die integrierte ADK-Webvorschau eignet sich hervorragend zum Testen, aber für unser Endprodukt möchten wir eine benutzerdefinierte, markenspezifische Oberfläche. Im nächsten Abschnitt binden wir diesen KI-Agenten in ein benutzerdefiniertes Web-Frontend ein.
7. ADK mit der Benutzeroberfläche verbinden

Nachdem wir eine Agentendefinition haben, müssen wir sie ausführen. Hier kommen der Runner und der Sitzungsdienst ins Spiel.
Implementierung
- 👉 Geben Sie Folgendes in Ihren Befehl ein:
Dadurch wirdcloudshell edit ~/holiday_workshop/03-Connect-ADK-MCP-UI/01-starter/backend/main.py~/holiday_workshop/03-Connect-ADK-MCP-UI/01-starter/backend/main.pyim Editor geöffnet. - Ersetzen Sie
# TODO: Create Session Servicedurch Folgendes:from google.adk.sessions import InMemorySessionService from google.adk.memory import InMemoryMemoryService session_service = InMemorySessionService() memory_service = InMemoryMemoryService() - Ersetzen Sie
# TODO: Initialize Runnerdurch Folgendes:runner = Runner( app_name="agents", agent=christmas_agent, session_service=session_service, memory_service=memory_service, )
- Sehen Sie sich Zeile 158 in diesem
~/holiday_workshop/03-Connect-ADK-MCP-UI/01-starter/backend/main.pyan (keine Aktion erforderlich): Wenn Sie sich fragen, wie die Anwendung die endgültige Antwort erhält? Unten sehen Sie eine Ereignisschleife, die vom Runner unterstützt wird:async for event in runner.run_async( user_id=user_id, session_id=session_id, new_message=content )
Die App im Detail: Architektur und Bereitstellung
Wir verwenden FastAPI, um diesen Agent bereitzustellen.
- Warum FastAPI?: KI-Agenten sind oft E/A-gebunden (warten auf LLMs). Die asynchrone Natur von FastAPI ist dafür perfekt geeignet.
- Zustandslosigkeit: Unser API-Endpunkt ist zustandslos. Wir speichern keine Variablen im globalen Bereich. Wir verwenden
session_idund dieSessionService, um den Status für jede einzelne Anfrage zu rekonstruieren. Sie können sie also in Cloud Run (serverlos) bereitstellen und auf null skalieren.
8. Anwendung mit dem Agenten-Zauber testen
- 👉💻 Geben Sie Folgendes in Ihren Befehl ein:
Dadurch wirdcd ~/holiday_workshop/03-Connect-ADK-MCP-UI/01-starter ./start_app.sh~/holiday_workshop/03-Connect-ADK-MCP-UI/01-starter/backend/main.pyim Editor geöffnet. - Das Ergebnis sieht so aus:
👉👉 Klicken Sie auf http://localhost:5173/oder öffnen Sie ein neues Fenster und geben Siehttp://localhost:5173/ein. - Anschließend wird die Website mit der Chat-Oberfläche angezeigt:

- Lade ein Bild hoch, um die Funktion zu testen (z. B. von dir selbst oder deinem Haustier)

- 👉 Fragen Sie dann:
Das KI-generierte Bild wird hier angezeigt:Can you generate a picture my cat wearing snowflake pattern sweater?
- 👉💻 Wenn Sie mit dem Testen fertig sind, drücken Sie im Terminal
control+C, um den Vorgang zu beenden.
Wenn die Dinge nicht wie erwartet funktionieren, können Sie zu ~/holiday_workshop/03-Connect-ADK-MCP-UI/02-solution gehen, ./start_app.sh ausführen und dann die oben genannten Schritte ausführen.
9. Vertex AI Memory Bank

Kurzzeit- und Langzeitgedächtnis
- Kurzzeitkontext: „Was habe ich gerade gesagt?“ (Sitzungsverlauf). Diese Informationen gehen verloren, wenn das Chatfenster geschlossen wird.
- Langzeitgedächtnis: „Was ist meine Lieblingsprogrammiersprache?“ (Nutzereinstellungen). Diese sollte dauerhaft beibehalten werden.
Die Vertex AI Memory Bank bietet diesen langfristigen Speicher. Der Agent kann personalisierte Informationen über den Nutzer speichern und abrufen.
Sitzungen und Memory Bank im Vergleich
- Sitzungen (
VertexAiSessionService): Das ist das Protokoll. Darin wird die chronologische Abfolge aller Nachrichten, Toolaufrufe und Ereignisse (AppendEvent,ListEvents) im Rohformat gespeichert. Sie liefert die Grundwahrheit dafür, was passiert ist. - Memory Bank (
VertexAiMemoryBankService): Das ist das Wissen. Darin werden zusammengefasste, langfristige Fakten (GenerateMemories,RetrieveMemories) gespeichert. Er ist auf eine bestimmteuser_idbeschränkt, um Datenschutz und Isolation zu gewährleisten.
- 👉💻 Geben Sie Folgendes in Ihren Befehl ein:
Dadurch wirdcloudshell edit ~/holiday_workshop/04-Adding-Memory-Bank/01-starter/backend/main.py~/holiday_workshop/04-Adding-Memory-Bank/01-starter/backend/main.pyim Editor geöffnet. - Suchen Sie nach
# TODO: Create Vertex AI Session Service & Memory Bank Serviceund ersetzen Sie die gesamte Zeile durch Folgendes:session_service = VertexAiSessionService( project=PROJECT_ID, location=LOCATION, agent_engine_id=AGENT_ENGINE_ID ) memory_service = VertexAiMemoryBankService( project=PROJECT_ID, location=LOCATION, agent_engine_id=AGENT_ENGINE_ID )

- 👉💻 Geben Sie Folgendes in Ihren Befehl ein:
Dadurch wirdcloudshell edit ~/holiday_workshop/04-Adding-Memory-Bank/01-starter/backend/deploy_agent.py~/holiday_workshop/04-Adding-Memory-Bank/01-starter/backend/deploy_agent.pyim Editor geöffnet. - Ersetzen Sie
# TODO: Set Up Configurationdurch Folgendes:# Basic configuration types MemoryBankConfig = types.ReasoningEngineContextSpecMemoryBankConfig SimilaritySearchConfig = ( types.ReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfig ) GenerationConfig = types.ReasoningEngineContextSpecMemoryBankConfigGenerationConfig # Advanced configuration types CustomizationConfig = types.MemoryBankCustomizationConfig MemoryTopic = types.MemoryBankCustomizationConfigMemoryTopic CustomMemoryTopic = types.MemoryBankCustomizationConfigMemoryTopicCustomMemoryTopic GenerateMemoriesExample = types.MemoryBankCustomizationConfigGenerateMemoriesExample ConversationSource = ( types.MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSource ) ConversationSourceEvent = ( types.MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSourceEvent ) ExampleGeneratedMemory = ( types.MemoryBankCustomizationConfigGenerateMemoriesExampleGeneratedMemory )

- 👉 In derselben Datei:
04-Adding-Memory-Bank/01-starter/backend/deploy_agent.py. Suchen Sie nach# TODO: Set up topicund ersetzen Sie die gesamte Zeile durch Folgendes:custom_topics = [ # Topic 1: Sweater Preference MemoryTopic( custom_memory_topic=CustomMemoryTopic( label="sweater_preference", description="""Extract the user's preferences for sweater styles, patterns, and designs. Include: - Specific patterns (snowflake, reindeer, geometric, fair isle, solid, etc.) - Style preferences (chunky knit, cardigan, pullover, turtleneck, oversized, fitted) - Color preferences (red, green, navy, pastel, etc.) - Material preferences if mentioned (wool, cotton, cashmere, itchy/soft) - Themes (retro, modern, ugly christmas sweater, elegant) Example: "User wants a retro style sweater with a pixelated reindeer pattern." Example: "User prefers dark blue colors and hates itchy wool." """, ) ), # Topic 2: Personal Context MemoryTopic( custom_memory_topic=CustomMemoryTopic( label="personal_context", description="""Extract the user's personal context including hobbies, pets, interests, job, and preferred scenes. Include: - Hobbies and activities (skiing, reading, gaming, cooking, etc.) - Pets (type, breed, name, color) - Job or profession if relevant to their style - General interests (sci-fi, nature, vintage, tech) - Preferred scenes or vibes (cozy fireplace, snowy mountain, cyberpunk city, beach) Example: "User has a golden retriever named Max." Example: "User loves skiing and wants a snowy mountain background." Example: "User is a software engineer who likes cyberpunk aesthetics." """, ) ) ] - 👉 In derselben Datei:
04-Adding-Memory-Bank/01-starter/backend/deploy_agent.py. Suchen Sie nach# TODO: Create Agent Engineund ersetzen Sie die gesamte Zeile durch Folgendes:agent_engine = client.agent_engines.create( config={ "display_name": AGENT_DISPLAY_NAME, "context_spec": { "memory_bank_config": { "generation_config": { "model": f"projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/gemini-2.5-flash" }, "customization_configs": [customization_config] } }, } )
Warum nicht einfach den Prompt verwenden?
Sie fragen sich vielleicht: „Warum fügen wir den Verlauf des Nutzers nicht einfach in den Prompt ein?“
- Größenbeschränkungen: Kontextfenster sind groß, aber nicht unendlich. Du kannst nicht 5 Jahre Geschichte in einen Film packen.
- Kosten: Die Verarbeitung von 1 Million Tokens für jedes „Hallo“ ist unerschwinglich.
- Fokus: Die Memory Bank fungiert als Suchmaschine für Ihren Agenten. Es ruft nur die relevanten Fakten ab.
- 👉💻 Geben Sie Folgendes in Ihren Befehl ein:
Dadurch wirdcloudshell edit ~/holiday_workshop/04-Adding-Memory-Bank/01-starter/backend/agent.py~/holiday_workshop/04-Adding-Memory-Bank/01-starter/backend/agent.pyim Editor geöffnet. - Ersetzen Sie in der Datei
~/holiday_workshop/04-Adding-Memory-Bank/01-starter/backend/agent.pyden Wert# TODO: Add PreloadMemoryTooldurch Folgendes:if USE_MEMORY_BANK: agent_tools.append(PreloadMemoryTool())
PreloadMemoryTool und add_session_to_memory
In agent.py sehen Sie zwei wichtige Komponenten:
PreloadMemoryTool: Mit diesem Tool kann der Agent „sich selbst googeln“. Wenn der Nutzer etwas Vages fragt, z. B. „Bestell mir meinen üblichen Kaffee“, kann der Agent dieses Tool verwenden, um die Memory Bank nach „Kaffeepräferenzen“ abzufragen, bevor er antwortet.add_session_to_memory: Dies ist ein Hintergrund-Callback.- Warum asynchron? Das Speichern von gemerkten Informationen dauert etwas (Zusammenfassen des Chats, Extrahieren von Fakten). Wir möchten nicht, dass der Nutzer darauf warten muss. Wir führen ihn im Hintergrund (
add_session_to_memory) mitafter_agent_callbackaus.
- Warum asynchron? Das Speichern von gemerkten Informationen dauert etwas (Zusammenfassen des Chats, Extrahieren von Fakten). Wir möchten nicht, dass der Nutzer darauf warten muss. Wir führen ihn im Hintergrund (
10. Memory Bank in Aktion
- 👉💻 Geben Sie Folgendes in Ihren Befehl ein:
Das Ergebnis sieht so aus:cd ~/holiday_workshop/04-Adding-Memory-Bank/01-starter ./use_memory_bank.sh
Prüfen Sie die Datei ~/holiday_workshop/.env. Sie sehen dann (Keine Maßnahmen erforderlich).USE_MEMORY_BANK=TRUE AGENT_ENGINE_ID={agent_engine_id} - 👉💻 Testen Sie die gemerkten Informationen über die Benutzeroberfläche der Anwendung. Geben Sie den folgenden Befehl ein:
Klicken Sie aufcd ~/holiday_workshop/04-Adding-Memory-Bank/01-starter ./start_app.shhttp://localhost:5173/oder öffnen Sie ein neues Fenster und geben Siehttp://localhost:5173/ein. Beachten Sie, dassUvicorn running on http://0.0.0.0:8000nur der Backend-Server ist, nicht der eigentliche Link, auf den wir klicken möchten. Die Chat-Oberfläche auf der Website ist jetzt Ihr personalisierter Agent.
- 👉 Testen Sie die gemerkten Informationen. Wenn Sie in der Benutzeroberfläche Folgendes eingeben:
I want a sweater that matches my dog. He's a golden retriever.I'm a programmer, so I want something geeky. Maybe a matrix style?I like snowflake sweater pattern
Der Agent erkennt dies als Einstellung und speichert sie in der Memory Bank.
Wenn Sie nächste Woche (oder jederzeit, wenn Sie die Anwendung mit Control+C und ./start_app.sh neu starten) Folgendes fragen:
what is my preference on sweater pattern?
Der KI-Agent fragt die Memory Bank ab, sieht Ihre Einstellung und generiert ein Pullovermuster, ohne dass Sie danach fragen müssen. 
- Prüfen Sie dies in der Vertex AI Agent Engine, indem Sie die Google Cloud Console Agent Engine aufrufen.
- Wählen Sie das Projekt oben links in der Projektauswahl aus:

- Prüfen Sie die Agent-Engine, die Sie gerade mit dem vorherigen Befehl bereitgestellt haben:
use_memory_bank.sh
Klicken Sie auf die Agent-Engine, die Sie gerade erstellt haben.
- Wählen Sie das Projekt oben links in der Projektauswahl aus:
- Klicken Sie bei diesem bereitgestellten KI-Agenten auf den Tab
Memories. Hier können Sie alle gemerkten Informationen ansehen.
Glückwunsch! Sie haben die Memory Bank gerade an Ihren Agenten angehängt.
11. Fazit
Zusammenfassung
Sie haben erfolgreich ein vollständiges agentisches System entworfen und erstellt.
- Konnektivität: Sie haben das MCP verwendet, um den Zugriff Ihres KI-Agenten auf lokale Tools zu standardisieren.
- Orchestrierung: Sie haben das ADK verwendet, um die komplexe Reasoning Loop zu verwalten, die für mehrstufige Aufgaben erforderlich ist.
- Personalisierung: Sie haben Memory Bank verwendet, um eine persistente, lernende Ebene zu erstellen, die sich den Nutzerkontext merkt.
Nächste Schritte
- Eigenen MCP-Server erstellen: Erstellen Sie einen Server für Ihre interne API oder Datenbank.
- ADK-Muster kennenlernen: Hier finden Sie Informationen zu „Reasoning Loops“ und „Orchestrierung“ in der ADK-Dokumentation.
- Bereitstellen: Bringen Sie Ihren KI-Agenten von einem lokalen Skript zu einem Produktionsdienst in Cloud Run.