Cette page vous explique comment développer un agent à l'aide du modèle Agent Development Kit (la classe AdkApp
du SDK Vertex AI pour Python). L'agent renvoie le taux de change entre deux devises à une date spécifiée.
Procédez comme suit :
Avant de commencer
Assurez-vous que votre environnement est configuré en suivant la procédure décrite dans la section Configurer votre environnement.
Définir et configurer un modèle
Définissez la version du modèle:
model = "gemini-2.0-flash"
(Facultatif) Configurez les paramètres de sécurité du modèle. Pour en savoir plus sur les options disponibles pour configurer les paramètres de sécurité dans Gemini, consultez la section Configurer les attributs de sécurité. Voici un exemple de configuration des paramètres de sécurité :
from google.genai import types
safety_settings = [
types.SafetySetting(
category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
threshold=types.HarmBlockThreshold.OFF,
),
]
(Facultatif) Spécifiez les paramètres de génération de contenu:
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,
)
Créez un AdkApp
à l'aide des configurations de modèle:
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)
Si vous exécutez votre code dans un environnement interactif, tel que le terminal ou un notebook Colab, vous pouvez exécuter une requête en tant qu'étape de test intermédiaire:
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)
où USER_ID est un ID défini par l'utilisateur avec une limite de 128 caractères.
La réponse est un dictionnaire Python semblable à l'exemple suivant:
{'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}
Définir et utiliser un outil
Une fois votre modèle défini, définissez les outils qu'il utilise pour le raisonnement.
Lorsque vous définissez votre fonction, il est important d'inclure des commentaires qui décrivent pleinement et clairement les paramètres de la fonction, ce qu'elle fait et ce qu'elle renvoie. Le modèle utilise ces informations pour déterminer quelle fonction utiliser. Vous devez également tester votre fonction localement pour vérifier qu'elle fonctionne.
Utilisez le code suivant pour définir une fonction qui renvoie un taux de change :
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()
Pour tester la fonction avant de l'utiliser dans votre agent, exécutez la commande suivante:
get_exchange_rate(currency_from="USD", currency_to="SEK")
La sortie devrait ressembler à ce qui suit :
{'amount': 1.0, 'base': 'USD', 'date': '2025-04-03', 'rates': {'SEK': 9.6607}}
Pour utiliser l'outil dans le modèle AdkApp
, ajoutez-le à la liste des outils sous l'argument tools=
:
from google.adk.agents import Agent
agent = Agent(
model=model, # Required.
name='currency_exchange_agent', # Required.
tools=[get_exchange_rate], # Optional.
)
Vous pouvez tester l'agent localement en exécutant des requêtes test sur celui-ci. Exécutez la commande suivante pour tester l'agent en local en utilisant le dollar américain et la couronne suédoise:
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)
La réponse est une séquence de dictionnaires semblable à celle-ci:
{'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',
# ...
}
Gérer des sessions
AdkApp
utilise des sessions en mémoire lors de l'exécution locale et des sessions gérées dans le cloud une fois que vous avez déployé l'agent dans Vertex AI Agent Engine. Cette section explique comment configurer votre agent ADK pour qu'il fonctionne avec les sessions gérées.
(Facultatif) Personnaliser votre base de données
Si vous souhaitez remplacer le service de session géré par défaut par votre propre base de données, vous pouvez définir une fonction session_service_builder
comme suit:
def session_service_builder():
from google.adk.sessions import InMemorySessionService
return InMemorySessionService()
Transmettez votre base de données à AdkApp
en tant que session_service_builder=
:
from vertexai.preview.reasoning_engines import AdkApp
app = AdkApp(
agent=agent, # Required.
session_service_builder=session_service_builder, # Optional.
)
Utiliser l'agent avec des sessions
Lorsque vous exécutez l'agent en local, les instructions suivantes utilisent des sessions en mémoire:
Créez une session pour votre agent:
session = app.create_session(user_id="USER_ID")
Répertoriez les sessions associées à votre agent:
app.list_sessions(user_id="USER_ID")
Obtenir une session spécifique:
session = app.get_session(user_id="USER_ID", session_id="SESSION_ID")
SESSION_ID correspond à l'ID de la session que vous souhaitez récupérer.
Interrogez l'agent à l'aide de sessions:
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)
L'agent peut répondre en demandant des informations comme celles-ci:
{'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',
#...
}
Vous pouvez envoyer une réponse dans la session (par exemple, "SEK"
) en spécifiant session_id
:
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)
Vous devriez recevoir la suite de la conversation, comme la séquence de dictionnaires suivante:
{'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',
# ...
}
Étape suivante
- Évaluer un agent
- Déployez un agent.
- Résoudre les problèmes de développement d'un agent
- Accédez à l'assistance.