1. Übersicht
Wo fängt die Entwicklung mit KI heute an? Für die meisten von uns beginnt es oft mit einer einfachen Frage: „Kann das Modell tatsächlich helfen, das Problem zu lösen, über das ich nachgedacht habe?“ Genau hier kommt Google AI Studio ins Spiel. Hier können Sie schnell Prototypen für alles erstellen. Ich möchte meine Küche umbauen und bin mir sicher, dass Gemini mir dabei helfen kann. Ich bin aber Ingenieur und kein Bauunternehmer. Ich bin mir nicht einmal sicher, was ich fragen soll – es gibt so viel zu beachten: Vorschriften, Installationen usw. Lass uns das aufschlüsseln und Gemini einen sehr detaillierten Prompt für uns erstellen lassen. Dann können wir einen vollständigen Renovierungsplan erstellen und das Ergebnis visualisieren. Aber Moment. Wie kann ich Unternehmen dabei helfen, ihr Geschäft auszubauen? Geben Sie AGENTS!!! ein.
Ein Agent ist ein autonomes Programm, das mit einem KI-Modell kommuniziert, um eine zielbasierte Operation mit den ihm zur Verfügung stehenden Tools und Kontext auszuführen. Es ist in der Lage, autonome Entscheidungen auf der Grundlage von Fakten zu treffen.
Das Agent Development Kit (ADK)
Das Agent Development Kit (ADK) ist ein flexibles und modulares Framework zum Entwickeln und Bereitstellen von KI-Agenten. Das ADK unterstützt die Entwicklung komplexer Anwendungen, indem mehrere unterschiedliche Agenteninstanzen zu einem Multi-Agenten-System (MAS) zusammengestellt werden.
Im ADK ist ein Multi-Agenten-System eine Anwendung, in der verschiedene Agenten, die oft eine Hierarchie bilden, zusammenarbeiten oder sich koordinieren, um ein größeres Ziel zu erreichen. Die Strukturierung Ihrer Anwendung auf diese Weise bietet erhebliche Vorteile, darunter eine verbesserte Modularität, Spezialisierung, Wiederverwendbarkeit und Wartungsfreundlichkeit sowie die Möglichkeit, strukturierte Kontrollflüsse mithilfe dedizierter Workflow-Agents zu definieren.
Aufgaben
Sind Sie bereit, von unserem PROMPT-Prototyp zu „Einen Agenten erstellen“ zu wechseln? Wir erstellen einen KI-Agenten, der uns hilft, das Angebotsdokument für das Projekt zur Küchenrenovierung zu erstellen. In diesem Lab haben Sie folgende Aufgaben:
- Einen einfachen Agenten zum Generieren eines Dokuments mit einem Renovierungsvorschlag mit dem ADK erstellen
- Generiertes Dokument mit Renovierungsvorschlag in einem Cloud Storage-Bucket speichern
- Agent in Cloud Shell und in der Webausgabe des Agents testen
Voraussetzungen
2. Hinweis
Projekt erstellen
- Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
- Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist .
- Wenn Sie diesen Artikel lesen und Guthaben für den Einstieg in Google Cloud und die Verwendung des ADK erhalten möchten, können Sie über diesen Link Guthaben einlösen.
- Eine Anleitung zum Einlösen findest du hier. Dieser Link ist nur bis zum 15. Juli 2025 gültig.
- Aktivieren Sie Cloud Shell, indem Sie auf diesen Link klicken. Sie können zwischen dem Cloud Shell-Terminal (zum Ausführen von Cloud-Befehlen) und dem Editor (zum Erstellen von Projekten) wechseln, indem Sie in Cloud Shell auf die entsprechende Schaltfläche klicken.
- Wenn Sie mit Cloud Shell verbunden sind, können Sie mit dem folgenden Befehl prüfen, ob Sie bereits authentifiziert sind und das Projekt auf Ihre Projekt-ID festgelegt ist:
gcloud auth list
- Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt.
gcloud config list project
- Wenn Ihr Projekt nicht festgelegt ist, verwenden Sie den folgenden Befehl, um es festzulegen:
gcloud config set project <YOUR_PROJECT_ID>
- Python 3.9 oder höher muss installiert sein.
Weitere gcloud-Befehle und Informationen zur Verwendung finden Sie in der Dokumentation.
3. Prototyp
Rufen Sie Google AI Studio auf. Beginnen Sie mit der Eingabe Ihres Prompts. Hier ist mein Prompt:
I want to renovate my kitchen, basically just remodel it. I don't know where to start. So I want to use Gemini to generate a plan. For that I need a good prompt. Give me a short yet detailed prompt that I can use.
Passen Sie die Parameter auf der rechten Seite an, um eine optimale Antwort zu erhalten.
Auf Grundlage dieser einfachen Beschreibung hat Gemini einen unglaublich detaillierten Prompt für mich erstellt, mit dem ich mit der Renovierung beginnen kann. Wir verwenden Gemini, um noch bessere Antworten von AI Studio und unseren Modellen zu erhalten. Je nach Anwendungsfall können Sie auch verschiedene Modelle auswählen.
Wir haben uns für Gemini 2.5 Pro entschieden. Das ist ein Thinking-Modell, was bedeutet, dass wir noch mehr Ausgabetokens erhalten, in diesem Fall bis zu 65.000 Tokens für ausführliche Analysen und detaillierte Dokumente. Die Gemini-Denkblase wird angezeigt, wenn Sie Gemini 2.5 Pro aktivieren. Dieses Modell verfügt über native Schlussfolgerungsfunktionen und kann Anfragen mit langem Kontext verarbeiten.
Hier ein Snippet der Antwort:

AI Studio hat meine Daten analysiert und all diese Dinge wie Schränke, Arbeitsplatten, Rückwand, Bodenbelag, Spüle, Kohäsion, Farbpalette und Materialauswahl erstellt. Gemini zitiert sogar Quellen.
Versuchen Sie nun, die Idee mit einem anderen Prompt zum Leben zu erwecken.
- Kopieren Sie diesen Prompt und fügen Sie ihn in den Prompt-Editor ein:
Add flat and circular light accessories above the island area for my current kitchen in the attached image.
- Hänge ein Bild deiner aktuellen Küche an (oder verwende mein Beispielbild).
- Ändern Sie das Modell in „Gemini 2.0 Flash Preview Image Generation“, damit Sie Zugriff auf die Bildgenerierung haben.
Ich habe diese Ausgabe erhalten:

Das ist die Stärke von Gemini.
Gemini kann Videos analysieren, Bilder generieren und Informationen aus der Google Suche nutzen, um Antworten auf Fakten zu stützen.
In AI Studio können Sie diesen Prototyp verwenden, den API-Schlüssel abrufen und ihn mit dem Vertex AI ADK zu einer vollständigen Agent-Anwendung skalieren.
4. ADK einrichten
Wechseln Sie nun zum Cloud Shell-Terminal, das Sie im Abschnitt „Vorbereitung“ aktiviert haben:
- Virtuelle Umgebung erstellen und aktivieren (empfohlen)
Erstellen Sie im Cloud Shell-Terminal eine virtuelle Umgebung:
python -m venv .venv
Aktivieren Sie die virtuelle Umgebung:
source .venv/bin/activate
- ADK installieren
pip install google-adk
5. Projektstruktur
- Erstellen Sie im Cloud Shell-Terminal ein Stammverzeichnis für Ihre Agent-Apps am gewünschten Speicherort im Projekt:
mkdir agentic-apps
- Erstellen Sie im Hauptverzeichnis einen Ordner für unser aktuelles Projekt:
mkdir renovation-agent
- Rufen Sie den Cloud Shell-Editor auf und erstellen Sie die folgende Projektstruktur, indem Sie die Dateien erstellen (anfangs leer):
renovation-agent/
__init__.py
agent.py
requirements.txt
.env
6. Quellcode
- Rufen Sie „init.py“ auf und aktualisieren Sie die Datei mit folgendem Inhalt:
from . import agent
- Rufen Sie „agent.py“ auf und aktualisieren Sie die Datei mit dem folgenden Inhalt aus dem folgenden Pfad:
In „agent.py“ importieren wir die erforderlichen Abhängigkeiten, rufen Konfigurationsparameter aus der Datei „.env“ ab und definieren den „root_agent“, der ein Angebotsdokument generiert und in einem Cloud Storage-Bucket speichert. Für den Cloud Storage-Schritt verwenden wir das Tool „store_pdf“.
HINWEIS: Das PDF ist derzeit NICHT FORMATIERT. Basierend auf dem PR der Community-Entwickler wurde das folgende Snippet hier eingefügt [nicht getestet]. Sie können es in der Methode „store_pdf“ anpassen:
doc = SimpleDocTemplate(
pdf_buffer,
pagesize=letter,
rightMargin=0.75 * inch,
leftMargin=0.75 * inch,
topMargin=0.75 * inch,
bottomMargin=0.75 * inch
)
styles = getSampleStyleSheet()
story = []
# --- CUSTOM STYLES FOR HEADERS ---
# Define a new style for section headers
styles.add(ParagraphStyle(name='SectionHeader',
parent=styles['Normal'],
fontName='Helvetica-Bold', # Make it bolder
fontSize=14, # Make it slightly larger
leading=16, # Line spacing
spaceAfter=0.15 * inch, # Space after the header
spaceBefore=0.25 * inch, # Space before the header
textColor=black # Ensure color is bright/black (default is usually black, but explicit is good)
))
# Define a style for the main document title
styles.add(ParagraphStyle(name='DocumentTitle',
parent=styles['Normal'],
fontName='Helvetica-Bold',
fontSize=20,
leading=24,
spaceAfter=0.25 * inch,
alignment=TA_CENTER, # Center align the title
textColor=black
))
# ---------------------------------
paragraphs_raw = pdf_text.split('\n\n')
# Heuristic for the garbled line issue (as before, temporary)
if paragraphs_raw and len(paragraphs_raw[-1]) < 50 and any(char in paragraphs_raw[-1] for char in ['io', 'og', 'al', 'op']):
logger.warning("Detected potentially garbled last paragraph. Attempting to trim/omit.")
paragraphs_raw[-1] = "11. Entire Agreement:\nThis proposal constitutes the entire agreement between the parties and supersedes all prior discussions and agreements."
for i, para_text in enumerate(paragraphs_raw):
para_text = para_text.strip()
if not para_text:
continue
# Special handling for the main document title (PROPOSAL DOCUMENT)
if i == 0 and "PROPOSAL DOCUMENT" in para_text.upper():
p = Paragraph("PROPOSAL DOCUMENT", styles['DocumentTitle'])
story.append(p)
story.append(Spacer(1, 0.15 * inch)) # Add space after the title
# Skip the rest of this initial block if it's just the title
remaining_text_lines = para_text.splitlines()[1:]
if remaining_text_lines:
formatted_text = "<br/>".join(remaining_text_lines)
p = Paragraph(formatted_text, styles['Normal'])
story.append(p)
story.append(Spacer(1, 0.1 * inch))
continue # Move to the next paragraph
# Check if the paragraph looks like a section header (e.g., starts with a number and dot or just bold text)
# This is a heuristic and might need fine-tuning based on actual proposal content variability.
is_section_header = False
# Check for numbered sections (e.g., "1. Scope of Work:")
if para_text.startswith(('1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.')):
is_section_header = True
# Check for Exhibit headers (e.g., "Exhibit A: Cabinet Design") or Roman numeral headings
elif para_text.startswith(('Exhibit ', 'I.', 'II.', 'III.', 'IV.', 'V.', 'VI.', 'VII.')):
is_section_header = True
# Check for specific known headers
elif para_text.strip().upper() in ["IN WITNESS WHEREOF,", "EXHIBITS:"]:
is_section_header = True
if is_section_header:
p = Paragraph(para_text, styles['SectionHeader'])
story.append(p)
# No additional Spacer here, as SectionHeader style has spaceAfter
else:
formatted_text = para_text.replace('\n', '<br/>')
p = Paragraph(formatted_text, styles['Normal'])
story.append(p)
story.append(Spacer(1, 0.1 * inch)) # Standard space after body paragraphs
doc.build(story)
pdf_buffer.seek(0)
# Upload the PDF to GCS
storage_client = storage.Client()
bucket = storage_client.bucket(STORAGE_BUCKET)
blob = bucket.blob(PROPOSAL_DOCUMENT_FILE_NAME)
blob.upload_from_file(pdf_buffer, content_type="application/pdf")
logger.info(f"Successfully uploaded PDF to gs://{STORAGE_BUCKET}/{PROPOSAL_DOCUMENT_FILE_NAME}")
except Exception as e:
logger.error(f"Error writing text to PDF and uploading: {e}")
raise
finally:
if 'pdf_buffer' in locals():
pdf_buffer.close()
return "Successfully uploaded PDF to GCS!!"
- Prüfen, ob Sie den Cloud Storage-Bucket haben
Hier wird das vom Agent generierte Angebotsdokument gespeichert. Erstellen Sie sie und stellen Sie den Zugriff so bereit, dass das agentenbasierte System, das wir mit Vertex AI erstellen, darauf zugreifen kann. So gehts:
https://cloud.google.com/storage/docs/creating-buckets#console
Geben Sie Ihrem Bucket den Namen next-demo-store. Wenn Sie einen anderen Namen verwenden, müssen Sie den Wert von STORAGE_BUCKET in der Datei „.env“ aktualisieren (im Schritt „ENV Variables Setup“).
- Um den Zugriff auf den Bucket einzurichten, rufen Sie die Cloud Storage-Konsole und Ihren Storage-Bucket auf. In unserem Fall lautet der Bucket-Name „next-demo-storage“: https://console.cloud.google.com/storage/browser/next-demo-storage.
Gehen Sie zu „Berechtigungen“ > „Hauptkonten ansehen“ > „Zugriff gewähren“. Wählen Sie „allUsers“ als Identitäten und „Storage-Objekt-Nutzer“ als Rolle aus.
Make sure to not enable "prevent public access". Since this is a demo/study application we are going with a public bucket. Remember to configure permission settings appropriately when you are building your application.
- Liste mit Abhängigkeiten erstellen
Listen Sie alle Abhängigkeiten in requirements.txt auf. Sie können sie aus dem Repository kopieren.
Erläuterung des Quellcodes des einzelnen Agent-Systems
In der Datei „agent.py“ werden die Struktur und das Verhalten unseres Multi-Agent-Systems für die Küchenrenovierung mit dem Agent Development Kit (ADK) definiert. Sehen wir uns die wichtigsten Komponenten an:
Agent-Definition
Root-Agent (Orchestrator): proposal_agent
Der root_agent fungiert als Orchestrator dieses Single-Agent-Systems. Sie empfängt die ursprüngliche Renovierungsanfrage und ermittelt anhand der Anforderungen der Anfrage, welche Tools aufgerufen werden sollen.
Der root_agent sammelt dann die Antworten der Tools und kombiniert sie, um dem Nutzer eine umfassende Antwort zu geben. In diesem Fall haben wir nur das Tool „store_pdf“.
7. Datenfluss und Schlüsselkonzepte
Der Nutzer initiiert eine Anfrage über die ADK-Schnittstelle (entweder das Terminal oder die Weboberfläche).
- Die Anfrage wird vom root_agent empfangen.
- Der root_agent analysiert die Anfrage und leitet sie bei Bedarf an das Tool weiter.
- Das Tool „store_pdf“ wurde entwickelt, um den überarbeiteten Textinhalt in eine PDF-Datei zu schreiben und diese dann in Google Cloud Storage hochzuladen.
- Die Antwort wird dann an den root_agent zurückgegeben.
- Der Root-Agent kombiniert die Antworten und gibt eine endgültige Ausgabe für den Nutzer aus.
LLMs (Large Language Models)
Die Agents sind stark auf LLMs angewiesen, um Text zu generieren, Fragen zu beantworten und Schlussfolgerungsaufgaben auszuführen. Die LLMs sind das „Gehirn“ hinter der Fähigkeit der Agents, Nutzeranfragen zu verstehen und darauf zu reagieren. In dieser Anwendung verwenden wir Gemini 2.5.
Google Cloud Storage
Dient zum Speichern der generierten Dokumente mit Renovierungsvorschlägen. Sie müssen einen Bucket erstellen und den Agenten die erforderlichen Berechtigungen für den Zugriff darauf gewähren.
Cloud Run (optional)
Der OrderingAgent verwendet eine Cloud Run-Funktion für die Interaktion mit AlloyDB. Cloud Run bietet eine serverlose Umgebung, in der Code als Reaktion auf HTTP-Anfragen ausgeführt wird.
AlloyDB
Wenn Sie den OrderingAgent verwenden, müssen Sie eine AlloyDB-Datenbank einrichten, in der Bestellinformationen gespeichert werden.
.env-Datei
In der Datei „.env“ werden vertrauliche Informationen wie API-Schlüssel, Anmeldedaten für die Datenbank und Bucket-Namen gespeichert. Es ist wichtig, diese Datei sicher aufzubewahren und nicht per Commit in Ihr Repository zu übertragen. Außerdem werden Konfigurationseinstellungen für die Agents und Ihr Google Cloud-Projekt gespeichert. Der root_agent oder unterstützende Funktionen lesen in der Regel Werte aus dieser Datei. Prüfen Sie, ob alle erforderlichen Variablen in der Datei „.env“ richtig festgelegt sind. Dazu gehört der Name des Cloud Storage-Buckets.
8. Modelleinrichtung
Die Fähigkeit Ihres Agents, Nutzeranfragen zu verstehen und Antworten zu generieren, basiert auf einem Large Language Model (LLM). Ihr Agent muss sichere Aufrufe an diesen externen LLM-Dienst durchführen, wofür Authentifizierungsanmeldedaten erforderlich sind. Ohne gültige Authentifizierung lehnt der LLM-Dienst die Anfragen des Agents ab und der Agent kann nicht funktionieren.
- Rufen Sie einen API-Schlüssel von Google AI Studio ab.
- Ersetzen Sie im nächsten Schritt, in dem Sie die .env-Datei einrichten,
<<your API KEY>>durch den tatsächlichen Wert Ihres API-Schlüssels.
9. Umgebungsvariablen einrichten
- Richten Sie die Werte für die Parameter in der .env-Datei der Vorlage in diesem Repository ein. In meinem Fall enthält die Datei „.env“ die folgenden Variablen:
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=<<your API KEY>>
GOOGLE_CLOUD_LOCATION = us-central1 <<or your region>>
GOOGLE_CLOUD_PROJECT = <<your project id>>
PROJECT_ID = <<your project id>>
GOOGLE_CLOUD_REGION=us-central1 <<or your region>>
STORAGE_BUCKET = next-demo-store <<or your storage bucket name>>
Ersetzen Sie die Platzhalter durch Ihre Werte.
10. Agent ausführen
- Wechseln Sie im Terminal zum übergeordneten Verzeichnis Ihres Agent-Projekts:
cd agentic-apps/renovation-agent
- Alle Abhängigkeiten installieren
pip install -r requirements.txt
- Sie können den folgenden Befehl in Ihrem Cloud Shell-Terminal ausführen, um den Agenten auszuführen:
adk run .
- Sie können den folgenden Befehl ausführen, um ihn in einer ADK-bereitgestellten Web-UI auszuführen:
Hinweis: Sie müssen diesen Befehl außerhalb des Ordners Ihres Agent-Projekts ausführen. Gehen Sie einen Schritt zurück und führen Sie ihn dann aus:
adk web
- Testen Sie mit den folgenden Prompts:
user>>
Hello. Generate Proposal Document for the kitchen remodel requirement in a proper format that applies to a renovation contract. Remember this text will eventually be stored as a pdf file so make sure to have the formatting appropriate. I have no other specification.
11. Ergebnis
Für den Befehl adk run . Das Ergebnis sieht so aus:


…

Sie können prüfen, ob das Dokument mit dem Renovierungsvorschlag im Cloud Storage-Bucket erstellt wurde.
12. In Cloud Run bereitstellen
- Erstellen Sie im Stammordner des Projekts eine Datei mit dem Namen Dockerfile:
cd agentic-apps/renovation-agent
- Inhalte aus dem GitHub-Repository kopieren
https://github.com/AbiramiSukumaran/adk-renovation-single-agent/blob/main/Dockerfile
in dieses Dockerfile.
- Stellen Sie die Anwendung mit dem folgenden Befehl in Cloud Run bereit:
adk deploy cloud_run --project=abis-345004 --region=us-central1 --service_name=renovation-agent --app_name=renovation-app --with_ui .
Das war's. Nach der Bereitstellung sollte der Endpunkt im Terminal angezeigt werden und kann verwendet werden.
13. Bereinigen
So vermeiden Sie, dass Ihrem Google Cloud-Konto die in diesem Beitrag verwendeten Ressourcen in Rechnung gestellt werden:
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Beenden, um das Projekt zu löschen.
14. Glückwunsch
Glückwunsch! Sie haben mit dem ADK erfolgreich eine Multi-Agenten-App erstellt und mit ihr interagiert. Das Multi-Agent-System soll den Prozess der Küchenrenovierung optimieren, indem Aufgaben wie das Erstellen von Angeboten, die Überprüfung von Genehmigungen und das Verfolgen des Bestellstatus automatisiert werden. Jeder Agent hat eine bestimmte Rolle und der Root-Agent koordiniert seine Aktivitäten, um eine umfassende Lösung zu bieten. Das System nutzt LLMs, Google Cloud-Dienste und möglicherweise externe APIs, um seine Funktionen bereitzustellen. Hier finden Sie einen Link zur Produktdokumentation.