(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 errori 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 supportati solo i tasti
cpu e memory. Il valore predefinito è {"cpu": "4", "memory": "4Gi"}.
container_concurrency: Concorrenza per ogni container e server
agente. 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})
Definisci le opzioni di build
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 gestione temporanea. 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"}
Configura un account di servizio personalizzato
Puoi configurare un account di servizio personalizzato come identità dell'agente di cui è stato eseguito il deployment, anziché l'identità predefinita.
A questo scopo, specifica l'email del tuo account di servizio personalizzato come
service_account durante la creazione o l'aggiornamento dell'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 DNS privata di Cloud DNS 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.
Configurare 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
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 container e avvia i server HTTP sul backend.
La latenza di 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. È separato dalle istanze locali dell'agente.
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 maggiori dettagli, vedi Elenco delle operazioni supportate.
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-10-19 UTC."],[],[]]