Auf dieser Seite erfahren Sie, wie Sie einen Agenten mithilfe der Vorlage für das Agent Development Kit (die Klasse AdkApp
im Vertex AI SDK for Python) entwickeln. Der Agent gibt den Wechselkurs zwischen zwei Währungen an einem bestimmten Datum zurück.
Gehen Sie dazu so vor:
Hinweise
Prüfen Sie, ob Ihre Umgebung eingerichtet ist. Folgen Sie dazu der Anleitung unter Umgebung einrichten.
Modell definieren und konfigurieren
Definieren Sie die Modellversion:
model = "gemini-2.0-flash"
Optional: Konfigurieren Sie die Sicherheitseinstellungen des Modells. Weitere Informationen zu den Optionen für Sicherheitseinstellungen in Gemini finden Sie unter Sicherheitsattribute konfigurieren. Das folgende Beispiel zeigt, wie Sie die Sicherheitseinstellungen konfigurieren können:
from google.genai import types
safety_settings = [
types.SafetySetting(
category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
threshold=types.HarmBlockThreshold.OFF,
),
]
Optional: Geben Sie Parameter für die Inhaltsgenerierung an:
from google.genai import types
generate_content_config = types.GenerateContentConfig(
safety_settings=safety_settings,
temperature=0.28,
max_output_tokens=1000,
top_p=0.95,
)
Erstellen Sie einen AdkApp
mithilfe der Modellkonfigurationen:
from google.adk.agents import Agent
from vertexai.preview.reasoning_engines import AdkApp
agent = Agent(
model=model, # Required.
name='currency_exchange_agent', # Required.
generate_content_config=generate_content_config, # Optional.
)
app = AdkApp(agent=agent)
Wenn Sie in einer interaktiven Umgebung wie dem Terminal oder einem Colab-Notebook arbeiten, können Sie eine Abfrage als Zwischentestschritt ausführen:
for event in app.stream_query(
user_id="USER_ID", # Required
message="What is the exchange rate from US dollars to Swedish currency?",
):
print(event)
Dabei ist USER_ID eine benutzerdefinierte ID mit einer Zeichenbeschränkung von 128.
Die Antwort ist ein Python-Dictionary, das dem folgenden Beispiel ähnelt:
{'actions': {'artifact_delta': {},
'requested_auth_configs': {},
'state_delta': {}},
'author': 'currency_exchange_agent',
'content': {'parts': [{'text': 'To provide you with the most accurate '
'exchange rate, I need to know the specific '
'currencies you\'re asking about. "Swedish '
'currency" could refer to:\n'
'\n'
'* **Swedish Krona (SEK):** This is the '
'official currency of Sweden.\n'
'\n'
"Please confirm if you're interested in the "
'exchange rate between USD and SEK. Once you '
'confirm, I can fetch the latest exchange rate '
'for you.\n'}],
'role': 'model'},
'id': 'LYg7wg8G',
'invocation_id': 'e-113ca547-0f19-4d50-9dde-f76cbc001dce',
'timestamp': 1744166956.925927}
Tool definieren und verwenden
Nachdem Sie Ihr Modell definiert haben, definieren Sie die Tools, die Ihr Modell für Logik verwendet.
Wenn Sie eine Funktion definieren, ist es wichtig, Kommentare hinzuzufügen, die die Parameter der Funktion, ihre Funktionsweise und die Rückgabe der Funktion vollständig und klar beschreiben. Anhand dieser Informationen wird im Modell ermittelt, welche Funktion verwendet werden soll. Sie müssen Ihre Funktion auch lokal testen, um sicherzustellen, dass sie funktioniert.
Verwenden Sie den folgenden Code, um eine Funktion zu definieren, die einen Wechselkurs zurückgibt:
def get_exchange_rate(
currency_from: str = "USD",
currency_to: str = "EUR",
currency_date: str = "latest",
):
"""Retrieves the exchange rate between two currencies on a specified date.
Uses the Frankfurter API (https://api.frankfurter.app/) to obtain
exchange rate data.
Args:
currency_from: The base currency (3-letter currency code).
Defaults to "USD" (US Dollar).
currency_to: The target currency (3-letter currency code).
Defaults to "EUR" (Euro).
currency_date: The date for which to retrieve the exchange rate.
Defaults to "latest" for the most recent exchange rate data.
Can be specified in YYYY-MM-DD format for historical rates.
Returns:
dict: A dictionary containing the exchange rate information.
Example: {"amount": 1.0, "base": "USD", "date": "2023-11-24",
"rates": {"EUR": 0.95534}}
"""
import requests
response = requests.get(
f"https://api.frankfurter.app/{currency_date}",
params={"from": currency_from, "to": currency_to},
)
return response.json()
Wenn Sie die Funktion vor der Verwendung in Ihrem Agenten testen möchten, führen Sie Folgendes aus:
get_exchange_rate(currency_from="USD", currency_to="SEK")
Die Antwort sollte in etwa so aussehen:
{'amount': 1.0, 'base': 'USD', 'date': '2025-04-03', 'rates': {'SEK': 9.6607}}
Wenn Sie das Tool in der AdkApp
-Vorlage verwenden möchten, fügen Sie es der Liste der Tools unter dem tools=
-Argument hinzu:
from google.adk.agents import Agent
agent = Agent(
model=model, # Required.
name='currency_exchange_agent', # Required.
tools=[get_exchange_rate], # Optional.
)
Sie können den Agenten lokal testen, indem Sie Testabfragen an ihn senden. Führen Sie den folgenden Befehl aus, um den Agenten lokal mit US-Dollar und schwedischen Kronen zu testen:
from vertexai.preview.reasoning_engines import AdkApp
app = AdkApp(agent=agent)
for event in app.stream_query(
user_id="USER_ID",
message="What is the exchange rate from US dollars to SEK on 2025-04-03?",
):
print(event)
Die Antwort ist eine Sequenz von Wörterbüchern, die in etwa so aussieht:
{'author': 'currency_exchange_agent',
'content': {'parts': [{'function_call': {'args': {'currency_date': '2025-04-03',
'currency_from': 'USD',
'currency_to': 'SEK'},
'id': 'adk-e39f3ba2-fa8c-4169-a63a-8e4c62b89818',
'name': 'get_exchange_rate'}}],
'role': 'model'},
'id': 'zFyIaaif',
# ...
}
{'author': 'currency_exchange_agent',
'content': {'parts': [{'function_response': {'id': 'adk-e39f3ba2-fa8c-4169-a63a-8e4c62b89818',
'name': 'get_exchange_rate',
'response': {'amount': 1.0,
'base': 'USD',
'date': '2025-04-03',
'rates': {'SEK': 9.6607}}}}],
'role': 'user'},
'id': 'u2YR4Uom',
# ...
}
{'author': 'currency_exchange_agent',
'content': {'parts': [{'text': 'The exchange rate from USD to SEK on '
'2025-04-03 is 9.6607.'}],
'role': 'model'},
'id': 'q3jWA3wl',
# ...
}
Sitzungen verwalten
AdkApp
verwendet In-Memory-Sitzungen, wenn er lokal ausgeführt wird, und cloudbasierte verwaltete Sitzungen, nachdem Sie den Agenten in der Vertex AI Agent Engine bereitgestellt haben. In diesem Abschnitt wird beschrieben, wie Sie den ADK-Agenten für die Arbeit mit verwalteten Sitzungen konfigurieren.
Optional: Datenbank anpassen
Wenn Sie den standardmäßigen verwalteten Sitzungsdienst durch Ihre eigene Datenbank überschreiben möchten, können Sie eine session_service_builder
-Funktion so definieren:
def session_service_builder():
from google.adk.sessions import InMemorySessionService
return InMemorySessionService()
Übergeben Sie Ihre Datenbank als session_service_builder=
an AdkApp
:
from vertexai.preview.reasoning_engines import AdkApp
app = AdkApp(
agent=agent, # Required.
session_service_builder=session_service_builder, # Optional.
)
Agent mit Sitzungen verwenden
Wenn Sie den Agenten lokal ausführen, werden in der folgenden Anleitung In-Memory-Sitzungen verwendet:
So erstellst du eine Sitzung für deinen Kundenservicemitarbeiter:
session = app.create_session(user_id="USER_ID")
So rufen Sie eine Liste der Sitzungen auf, die mit Ihrem Kundenservicemitarbeiter verknüpft sind:
app.list_sessions(user_id="USER_ID")
Eine bestimmte Sitzung abrufen:
session = app.get_session(user_id="USER_ID", session_id="SESSION_ID")
Dabei ist SESSION_ID die ID der Sitzung, die Sie abrufen möchten.
Agenten mithilfe von Sitzungen abfragen:
for event in app.stream_query(
user_id="USER_ID",
session_id=SESSION_ID, # Optional. you can pass in the session_id when querying the agent
message="What is the exchange rate from US dollars to Swedish currency on 2025-04-03?",
):
print(event)
Der Kundenservicemitarbeiter antwortet möglicherweise mit einer Anfrage wie der folgenden:
{'author': 'currency_exchange_agent',
'content': {'parts': [{'text': 'I need to know the Swedish currency code to '
'provide you with the exchange rate.'}],
'role': 'model'},
'id': 'wIgZAtQ4',
#...
}
Du kannst eine Antwort innerhalb der Sitzung senden (z. B. "SEK"
), indem du session_id
angibst:
for event in app.stream_query(
user_id="USER_ID",
session_id=session.id, # Optional. you can pass in the session_id when querying the agent
message="SEK",
):
print(event)
Sie sollten eine Fortsetzung der Unterhaltung wie die folgende Sequenz von Wörterbüchern erhalten:
{'author': 'currency_exchange_agent',
'content': {'parts': [{'function_call': {'args': {'currency_date': '2025-04-03',
'currency_from': 'USD',
'currency_to': 'SEK'},
'id': 'adk-2b9230a6-4b92-4a1b-9a65-b708ff6c68b6',
'name': 'get_exchange_rate'}}],
'role': 'model'},
'id': 'bOPHtzji',
# ...
}
{'author': 'currency_exchange_agent',
'content': {'parts': [{'function_response': {'id': 'adk-2b9230a6-4b92-4a1b-9a65-b708ff6c68b6',
'name': 'get_exchange_rate',
'response': {'amount': 1.0,
'base': 'USD',
'date': '2025-04-03',
'rates': {'SEK': 9.6607}}}}],
'role': 'user'},
'id': '9AoDFmiL',
# ...
}
{'author': 'currency_exchange_agent',
'content': {'parts': [{'text': 'The exchange rate from USD to SEK on '
'2025-04-03 is 1 USD to 9.6607 SEK.'}],
'role': 'model'},
'id': 'hmle7trT',
# ...
}
Nächste Schritte
- Agenten bewerten
- Agent bereitstellen
- Fehlerbehebung bei der Entwicklung eines Agents
- Support anfordern