Auf dieser Seite erfahren Sie, wie Sie einen Agent mit der Vorlage für das Agent Development Kit (der 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
Richten Sie Ihre Umgebung ein, indem Sie die Schritte unter Umgebung einrichten ausführen.
Modell definieren und konfigurieren
Definieren Sie die Modellversion:
model = "gemini-2.0-flash"
Optional: Konfigurieren Sie die Sicherheitseinstellungen des Modells. Weitere Informationen zu den verfügbaren 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 mit den Modellkonfigurationen einen AdkApp
:
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 eine interaktive Umgebung wie das Terminal oder ein Colab-Notebook verwenden, können Sie eine Abfrage als Zwischenschritt zum Testen 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 einem Zeichenlimit 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 Ihre Funktion definieren, ist es wichtig, Kommentare einzufügen, die die Parameter der Funktion, die Funktion selbst und die Rückgabe der Funktion vollständig und klar beschreiben. Anhand dieser Informationen bestimmt das Modell, welche Funktion verwendet werden soll. Sie müssen Ihre Funktion auch lokal testen, um zu bestätigen, 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()
So testen Sie die Funktion, bevor Sie sie in Ihrem Agent verwenden:
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 Vorlage AdkApp
verwenden möchten, fügen Sie es der Liste der Tools unter dem Argument tools=
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 Agent lokal testen, indem Sie Testabfragen an ihn durchführen. 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 Folge von Dictionaries, 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 es lokal ausgeführt wird, und cloudbasierte verwaltete Sitzungen, nachdem Sie den Agent in Vertex AI Agent Engine bereitgestellt haben. In diesem Abschnitt wird beschrieben, wie Sie Ihren ADK-Agent für die Verwendung mit verwalteten Sitzungen konfigurieren.
(Optional) Sitzungsdatenbank anpassen
Wenn Sie den verwalteten Standardsitzungsdienst mit Ihrer eigenen 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 an AdkApp
als session_service_builder=
:
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 den folgenden Anleitungen In-Memory-Sitzungen verwendet:
So erstellen Sie eine Sitzung für Ihren Agent:
session = app.create_session(user_id="USER_ID")
Sitzungen auflisten, die mit Ihrem Agent verknüpft sind:
app.list_sessions(user_id="USER_ID")
So rufen Sie eine bestimmte Sitzung ab:
session = app.get_session(user_id="USER_ID", session_id="SESSION_ID")
Dabei ist SESSION_ID die ID der jeweiligen Sitzung, die Sie abrufen möchten.
Agent mit 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 kann mit einer Anfrage nach Informationen wie den folgenden antworten:
{'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',
#...
}
Sie können eine Antwort innerhalb der Sitzung senden (z. B. "SEK"
), indem Sie session_id
angeben:
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 des Gesprächs wie die folgende Sequenz von Dictionaries 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
- Agent bewerten
- Agent bereitstellen
- Fehlerbehebung bei der Entwicklung eines Agents
- Support anfordern