KI-Agenten mit dem ADK erstellen: Tools nutzen

1. Hinweis

Willkommen zum zweiten Teil der Reihe „KI-Agents mit dem ADK erstellen“! In diesem praktischen Codelab statten Sie einen einfachen KI-Agenten mit verschiedenen Tools aus.

Diese Anleitung bietet zwei Möglichkeiten für den Einstieg: eine für Nutzer, die mit dem Codelab KI-Agents mit ADK erstellen: Die Grundlagen fortfahren, und eine für Nutzer, die neu beginnen. Bei beiden Vorgehensweisen erhalten Sie den erforderlichen Basis-Agent-Code für den Anfang.

Am Ende dieses Codelabs haben Sie Ihren persönlichen Assistenten-Agent mit Tools für verschiedene Zwecke ausgestattet. In den nachfolgenden Teilen dieser Reihe werden wir ihn in ein komplexes Multi-Agent System (MAS) umwandeln.

Voraussetzungen

Lerninhalte

  • Sie können Ihrem Agenten neue Fähigkeiten verleihen, indem Sie benutzerdefinierte Python-Funktionen als Tools erstellen.
  • Verbinden Sie Ihren Agent mit Echtzeitinformationen, indem Sie integrierte Tools wie die Google Suche verwenden.
  • Strukturieren Sie einen Agenten mit mehreren Tools, indem Sie spezielle untergeordnete Agents für komplexe Aufgaben erstellen.
  • Tools aus beliebten KI-Frameworks wie LangChain lassen sich einbinden, um die Funktionen schnell zu erweitern.

Voraussetzungen

  • Ein funktionierender Computer und eine zuverlässige WLAN-Verbindung
  • Ein Browser wie Chrome für den Zugriff auf die Google Cloud Console
  • Ein Google Cloud-Projekt mit aktivierter Abrechnung
  • Neugier und Lernbereitschaft

2. Einführung

Ein einfacher Agent, der mit dem ADK erstellt wurde, hat ein leistungsstarkes LLM-Gehirn, aber auch Einschränkungen: Er kann nicht auf Informationen zugreifen, die nach dem Trainingsdatum erstellt wurden, und er kann nicht mit externen Diensten interagieren. Es ist wie ein brillanter, belesener Assistent, der in einer Bibliothek ohne Telefon oder Internet eingeschlossen ist. Damit ein Agent wirklich nützlich ist, müssen wir ihm Tools zur Verfügung stellen.

Tools ermöglichen dem KI-Assistenten den Zugriff auf die Außenwelt, z. B. auf einen Taschenrechner, einen Webbrowser oder eine bestimmte Unternehmensdatenbank. Im ADK ist ein Tool ein modulares Codefragment, mit dem der Agent bestimmte Aktionen ausführen kann, z. B. Echtzeitdaten abrufen oder eine externe API aufrufen. Durch die Verwendung von Tools gehen die Funktionen weit über einfache Unterhaltungen hinaus.

Das ADK bietet drei Kategorien von Tools:

  1. Funktionstools:Benutzerdefinierte Tools, die Sie entwickeln, um die individuellen Anforderungen Ihrer Anwendung zu erfüllen, z. B. vordefinierte Funktionen und Agents.
  2. Integrierte Tools:Einsatzbereite Tools, die vom Framework für gängige Vorgänge wie die Google Suche und die Codeausführung bereitgestellt werden.
  3. Drittanbieter-Tools:Beliebte externe Bibliotheken wie Serper und Tools von LangChain und CrewAI.

Weitere Informationen zur Verwendung von Tools mit ADK-Agents finden Sie in der offiziellen Dokumentation. In diesem Codelab fügen wir Tools hinzu, um unseren einfachen Agent in einen leistungsstarken persönlichen Reiseassistenten zu verwandeln. Fangen wir an!

3. Erste Schritte: Ihr Basis-Agent

Bevor Sie einem Agent Tools zur Verfügung stellen können, benötigen Sie einen Basis-Agent. Wählen Sie den Pfad aus, der am besten zu Ihrem Fortschritt passt.

Pfad A: Fortsetzung des Foundation-Codelabs

Wenn Sie das Codelab KI-Agents mit ADK erstellen: Die Grundlagen gerade abgeschlossen haben, sind Sie bereit. Sie können weiterhin in Ihrem vorhandenen ai-agents-adk-Projektverzeichnis arbeiten.

Pfad B: Von vorn beginnen

Wenn Sie direkt mit diesem Codelab beginnen, führen Sie diese vier Schritte aus, um Ihre Umgebung einzurichten und den erforderlichen Starter-Agent zu erstellen.

  1. Google Cloud-Dienste einrichten
  2. Virtuelle Python-Umgebung erstellen
  3. Agent erstellen
  4. Agent in der Entwickler-UI ausführen

Sobald Sie die Schritte abgeschlossen haben, können Sie mit dem Lernen beginnen.

4. Benutzerdefiniertes Tool für den Währungsumtausch erstellen

Sie sollten jetzt bereits wissen, wie Sie mit dem ADK einen einfachen KI-Agenten erstellen und in der Entwickler-UI ausführen.

Stellen Sie sich vor, Sie bereiten sich auf eine Reise nach Japan im nächsten Monat vor und möchten den aktuellen Wechselkurs prüfen. Frage den Kundenservicemitarbeiter: „Wie ist der Wechselkurs von Singapur-Dollar zu japanischen Yen?“

a8f38e3c404ada9c.png

Sie sehen, dass der Agent keine Echtzeit-Wechselkurse abrufen kann. Das liegt daran, dass der Agent derzeit keinen Internetzugriff und keine Verbindung zu externen Systemen hat. Auch wenn der Agent mit einem Wert antwortet, ist es schwierig, diesem Wert zu vertrauen, da es sich wahrscheinlich um eine Halluzination handelt.

Um dieses Problem zu beheben, implementieren wir eine Python-Funktion, um Wechselkurse über eine REST API abzurufen, und binden sie als Funktionstool für den Agent ein.

Beenden Sie den laufenden Agent-Prozess, indem Sie im Terminalfenster die Tastenkombination Strg + C (für Windows/Linux) oder Cmd + C (für macOS) drücken.

custom_functions.py-Datei erstellen**:

Erstellen Sie im Ordner personal_assistant eine Python-Datei mit dem Namen custom_functions.py, indem Sie diesen Befehl in das Terminal eingeben:.

touch personal_assistant/custom_functions.py

So sollte Ihre Ordnerstruktur aussehen:

ai-agents-adk/
└── personal_assistant/
    ├── .env
    ├── __init__.py
    ├── agent.py
    └── custom_functions.py

Öffnen Sie die Datei custom_functions.py im Code-Editor. Diese Datei enthält die Python-Funktion, die für das Abrufen von Wechselkursdaten aus einer externen API zuständig ist.

Kopieren Sie den folgenden Code und fügen Sie ihn ein:

import requests

# define a function to get exchange rate
def get_fx_rate(base: str, target: str):
        """
        Fetches the current exchange rate between two currencies.

        Args:
                base: The base currency (e.g., "SGD").
                target: The target currency (e.g., "JPY").

        Returns:
                The exchange rate information as a json response,
                or None if the rate could not be fetched.
        """
        base_url = "https://hexarate.paikama.co/api/rates/latest"
        api_url = f"{base_url}/{base}?target={target}"

        response = requests.get(api_url)
        if response.status_code == 200:
                return response.json()

Bearbeiten Sie nun die Datei agent.py: Importieren Sie die Funktion get_fx_rate und weisen Sie sie als FunctionTool zu.

Aktualisieren Sie die Datei agent.py**:

Kopieren Sie diesen Codeblock und ersetzen Sie damit den vorhandenen Inhalt der Datei agent.py:

from google.adk.agents import Agent
from google.adk.tools import FunctionTool

from .custom_functions import get_fx_rate

root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for user questions.',
    instruction='Answer user questions to the best of your knowledge',
    tools=[FunctionTool(get_fx_rate)]
)

Starten Sie den Agent nach den Änderungen wieder, indem Sie Folgendes eingeben:

uv run adk web

Wenn der Kundenservicemitarbeiter da ist, stellen Sie dieselbe Frage noch einmal: „Wie ist der Wechselkurs von Singapur-Dollar zu japanischen Yen?“

Dieses Mal sollte der tatsächliche Wechselkurs des get_fx_rate-Tools angezeigt werden.

4f671fe04f8421f5.png

Sie können uns gern alle Fragen zum Thema Währungsumrechnung stellen.

5. In das integrierte Google-Suchtool einbinden

Da der Agent jetzt in der Lage ist, Wechselkurse anzugeben, besteht die nächste Aufgabe darin, die Wettervorhersage für den nächsten Monat abzurufen. Stellen Sie dem Agenten die folgende Frage: „Wie ist die Wettervorhersage für Tokio, Japan, für den nächsten Monat?“

96c175077957fdd0.png

Wie Sie vielleicht erwarten, erfordert die Wettervorhersage Echtzeitinformationen, die unser Agent nicht hat. Wir könnten zwar für jede erforderliche Echtzeitdatenquelle neue Python-Funktionen programmieren, aber durch das Hinzufügen immer weiterer benutzerdefinierter Tools wird der Agent schnell zu komplex und schwer zu verwalten.

Glücklicherweise bietet das Agent Development Kit (ADK) eine Reihe von integrierten Tools, darunter die Google Suche, die sofort einsatzbereit sind und die Interaktion unseres Agents mit der Außenwelt vereinfachen. Fügen wir unserem Agenten ein Google Suche-Tool hinzu.

Dazu müssen Sie die Datei agent.py so bearbeiten:

from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools import google_search

from .custom_functions import get_fx_rate

root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for user questions.',
    instruction='Answer user questions to the best of your knowledge',
    tools=[
        FunctionTool(get_fx_rate), 
        google_search,
    ]
)

Nachdem Sie die Datei bearbeitet haben, starten Sie die adk web-Instanz neu. Falls Sie es vergessen,

  1. Klicken Sie auf das Terminal und drücken Sie Strg + C oder Cmd + C, um die Instanz zu beenden.
  2. uv run adk web, um die Instanz zu starten
  3. Stellen Sie dieselbe Frage noch einmal: „Wie ist die Wettervorhersage für Tokio, Japan, für den nächsten Monat?“

Der empfohlene Ansatz ist ein Multi-Agent-Muster: Erstellen Sie einen spezialisierten Agent, dessen einzige Aufgabe darin besteht, Google-Suchanfragen auszuführen. Anschließend weisen wir diesen neuen Google Search Agent unserem Haupt-personal_assistant als Tool zu.

custom_agents.py-Datei erstellen

Erstellen Sie nun eine Python-Datei mit dem Namen custom_agents.py im Ordner personal_assistant.

touch personal_assistant/custom_agents.py

So sollte Ihre Ordnerstruktur jetzt aussehen:

ai-agents-adk/
└── personal_assistant/
    ├── .env
    ├── __init__.py
    ├── agent.py
    ├── custom_functions.py
    └── custom_agents.py

Diese Datei enthält den Code für die spezielle google_search_agent. Kopieren Sie den folgenden Code mit dem Codeeditor in die Datei custom_agents.py.

from google.adk.agents import Agent
from google.adk.tools import google_search


# Create an agent with google search tool as a search specialist
google_search_agent = Agent(
    model='gemini-2.5-flash',
    name='google_search_agent',
    description='A search agent that uses google search to get latest information about current events, weather, or business hours.',
    instruction='Use google search to answer user questions about real-time, logistical information.',
    tools=[google_search],
)

Aktualisieren Sie die Datei agent.py wie unten gezeigt, sobald die Datei erstellt wurde.

agent.py-Datei aktualisieren

Kopieren Sie diesen Codeblock und ersetzen Sie damit den vorhandenen Inhalt der Datei agent.py:

from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools import agent_tool

from .custom_functions import get_fx_rate
from .custom_agents import google_search_agent


root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for user questions.',
    tools=[
        FunctionTool(get_fx_rate), 
        agent_tool.AgentTool(agent=google_search_agent),
    ]
)

Sehen wir uns das neue leistungsstarke Muster im Code an:

  • Neuer Spezialisten-Agent: Wir haben einen völlig neuen Agenten definiert: google_search_agent. Beachten Sie die spezifische Beschreibung und dass das einzige Tool google_search ist. Es ist ein Suchspezialist.
  • agent_tool.AgentTool: Dies ist ein spezieller Wrapper aus dem ADK. Dazu wird ein vollständiger Agent (unser google_search_agent) verwendet und so verpackt, dass er wie ein Standardtool aussieht und sich auch so verhält.
  • Ein intelligenterer **root_agent**: Unser root_agent hat jetzt ein neues Tool: agent_tool.AgentTool(agent=google_search_agent). Es weiß nicht, wie man im Web sucht, aber es weiß, dass es ein Tool hat, an das es Suchaufgaben delegieren kann.

Das Feld „Anleitung“ ist in root_agent nicht mehr vorhanden. Die Anweisungen werden jetzt implizit durch die verfügbaren Tools definiert.

Die root_agent ist zu einem Orchestrator oder Router geworden, dessen Hauptaufgabe darin besteht, die Anfrage eines Nutzers zu verstehen und sie an das richtige Tool weiterzuleiten, entweder an die Funktion get_fx_rate oder an die google_search_agent. Dieses dezentrale Design ist entscheidend für die Entwicklung komplexer, wartungsfreundlicher Agentsysteme.

Starte jetzt

adk web

Instanz und stellen Sie dem Agenten noch einmal die Frage: „Wie ist die Wettervorhersage für Tokio, Japan, für den nächsten Monat?“

9771716f64132c54.png

Der Agent verwendet jetzt google_search_agent, um aktuelle Informationen abzurufen.

Sie können auch eine Frage zu einem aktuellen Tausch stellen. Der Agent sollte jetzt in der Lage sein, für die jeweilige Frage das richtige Tool zu verwenden.

2a8e6525a9f5a4ee.png

Stellen Sie dem Kundenservicemitarbeiter ruhig weitere Fragen, für die Echtzeitinformationen erforderlich sind, und beobachten Sie, wie er die Anfragen mit den ihm zur Verfügung stehenden Tools bearbeitet.

6. Wikipedia-Tool von LangChain nutzen

Unser Agent entwickelt sich zu einem großartigen Reiseassistenten. Mit dem get_fx_rate-Tool kann es den Währungsumtausch abwickeln und mit dem google_search_agent-Tool die Logistik verwalten. Bei einer tollen Reise geht es aber nicht nur um die Logistik, sondern auch darum, die Kultur und Geschichte des Reiseziels zu verstehen.

google_search_agent kann zwar kulturelle und historische Fakten finden, Informationen aus einer speziellen Quelle wie Wikipedia sind jedoch oft strukturierter und zuverlässiger.

Das ADK ist so konzipiert, dass es sich problemlos erweitern lässt. So können Sie Tools aus anderen KI-Agent-Frameworks wie CrewAI und LangChain nahtlos einbinden. Diese Interoperabilität ist entscheidend, da sie eine schnellere Entwicklung ermöglicht und Sie vorhandene Tools wiederverwenden können. Für diesen Anwendungsfall nutzen wir die Wikipedia-Tools von LangChain.

Beenden Sie zuerst den laufenden Agent-Prozess (Strg + C oder Cmd + C) und installieren Sie zusätzliche Bibliotheken in der aktuellen virtuellen Python-Umgebung, indem Sie die folgenden Befehle im Terminal eingeben.

uv add langchain-community
uv add wikipedia

third_party_tools.py-Datei erstellen

Erstellen Sie nun eine Python-Datei mit dem Namen third_party_tools.py im Ordner personal_assistant.

touch personal_assistant/third_party_tools.py

So sollte Ihre Ordnerstruktur jetzt aussehen:

ai-agents-adk/
└── personal_assistant/
    ├── .env
    ├── __init__.py
    ├── agent.py
    ├── custom_functions.py
    ├── custom_agents.py
    └── third_party_tools.py

Diese Datei enthält die Implementierung für das LangChain-Wikipedia-Tool. Kopieren Sie den folgenden Code mit dem Cloud-Editor in die Datei third_party_tools.py:

from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper

# Configure the Wikipedia LangChain tool to act as our cultural guide
langchain_wikipedia_tool = WikipediaQueryRun(
    api_wrapper=WikipediaAPIWrapper(top_k_results=1, doc_content_chars_max=3000)
)

# Give the tool a more specific description for our agent
langchain_wikipedia_tool.description = (
    "Provides deep historical and cultural information on landmarks, concepts, and places."
    "Use this for 'tell me about' or 'what is the history of' type questions."
)

agent.py-Datei aktualisieren

Aktualisieren Sie nun die Datei agent.py mit dem folgenden Inhalt:

from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools import agent_tool
from google.adk.tools import langchain_tool

from .custom_functions import get_fx_rate
from .custom_agents import google_search_agent
from .third_party_tools import langchain_wikipedia_tool


root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for user questions.',
    tools=[
        FunctionTool(get_fx_rate), 
        agent_tool.AgentTool(agent=google_search_agent),
        langchain_tool.LangchainTool(langchain_wikipedia_tool),
    ]
)

Starten Sie nun die adk web-Instanz neu und stellen Sie dem Agenten die Frage „Erzähl mir etwas über die Geschichte von Kyoto.“.

862ec3546a8fbb5f.png

Der Agent erkennt dies korrekt als historische Anfrage und verwendet das neue Wikipedia-Tool. Durch die Integration eines Drittanbietertools und die Zuweisung einer bestimmten Rolle haben Sie Ihren Agenten deutlich intelligenter und nützlicher für die Reiseplanung gemacht.

Um genau zu sehen, wie der Agent diese Auswahl getroffen hat, können Sie den Ereignis-Inspector in der adk web Benutzeroberfläche verwenden. Klicken Sie auf den Tab „Ereignisse“ und dann auf das letzte functionCall-Ereignis.

e3f388b64d08e666.png

Im Inspector wird eine Liste aller verfügbaren Tools angezeigt und der tool_code für das vom Agent ausgeführte Tool wird hervorgehoben.

135c9a1068d6c58f.png

7. Bereinigen (optional)

Da in diesem Codelab keine Produkte mit langer Laufzeit verwendet werden, reicht es aus, die aktiven Agent-Sitzungen (z.B. die adk web-Instanz in Ihrem Terminal) durch Drücken von Strg + C im Terminal zu beenden.

Ordner und Dateien des Agent-Projekts löschen

Wenn Sie den Code nur aus Ihrer Cloud Shell-Umgebung entfernen möchten, verwenden Sie die folgenden Befehle:

cd ~
rm -rf ai-agents-adk

Vertex AI API deaktivieren

Führen Sie den folgenden Befehl aus, um die zuvor aktivierte Vertex AI API zu deaktivieren:

gcloud services disable aiplatform.googleapis.com

Gesamtes Google Cloud-Projekt herunterfahren

Wenn Sie Ihr Google Cloud-Projekt vollständig beenden möchten, finden Sie hier eine detaillierte Anleitung.

8. Fazit

Glückwunsch! Sie haben den persönlichen Assistenten-Agenten erfolgreich mit benutzerdefinierten Funktionen und Echtzeit-Zugriff auf die Google Suche ausgestattet. Offizielle Dokumentation zur Verwendung von Tools mit dem Google ADK

Vor allem haben Sie das grundlegende Architekturmuster für die Entwicklung leistungsfähiger Agents kennengelernt: die Verwendung spezialisierter Agents als Tools. Indem Sie eine spezielle google_search_agent erstellen und sie Ihrem root_agent zuweisen, haben Sie den ersten Schritt von der Entwicklung eines einzelnen Agenten zur Orchestrierung eines einfachen, aber leistungsstarken Multi-Agent-Systems getan.

Sie sind jetzt bestens auf das nächste Codelab in der Reihe vorbereitet, in dem wir uns genauer mit der Orchestrierung mehrerer Agents und Workflows befassen. Wir freuen uns auf Sie!