(Facultatif) Configurer votre agent pour le déploiement
Vous pouvez effectuer les configurations facultatives suivantes pour votre agent :
Définir les exigences du package
Fournissez l'ensemble des packages requis par l'agent pour le déploiement. L'ensemble de packages peut être une liste d'éléments à installer par pip ou le chemin d'accès à un fichier qui suit le format de fichier d'exigences.
Appliquez les bonnes pratiques suivantes :
Épinglez vos versions de package pour les builds reproductibles. Les packages courants à suivre sont les suivants : google-cloud-aiplatform, cloudpickle, langchain, langchain-core, langchain-google-vertexai et pydantic.
Minimisez le nombre de dépendances dans votre agent. Cela réduit le nombre de modifications destructives lors de la mise à jour de vos dépendances et de votre agent.
Si l'agent n'a aucune dépendance, vous pouvez définir requirements sur None :
requirements=None
Si l'agent utilise un modèle spécifique au framework, vous devez spécifier la version du SDK importée (par exemple, 1.112.0) lors du développement de l'agent.
Vous pouvez inclure des fichiers ou des répertoires locaux contenant les fichiers sources Python locaux requis. Par rapport aux exigences de package, cela vous permet d'utiliser des utilitaires privés que vous avez développés et qui ne sont pas disponibles sur PyPI ni sur GitHub.
Si l'agent ne nécessite aucun package supplémentaire, vous pouvez définir extra_packages sur None :
extra_packages=None
Vous pouvez également effectuer les opérations suivantes avec extra_packages :
Incluez un seul fichier (par exemple, agents/agent.py) :
extra_packages=["agents/agent.py"]
Incluez l'ensemble des fichiers d'un répertoire entier (par exemple, agents/) :
extra_packages=["agents"]# directory that includes agents/agent.py
requirements=["google-cloud-aiplatform[agent_engines,adk]","cloudpickle==3.0","python_package.whl",# install from the whl file that was uploaded]extra_packages=["path/to/python_package.whl"]# bundle the whl file for uploading
Définir des variables d'environnement
Si votre agent dépend de variables d'environnement, vous pouvez les spécifier dans l'argument env_vars=. Si l'agent ne dépend d'aucune variable d'environnement, vous pouvez le définir sur None :
env_vars=None
Pour spécifier les variables d'environnement, plusieurs options sont disponibles :
Vous devez également suivre les instructions de la section Configurer l'identité et les autorisations de votre agent pour accorder à votre agent l'autorisation Accesseur de secrets Secret Manager (roles/secretmanager.secretAccessor).
Définir des contrôles de ressources personnalisés
Vous pouvez spécifier des contrôles des ressources d'exécution pour l'agent, tels que le nombre minimal et maximal d'instances d'application, les limites de ressources pour chaque conteneur et la simultanéité pour chaque conteneur.
min_instances : nombre minimal d'instances d'application à maintenir en cours d'exécution à tout moment, avec une plage de [0, 10]. La valeur par défaut est de 1.
max_instances : nombre maximal d'instances d'application pouvant être lancées pour gérer l'augmentation du trafic, avec une plage de [1, 1000].
La valeur par défaut est 100. Si VPC-SC ou PSC-I sont activés, la plage acceptable est [1, 100].
resource_limits : limites de ressources pour chaque conteneur. Seules les clés cpu et memory sont acceptées. La valeur par défaut est {"cpu": "4", "memory": "4Gi"}.
container_concurrency : simultanéité pour chaque conteneur et serveur d'agent. La valeur recommandée est 2 * cpu + 1. La valeur par défaut est 9.
remote_agent=client.agent_engines.create(agent=local_agent,config={"min_instances":1,"max_instances":10,"resource_limits":{"cpu":"4","memory":"8Gi"},"container_concurrency":9,# ... other configs})
Définir les options de compilation
Vous pouvez spécifier des options de compilation pour l'agent, telles que des scripts d'installation à exécuter lors de la compilation de l'image de conteneur de l'agent. Cela est utile pour installer des dépendances système (par exemple, gcloud cli, npx) ou d'autres configurations personnalisées. Les scripts sont exécutés avec les autorisations root.
Pour utiliser des scripts d'installation, créez un répertoire nommé installation_scripts et placez-y vos scripts shell :
Les artefacts de préproduction sont écrasés s'ils correspondent à un dossier existant dans un bucket Cloud Storage.
Si nécessaire, vous pouvez spécifier le dossier Cloud Storage pour les artefacts de préproduction. Vous pouvez définir gcs_dir_name sur None si vous ne craignez pas d'écraser potentiellement les fichiers du dossier par défaut :
gcs_dir_name=None
Pour éviter d'écraser les fichiers (par exemple, pour différents environnements tels que le développement, la préproduction et la production), vous pouvez configurer le dossier correspondant et spécifier le dossier dans lequel organiser l'artefact :
gcs_dir_name="dev"# or "staging" or "prod"
Si vous souhaitez ou devez éviter les collisions, vous pouvez générer un uuid aléatoire :
importuuidgcs_dir_name=str(uuid.uuid4())
Définir le nom à afficher
Vous pouvez définir le nom à afficher pour la ressource ReasoningEngine :
Vous pouvez définir la description de la ressource ReasoningEngine :
description="""An agent that has access to tools for looking up the exchange rate.If you run into any issues, please contact the dev team."""
Définir les libellés
Vous pouvez définir les libellés de la ressource ReasoningEngine sous forme de dictionnaire de paires clé/valeur. En voici un exemple :
labels={"author":"username","version":"latest"}
Configurer un compte de service personnalisé
Vous pouvez configurer un compte de service personnalisé comme identité de votre agent déployé, au lieu de l'identité par défaut.
Pour ce faire, spécifiez l'adresse e-mail de votre compte de service personnalisé en tant que service_account lorsque vous créez ou mettez à jour l'instance Agent Engine, par exemple :
# Create a new instanceclient.agent_engines.create(agent=local_agent,config={"service_account":"my-custom-service-account@my-project.iam.gserviceaccount.com",# ...},)# Update an existing instanceresource_name="projects/{project_id}/locations/{location}/reasoningEngines/{reasoning_engine_id}"client.agent_engines.update(name=resource_name,agent=local_agent,config={"service_account":"my-new-custom-service-account@my-project.iam.gserviceaccount.com",# ...},)
NETWORK_ATTACHMENT correspond au nom ou au chemin d'accès complet de votre rattachement réseau. Si le rattachement réseau est créé dans un projet (tel que le projet hôte de VPC partagé) différent de celui dans lequel vous utilisez Agent Engine, vous devez transmettre le chemin d'accès complet de votre rattachement réseau.
DOMAIN_SUFFIX est le nom DNS de la zone Cloud DNS privée que vous avez créée lors de la configuration de l'appairage DNS privé.
TARGET_PROJECT est le projet qui héberge le réseau VPC. Il peut être différent du projet d'association au réseau.
TARGET_NETWORK est le nom du réseau VPC.
Vous pouvez configurer plusieurs agents pour qu'ils utilisent un seul rattachement de réseau partagé ou des rattachements de réseau uniques et dédiés. Pour utiliser un rattachement de réseau partagé, fournissez le même rattachement de réseau dans psc_interface_config pour chaque agent que vous créez.
Configurer des clés de chiffrement gérées par le client
Vous pouvez utiliser une clé personnalisée pour chiffrer les données de votre agent au repos. Pour en savoir plus, consultez Clés de chiffrement gérées par le client (CMEK) dans Agent Engine.
Pour configurer la clé personnalisée (CMEK) de votre agent, vous devez fournir le nom de ressource de la clé au paramètre encryption_spec lorsque vous créez l'instance Agent Engine.
# The fully qualified key namekms_key_name="projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"remote_agent=client.agent_engines.create(agent=local_agent,config={"encryption_spec":{"kms_key_name":kms_key_name},# ... other parameters},)
Créer une instance AgentEngine
Pour déployer l'agent sur Vertex AI, utilisez client.agent_engines.create pour transmettre l'objet local_agent ainsi que les configurations facultatives :
Le bundle est importé dans Cloud Storage (dans le dossier correspondant) pour la préproduction des artefacts.
Les URI Cloud Storage des artefacts respectifs sont spécifiés dans PackageSpec.
Le service Vertex AI Agent Engine reçoit la requête, crée des conteneurs et démarre des serveurs HTTP sur le backend.
La latence de déploiement dépend du temps total nécessaire à l'installation des packages requis. Une fois déployé, remote_agent correspond à une instance de local_agent qui s'exécute sur Vertex AI et peut être interrogée ou supprimée. Elle est distincte des instances locales de l'agent.
L'objet remote_agent correspond à une classe AgentEngine qui contient les attributs suivants :
un remote_agent.api_resource contenant des informations sur l'agent déployé.
Vous pouvez également appeler agent.operation_schemas() pour renvoyer la liste des opérations compatibles avec l'agent. Pour en savoir plus, consultez Lister les opérations compatibles.
Chaque agent déployé possède un identifiant unique. Vous pouvez exécuter la commande suivante pour obtenir le nom de ressource de votre agent déployé :
remote_agent.api_resource.name
La réponse devrait ressembler à la chaîne suivante :
Chaque agent déployé dispose d'une liste d'opérations compatibles. Vous pouvez exécuter la commande suivante pour obtenir la liste des opérations prises en charge par l'agent déployé :
remote_agent.operation_schemas()
Le schéma de chaque opération est un dictionnaire qui documente les informations d'une méthode pour l'agent que vous pouvez appeler. L'ensemble des opérations compatibles dépend du framework que vous avez utilisé pour développer votre agent :
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/10/19 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/10/19 (UTC)."],[],[]]