Esegui il deployment di un agente
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Per eseguire il deployment di un agente su Vertex AI Agent Engine, scegli tra due metodi principali:
Deployment da un oggetto agente: ideale per lo sviluppo interattivo in ambienti come Colab, che consente il deployment di oggetti local_agent in memoria. Questo metodo è più adatto agli agenti con strutture che non contengono componenti complessi e non serializzabili.
Deployment dai file sorgente: questo metodo è ideale per i workflow automatizzati come le pipeline CI/CD e gli strumenti Infrastructure as Code come Terraform, consentendo deployment completamente dichiarativi e automatizzati. Esegue il deployment dell'agente direttamente dal codice sorgente locale e non richiede un bucket Cloud Storage.
(Facoltativo) Configurare l'agente per il deployment
Puoi effettuare le seguenti configurazioni facoltative per il tuo agente:
Definisci i requisiti del pacchetto
Fornisci l'insieme di pacchetti richiesti dall'agente per il deployment. L'insieme di
pacchetti può essere un elenco di elementi da installare con pip o il percorso di
un file che segue il formato del file Requirements.
Utilizza le seguenti best practice:
Blocca le versioni dei pacchetti per build riproducibili. I pacchetti comuni da monitorare includono: google-cloud-aiplatform,
cloudpickle, langchain, langchain-core,
langchain-google-vertexai e pydantic.
Riduci al minimo il numero di dipendenze nell'agente. In questo modo, il numero
di modifiche che causano interruzioni durante l'aggiornamento delle dipendenze e dell'agente viene ridotto.
Se l'agente non ha dipendenze, puoi impostare requirements
su None:
requirements=None
Se l'agente utilizza un modello specifico del framework, devi specificare la versione dell'SDK importata (ad esempio 1.112.0) durante lo sviluppo dell'agente.
Puoi includere file o directory locali che contengono i file sorgente Python locali richiesti. Rispetto ai requisiti del pacchetto,
questo ti consente di utilizzare le utilità private che hai sviluppato e che altrimenti
non sono disponibili su PyPI o GitHub.
Se l'agente non richiede pacchetti aggiuntivi, puoi impostare
extra_packages su None:
extra_packages=None
Puoi anche fare quanto segue con extra_packages:
Includi un singolo file (ad esempio agents/agent.py):
extra_packages=["agents/agent.py"]
Includi il set di file in un'intera directory (ad esempio,
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
Definisci le variabili di ambiente
Se ci sono variabili di ambiente da cui dipende l'agente, puoi
specificarle nell'argomento env_vars=. Se l'agente non
dipende da alcuna variabile di ambiente, puoi impostarlo su None:
env_vars=None
Per specificare le variabili di ambiente, sono disponibili diverse opzioni:
Puoi specificare i controlli delle risorse di runtime per l'agente, ad esempio il numero minimo e massimo di istanze dell'applicazione, i limiti delle risorse per ogni container e la concorrenza per ogni container.
min_instances: il numero minimo di istanze dell'applicazione da
mantenere in esecuzione in qualsiasi momento, con un intervallo di [0, 10]. Il valore predefinito è 1.
max_instances: il numero massimo di istanze dell'applicazione che
possono essere avviate per gestire l'aumento del traffico, con un intervallo di [1, 1000].
Il valore predefinito è 100. Se VPC-SC o PSC-I è abilitato, l'intervallo accettabile è [1, 100].
resource_limits: Limiti delle risorse per ogni container. Sono supportate solo le chiavi
cpu e memory. Il valore predefinito è {"cpu": "4", "memory": "4Gi"}.
container_concurrency: Concorrenza per ogni server agente e container. Il valore consigliato è 2 * cpu + 1. Il valore predefinito è 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})
Puoi specificare le opzioni di build per l'agente, ad esempio gli script di installazione da
eseguire durante la creazione dell'immagine container dell'agente. Ciò è utile per installare
le dipendenze di sistema (ad esempio, gcloud cli, npx) o
altre configurazioni personalizzate. Gli script vengono eseguiti con autorizzazioni root.
Per utilizzare gli script di installazione, crea una directory denominata
installation_scripts e inserisci gli script shell al suo interno:
Gli artefatti di staging vengono sovrascritti se corrispondono a una cartella esistente in un bucket Cloud Storage.
Se necessario, puoi specificare la cartella Cloud Storage per gli artefatti di staging. Puoi impostare gcs_dir_name su None se
non ti preoccupa la potenziale sovrascrittura dei file nella cartella predefinita:
gcs_dir_name=None
Per evitare di sovrascrivere i file (ad esempio per ambienti diversi come
sviluppo, gestione temporanea e produzione), puoi configurare la cartella corrispondente
e specificare la cartella in cui organizzare temporaneamente l'artefatto:
gcs_dir_name="dev"# or "staging" or "prod"
Se vuoi o devi evitare collisioni, puoi generare un uuid casuale:
importuuidgcs_dir_name=str(uuid.uuid4())
Definisci il nome visualizzato
Puoi impostare il nome visualizzato per la risorsa
ReasoningEngine:
Puoi impostare la descrizione della risorsa 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."""
Definisci le etichette
Puoi impostare le etichette della risorsa ReasoningEngine come dizionario di coppie di stringhe chiave-valore. Di seguito è riportato un esempio:
labels={"author":"username","version":"latest"}
Configurare un'identità agente predefinita
Puoi eseguire il provisioning degli agenti di cui esegui il deployment in Vertex AI Agent Engine con un'identità unica al momento della creazione dell'agente. L'identità è associata all'ID risorsa dell'agente di
Vertex AI Agent Engine ed è indipendente dal
framework dell'agente che hai utilizzato per sviluppare l'agente:
A questo scopo, specifica l'email del tuo account di servizio personalizzato come
service_account quando crei o aggiorni l'istanza di Agent Engine, ad esempio:
# 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 è il nome o il percorso completo
del collegamento di rete. Se il collegamento di rete viene creato in un progetto
(ad esempio il progetto host VPC condiviso) diverso da quello in cui utilizzi
Agent Engine, devi passare il percorso completo del collegamento di rete.
DOMAIN_SUFFIX è il nome DNS della zona Cloud DNS privata che hai creato durante la configurazione del peering DNS privato.
TARGET_PROJECT è il progetto che ospita la rete VPC. Può essere diverso dal progetto di collegamento alla rete.
TARGET_NETWORK è il nome della rete VPC.
Puoi configurare più agenti in modo che utilizzino un singolo collegamento di rete condiviso o collegamenti di rete dedicati univoci. Per utilizzare un collegamento di rete
condiviso, fornisci lo stesso collegamento di rete in
psc_interface_config per ogni agente che crei.
Configura le chiavi di crittografia gestite dal cliente
Per configurare la chiave personalizzata (CMEK) per l'agente, devi fornire il nome della risorsa chiave al parametro encryption_spec quando crei l'istanza di 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},)
Crea un'istanza AgentEngine
Questa sezione descrive come creare un'istanza AgentEngine per il deployment di un agente.
Per eseguire il deployment di un agente su Vertex AI Agent Engine, puoi scegliere uno dei seguenti metodi:
Deployment da un oggetto agente per lo sviluppo interattivo.
Deployment dai file di origine per workflow automatizzati basati su file.
Da un oggetto agente
Per eseguire il deployment dell'agente su Vertex AI, utilizza client.agent_engines.create per
trasferire l'oggetto local_agent insieme a eventuali configurazioni facoltative:
Il bundle viene caricato in Cloud Storage (nella cartella corrispondente) per la gestione temporanea degli artefatti.
Gli URI Cloud Storage per i rispettivi artefatti sono specificati in
PackageSpec.
Il servizio Vertex AI Agent Engine riceve la richiesta, crea i contenitori e avvia i server HTTP sul backend.
La latenza del deployment dipende dal tempo totale necessario per installare
i pacchetti richiesti. Una volta eseguito il deployment, remote_agent corrisponde a un'istanza di
local_agent in esecuzione su Vertex AI e può essere sottoposta a query o
eliminata.
L'oggetto remote_agent corrisponde a una classe AgentEngine che contiene i seguenti attributi:
un remote_agent.api_resource con informazioni sull'agente di cui è stato eseguito il deployment.
Puoi anche chiamare agent.operation_schemas() per restituire l'elenco delle operazioni
supportate dall'agente. Per ulteriori dettagli, consulta Elenco delle operazioni supportate.
Per il deployment dai file di origine su Vertex AI, utilizza client.agent_engines.create fornendo source_packages, entrypoint_module, entrypoint_object e class_methods nel dizionario di configurazione, insieme ad altre configurazioni facoltative. Con questo metodo, non è necessario passare un oggetto agente o un bucket Cloud Storage.
I parametri per il deployment dell'origine in linea sono:
source_packages (obbligatorio, list[str]): un elenco di percorsi di file o directory locali da includere nel deployment. Le dimensioni totali dei file e delle directory in source_packages non devono superare gli 8 MB.
entrypoint_module (obbligatorio, str): il nome completo del modulo Python contenente l'entry point dell'agente (ad esempio, agent_dir.agent).
entrypoint_object (obbligatorio, str): il nome dell'oggetto chiamabile all'interno di entrypoint_module che rappresenta l'applicazione dell'agente (ad esempio, root_agent).
class_methods (obbligatorio, list[dict]): un elenco di dizionari che definiscono i metodi esposti dell'agente. Ogni dizionario include un campo name (obbligatorio), un campo api_mode (obbligatorio) e un campo parameters. Per ulteriori informazioni sui metodi per un agente personalizzato, consulta Elenco delle operazioni supportate.
Ad esempio:
"class_methods":[{"name":"method_name","api_mode":"",# Possible options are: "", "async", "async_stream", "stream", "bidi_stream""parameters":{"type":"object","properties":{"param1":{"type":"string","description":"Description of param1"},"param2":{"type":"integer"}},"required":["param1"]}}]```
requirements_file (facoltativo, str): il percorso di un file dei requisiti pip all'interno dei percorsi specificati in source_packages. Il valore predefinito è requirements.txt nella directory radice dell'origine pacchettizzata.
Il deployment richiede alcuni minuti, durante i quali vengono eseguiti in background i seguenti passaggi:
L'SDK Vertex AI crea un archivio tar.gz dei percorsi specificati in source_packages.
Questo archivio viene codificato e inviato direttamente all'API Vertex AI.
Il servizio Vertex AI Agent Engine riceve l'archivio, lo estrae, installa le dipendenze da requirements_file (se fornito) e avvia l'applicazione dell'agente utilizzando entrypoint_module e entrypoint_object specificati.
La latenza del deployment dipende dal tempo totale necessario per installare
i pacchetti richiesti. Una volta eseguito il deployment, remote_agent corrisponde a un'istanza dell'applicazione agente in esecuzione su Vertex AI e può essere interrogata o eliminata.
L'oggetto remote_agent corrisponde a una classe AgentEngine che contiene i seguenti attributi:
un remote_agent.api_resource con informazioni sull'agente di cui è stato eseguito il deployment.
Puoi anche chiamare agent.operation_schemas() per restituire l'elenco delle operazioni
supportate dall'agente. Per ulteriori dettagli, consulta Elenco delle operazioni supportate.
Di seguito è riportato un esempio di deployment di un agente dai file di origine:
fromgoogle.cloud.aiplatformimportvertexai# Example file structure:# /agent_directory# ├── agent.py# ├── requirements.txt# Example agent_directory/agent.py:# class MyAgent:# def ask(self, question: str) -> str:# return f"Answer to {question}"# root_agent = MyAgent()remote_agent=client.agent_engines.create(config={"display_name":"My Agent","description":"An agent deployed from a local source.","source_packages":["agent_directory"],"entrypoint_module":"agent_directory.agent","entrypoint_object":"root_agent","requirements_file":"requirements.txt","class_methods":[{"name":"ask","api_mode":"","parameters":{"type":"object","properties":{"question":{"type":"string"}},"required":["question"]}},],# Other optional configs:# "env_vars": {...},# "service_account": "...",})
(Facoltativo) Recupera l'ID risorsa agente
Ogni agente di cui è stato eseguito il deployment ha un identificatore univoco. Puoi eseguire il seguente comando
per ottenere il nome della risorsa per l'agente di cui è stato eseguito il deployment:
remote_agent.api_resource.name
La risposta dovrebbe essere simile alla seguente stringa:
PROJECT_ID è l' Google Cloud ID progetto
in cui viene eseguito l'agente di cui è stato eseguito il deployment.
LOCATION è la regione
in cui viene eseguito l'agente di cui è stato eseguito il deployment.
RESOURCE_ID è l'ID dell'agente di cui è stato eseguito il deployment come
risorsa reasoningEngine.
(Facoltativo) Elenca le operazioni supportate
Ogni agente di cui è stato eseguito il deployment ha un elenco di operazioni supportate. Puoi eseguire questo comando per ottenere l'elenco delle operazioni supportate dall'agente di cui è stato eseguito il deployment:
remote_agent.operation_schemas()
Lo schema di ogni operazione è un dizionario che documenta le informazioni di un metodo per l'agente che puoi chiamare. Il set di operazioni supportate
dipende dal framework che hai utilizzato per sviluppare l'agente:
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-12-05 UTC."],[],[]]