AG2Agent classe dans le Agent Platform SDK, vous pouvez créer des agents qui effectuent
des tâches complexes et s'intègrent à des outils externes.
Ce document explique comment développer un agent AG2, y compris comment définir le modèle, ajouter des outils et personnaliser le flux d'orchestration.
Pour en savoir plus sur la gestion de vos agents déployés, consultez Gérer les agents déployés.
Pour créer un agent AG2 :
- Définir et configurer un exécutable
- Définir et utiliser un outil
- Facultatif : personnaliser l'orchestration
Avant de commencer
Assurez-vous que votre environnement est configuré en suivant la procédure décrite dans Configurer votre environnement.
Étape 1. Définir et configurer un exécutable
Spécifiez le modèle que vous souhaitez utiliser :
model = "gemini-3.5-flash"
Définissez le nom de l'exécutable à utiliser :
runnable_name = "Get Exchange Rate Agent"
Facultatif : configurez le modèle :
from google.cloud.aiplatform.aiplatform import initializer
llm_config = {
"config_list": [{
"project_id": initializer.global_config.project,
"location": initializer.global_config.location,
"model": "gemini-3.5-flash",
"api_type": "google",
}]
}
Pour en savoir plus sur la configuration du modèle dans AG2, consultez Analyse approfondie de la configuration du modèle.
Facultatif : configurez les paramètres de sécurité du modèle. Voici un exemple de configuration des paramètres de sécurité :
from vertexai.generative_models import HarmBlockThreshold, HarmCategory
safety_settings = {
HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_ONLY_HIGH,
HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_ONLY_HIGH,
HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_ONLY_HIGH,
HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_ONLY_HIGH,
}
for config_item in llm_config["config_list"]:
config_item["safety_settings"] = safety_settings
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é.
Créez un
AG2Agent
à l'aide des configurations de modèle :
from vertexai import agent_engines
agent = agent_engines.AG2Agent(
model=model, # Required.
runnable_name=runnable_name, # Required.
llm_config=llm_config, # Optional.
)
Si vous utilisez un environnement interactif (par exemple, un terminal ou un notebook Colab), vous pouvez exécuter une requête comme étape de test intermédiaire :
response = agent.query(input="What is the exchange rate from US dollars to SEK today?", max_turns=1)
print(response)
La réponse est un dictionnaire Python semblable à l'exemple suivant :
{'chat_id': None,
'chat_history': [{'content': 'What is the exchange rate from US dollars to Swedish currency?',
'role': 'assistant',
'name': 'user'},
{'content': 'I do not have access to real-time information, including currency exchange rates. To get the most up-to-date exchange rate from US dollars to Swedish Krona (SEK), I recommend using a reliable online currency converter or checking with your bank. \n',
'role': 'user',
'name': 'Exchange Rate Agent'}],
'summary': 'I do not have access to real-time information, including currency exchange rates. To get the most up-to-date exchange rate from US dollars to Swedish Krona (SEK), I recommend using a reliable online currency converter or checking with your bank. \n',
'cost': {'usage_including_cached_inference': {'total_cost': 5.2875e-06,
'gemini-3.5-flash': {'cost': 5.2875e-06,
'prompt_tokens': 34,
'completion_tokens': 62,
'total_tokens': 96}},
'usage_excluding_cached_inference': {'total_cost': 5.2875e-06,
'gemini-3.5-flash': {'cost': 5.2875e-06,
'prompt_tokens': 34,
'completion_tokens': 62,
'total_tokens': 96}}},
'human_input': []}
Facultatif : personnalisation avancée
Le
AG2Agent
modèle utilise api_type=="google" par défaut, car il permet d'accéder à tous les
modèles de fondation disponibles dans Google Cloud. Pour utiliser un modèle non
disponible via api_type=="google", vous pouvez personnaliser le llm_config
paramètre.
Pour obtenir la liste des modèles compatibles avec AG2 et de leurs fonctionnalités, consultez
Fournisseurs de modèles.
L'ensemble des valeurs acceptées pour llm_config= est spécifique à chaque modèle de chat. Vous devez donc vous reporter à la documentation correspondante pour plus de détails.
Gemini
Installé par défaut.
Il est utilisé dans AG2Agent lorsque vous omettez l'llm_config
argument, par exemple
from vertexai import agent_engines
agent = agent_engines.AG2Agent(
model=model, # Required.
runnable_name=runnable_name # Required.
)
Anthropic
Commencez par suivre leur documentation pour configurer un compte et installer le package.
Ensuite, définissez un llm_config :
llm_config = {
"config_list": [{
"model": "claude-3-5-sonnet-20240620", # Required.
"api_key": "ANTHROPIC_API_KEY", # Required.
"api_type": "anthropic", # Required.
}]
}
Enfin, utilisez-le dans AG2Agent avec le code suivant :
from vertexai import agent_engines
agent = agent_engines.AG2Agent(
model="claude-3-5-sonnet-20240620", # Required.
runnable_name=runnable_name, # Required.
llm_config=llm_config, # Optional.
)
OpenAI
Vous pouvez utiliser OpenAI conjointement avec l'API ChatCompletions
API de Gemini.
Commencez par définir un llm_config :
import google.auth
from google.cloud.aiplatform.aiplatform import initializer
project = initializer.global_config.project
location = initializer.global_config.location
base_url = f"https://{location}-aiplatform.googleapis.com/v1beta1/projects/{project}/locations/{location}/endpoints/openapi"
# Note: the credential lives for 1 hour by default.
# After expiration, it must be refreshed.
creds, _ = google.auth.default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
llm_config = {
"config_list": [{
"model": "google/gemini-3.5-flash", # Required.
"api_type": "openai", # Required.
"base_url": base_url, # Required.
"api_key": creds.token, # Required.
}]
}
Enfin, utilisez-le dans AG2Agent avec le code suivant :
from vertexai import agent_engines
agent = agent_engines.AG2Agent(
model="google/gemini-3.5-flash", # Or "meta/llama3-405b-instruct-maas".
runnable_name=runnable_name, # Required.
llm_config=llm_config, # Optional.
)
Étape 2 : Définir et utiliser un outil
Une fois votre modèle défini, l'étape suivante consiste à déterminer les outils qu'il utilise pour le raisonnement. Un outil peut être un outil AG2 ou une fonction Python.
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 en local 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': '2024-02-22', 'rates': {'SEK': 10.3043}}
Pour utiliser l'outil dans AG2Agent, ajoutez-le à la liste des outils sous l'argument tools= :
from vertexai import agent_engines
agent = agent_engines.AG2Agent(
model=model, # Required.
runnable_name=runnable_name, # Required.
tools=[get_exchange_rate], # Optional.
)
Vous pouvez tester l'agent localement en exécutant des requêtes de test. Exécutez la commande suivante pour tester l'agent en local en utilisant le dollar américain et la couronne suédoise :
response = agent.query(input="What is the exchange rate from US dollars to Swedish currency?", max_turns=2)
La réponse est un dictionnaire semblable à celui-ci :
{'chat_id': None,
'chat_history': [{'content': 'What is the exchange rate from US dollars to Swedish currency?',
'role': 'assistant',
'name': 'user'},
{'content': '',
'tool_calls': [{'id': '2285',
'function': {'arguments': '{"currency_from": "USD", "currency_to": "SEK"}',
'name': 'get_exchange_rate'},
'type': 'function'}],
'role': 'assistant'},
{'content': "{'amount': 1.0, 'base': 'USD', 'date': '2025-02-27', 'rates': {'SEK': 10.6509}}",
'tool_responses': [{'tool_call_id': '2285',
'role': 'tool',
'content': "{'amount': 1.0, 'base': 'USD', 'date': '2025-02-27', 'rates': {'SEK': 10.6509}}"}],
'role': 'tool',
'name': 'user'},
{'content': 'The current exchange rate is 1 USD to 10.6509 SEK. \n',
'role': 'user',
'name': 'Get Exchange Rate Agent'},
{'content': 'What is the exchange rate from US dollars to Swedish currency?',
'role': 'assistant',
'name': 'user'},
{'content': '',
'tool_calls': [{'id': '4270',
'function': {'arguments': '{"currency_from": "USD", "currency_to": "SEK"}',
'name': 'get_exchange_rate'},
'type': 'function'}],
'role': 'assistant'},
{'content': "{'amount': 1.0, 'base': 'USD', 'date': '2025-02-27', 'rates': {'SEK': 10.6509}}",
'tool_responses': [{'tool_call_id': '4270',
'role': 'tool',
'content': "{'amount': 1.0, 'base': 'USD', 'date': '2025-02-27', 'rates': {'SEK': 10.6509}}"}],
'role': 'tool',
'name': 'user'},
{'content': 'The current exchange rate is 1 USD to 10.6509 SEK. \n',
'role': 'user',
'name': 'Get Exchange Rate Agent'}],
'summary': 'The current exchange rate is 1 USD to 10.6509 SEK. \n',
'cost': {'usage_including_cached_inference': {'total_cost': 0.0002790625,
'gemini-3.5-flash': {'cost': 0.0002790625,
'prompt_tokens': 757,
'completion_tokens': 34,
'total_tokens': 791}},
'usage_excluding_cached_inference': {'total_cost': 0.0002790625,
'gemini-3.5-flash': {'cost': 0.0002790625,
'prompt_tokens': 757,
'completion_tokens': 34,
'total_tokens': 791}}},
'human_input': []}
Étape 3 : Personnaliser l'orchestration
Tous les agents AG2 implémentent l'interface ConversableAgent,
qui fournit des schémas d'entrée et de sortie pour l'orchestration. Le
AG2Agent
modèle nécessite la création d'un exécutable pour qu'il puisse répondre aux requêtes. Par
défaut,
AG2Agent
crée cet exécutable en liant le modèle à des
outils.
Vous pouvez personnaliser l'orchestration si vous souhaitez (i) implémenter un
agent assistant
qui résout une tâche avec un modèle, ou (ii) implémenter un agent proxy utilisateur
qui peut exécuter du code et fournir des commentaires aux autres agents, ou (iii)
implémenter un agent de raisonnement qui
résout une tâche avec un modèle et un raisonnement arborescent. Pour ce faire, vous devez
ignorer l'exécutable par défaut lors de la création de
AG2Agent
en spécifiant l'argument runnable_builder= avec une fonction Python de la
signature suivante :
def runnable_builder(
**runnable_kwargs,
):
Vous disposez ainsi de différentes options pour personnaliser la logique d'orchestration.
Agent assistant
Dans le cas le plus simple, pour créer un agent assistant sans orchestration,
vous pouvez remplacer le runnable_builder pour AG2Agent.
from vertexai import agent_engines
def runnable_builder(**kwargs):
from autogen import agentchat
return agentchat.AssistantAgent(**kwargs)
agent = agent_engines.AG2Agent(
model=model,
runnable_name=runnable_name,
runnable_builder=runnable_builder,
)
Agent proxy utilisateur
Dans le cas le plus simple, pour créer un agent proxy utilisateur sans orchestration,
vous pouvez remplacer le runnable_builder pour AG2Agent.
from vertexai import agent_engines
def runnable_builder(**kwargs):
from autogen import agentchat
return agentchat.UserProxyAgent(**kwargs)
agent = agent_engines.AG2Agent(
model=model,
runnable_name=runnable_name,
runnable_builder=runnable_builder,
)
Agent de raisonnement
Dans le cas le plus simple, pour créer un agent de raisonnement sans orchestration,
vous pouvez remplacer le runnable_builder pour AG2Agent.
from vertexai import agent_engines
def runnable_builder(**kwargs):
from autogen import agentchat
return agentchat.ReasoningAgent(**kwargs)
agent = agent_engines.AG2Agent(
model=model,
runnable_name=runnable_name,
runnable_builder=runnable_builder,
)
Étape suivante
Déployer des agents
Découvrez les cinq façons de déployer un agent sur Agent Platform Runtime en fonction de vos besoins de développement.
Évaluer vos agents
Créez et déployez un agent de base, puis utilisez le service d'évaluation Gen AI pour l'évaluer.
Résoudre les problèmes liés à la création d'agents
Découvrez comment résoudre les erreurs courantes lors de la création d'agents personnalisés.