(Opcional) Configurar el agente para el despliegue
Puedes hacer las siguientes configuraciones opcionales para tu agente:
Definir los requisitos del paquete
Proporciona el conjunto de paquetes que necesita el agente para la implementación. El conjunto de paquetes puede ser una lista de elementos que pip debe instalar o la ruta a un archivo que siga el formato de archivo de requisitos.
Sigue estas prácticas recomendadas:
Fija las versiones de tus paquetes para que las compilaciones sean reproducibles. Algunos paquetes habituales que se deben monitorizar son los siguientes: google-cloud-aiplatform, cloudpickle, langchain, langchain-core, langchain-google-vertexai y pydantic.
Minimiza el número de dependencias de tu agente. De esta forma, se reduce el número de cambios incompatibles al actualizar las dependencias y el agente.
Si el agente no tiene ninguna dependencia, puedes definir requirements
como None:
requirements=None
Si el agente usa una plantilla específica de un framework, debes especificar la versión del SDK que se importa (por ejemplo, 1.112.0) al desarrollar el agente.
Puedes incluir archivos o directorios locales que contengan archivos de origen de Python locales obligatorios. En comparación con los requisitos de los paquetes, esto te permite usar utilidades privadas que hayas desarrollado y que no estén disponibles en PyPI o GitHub.
Si el agente no necesita ningún paquete adicional, puedes definir extra_packages como None:
extra_packages=None
También puedes hacer lo siguiente con extra_packages:
Incluye un solo archivo (como agents/agent.py):
extra_packages=["agents/agent.py"]
Incluye el conjunto de archivos de un directorio completo (por ejemplo, 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
Definir variables de entorno
Si hay variables de entorno de las que depende tu agente, puedes especificarlas en el argumento env_vars=. Si el agente no depende de ninguna variable de entorno, puedes asignarle el valor None:
env_vars=None
Para especificar las variables de entorno, hay varias opciones disponibles:
También debes seguir las instrucciones de Configurar la identidad y los permisos de tu agente
para concederle a tu agente el permiso Secret Accessor de Secret Manager
(roles/secretmanager.secretAccessor).
Definir controles de recursos personalizados
Puedes especificar controles de recursos de tiempo de ejecución para el agente, como el número mínimo y máximo de instancias de la aplicación, los límites de recursos de cada contenedor y la simultaneidad de cada contenedor.
min_instances: número mínimo de instancias de la aplicación que se mantienen en ejecución en todo momento. El intervalo es de [0, 10]. El valor predeterminado es 1.
max_instances: número máximo de instancias de la aplicación que se pueden iniciar para gestionar el aumento del tráfico. El intervalo es de [1, 1000].
El valor predeterminado es 100. Si se habilita VPC-SC o PSC-I, el intervalo aceptable es [1, 100].
resource_limits: límites de recursos de cada contenedor. Solo se admiten las teclas cpu y memory. El valor predeterminado es {"cpu": "4", "memory": "4Gi"}.
Los únicos valores admitidos para cpu son 1, 2, 4, 6 y 8. Para obtener más información, consulta Configurar la asignación de CPU.
Los únicos valores admitidos para memory son 1Gi, 2Gi, ...
32Gi.
container_concurrency: simultaneidad de cada contenedor y servidor de agentes. El valor recomendado es 2 * cpu + 1. El valor predeterminado es 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})
Definir las opciones de compilación
Puedes especificar opciones de compilación para el agente, como secuencias de comandos de instalación que se ejecuten al compilar la imagen del contenedor del agente. Esto es útil para instalar dependencias del sistema (por ejemplo, gcloud cli o npx) u otras configuraciones personalizadas. Las secuencias de comandos se ejecutan con permisos de superusuario.
Para usar secuencias de comandos de instalación, crea un directorio llamado installation_scripts y coloca tus secuencias de comandos shell en él:
Los artefactos de almacenamiento provisional se sobrescriben si corresponden a una carpeta de un segmento de Cloud Storage.
Si es necesario, puedes especificar la carpeta de Cloud Storage para los artefactos de almacenamiento provisional. Puedes definir gcs_dir_name como None si no te importa que se sobrescriban los archivos de la carpeta predeterminada:
gcs_dir_name=None
Para evitar que se sobrescriban los archivos (por ejemplo, en diferentes entornos, como desarrollo, staging y producción), puedes configurar la carpeta correspondiente y especificar la carpeta en la que se va a almacenar el artefacto:
gcs_dir_name="dev"# or "staging" or "prod"
Si quieres o necesitas evitar colisiones, puedes generar un
uuid aleatorio:
importuuidgcs_dir_name=str(uuid.uuid4())
Define el nombre visible
Puedes definir el nombre visible del recurso ReasoningEngine
de la siguiente manera:
Puedes definir la descripción del recurso ReasoningEngine
de la siguiente manera:
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."""
Definir las etiquetas
Puedes definir las etiquetas del recurso ReasoningEngine
como un diccionario de pares de cadenas clave-valor. A continuación, se muestra un ejemplo:
labels={"author":"username","version":"latest"}
Configurar una cuenta de servicio personalizada
Puedes configurar una cuenta de servicio personalizada como identidad del agente implementado en lugar de la identidad predeterminada.
Para ello, especifica el correo de tu cuenta de servicio personalizada como service_account al crear o actualizar la instancia de Agent Engine. Por ejemplo:
# 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",# ...},)
Configurar una interfaz de Private Service Connect
NETWORK_ATTACHMENT es el nombre o la ruta completa de
tu archivo adjunto de red. Si la vinculación de red se crea en un proyecto (como el proyecto host de la VPC compartida) diferente de aquel en el que usas Agent Engine, debes indicar la ruta completa de la vinculación de red.
DOMAIN_SUFFIX es el nombre de DNS de la zona de Cloud DNS privada que has creado al configurar el emparejamiento de DNS privado.
TARGET_PROJECT es el proyecto que aloja la red de VPC. Puede ser diferente del proyecto de adjunto de red.
TARGET_NETWORK es el nombre de la red de VPC.
Puedes configurar varios agentes para que usen una sola conexión de red compartida o conexiones de red únicas y específicas. Para usar un archivo adjunto de red compartida, proporcione el mismo archivo adjunto de red en el campo psc_interface_config de cada agente que cree.
Configurar claves de cifrado gestionadas por el cliente
Para configurar la clave personalizada (CMEK) de tu agente, debes proporcionar el nombre del recurso de la clave al parámetro encryption_spec al crear la instancia de 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},)
Crear una instancia de AgentEngine
Para desplegar el agente en Vertex AI, usa client.agent_engines.create para
transferir el objeto local_agent junto con cualquier configuración opcional:
El paquete se sube a Cloud Storage (en la carpeta correspondiente) para organizar los artefactos.
Los URIs de Cloud Storage de los artefactos correspondientes se especifican en PackageSpec.
El servicio Vertex AI Agent Engine recibe la solicitud, crea contenedores e inicia servidores HTTP en el backend.
La latencia de implementación depende del tiempo total que se tarda en instalar los paquetes necesarios. Una vez desplegado, remote_agent corresponde a una instancia de
local_agent que se ejecuta en Vertex AI y se puede consultar o eliminar. Es independiente de las instancias locales del agente.
El objeto remote_agent corresponde a una clase AgentEngine que contiene los siguientes atributos:
Un remote_agent.api_resource con información sobre el agente implementado.
También puedes llamar a agent.operation_schemas() para que se devuelva la lista de operaciones que admite el agente. Consulta Lista de operaciones admitidas para obtener más información.
Cada agente implementado tiene un identificador único. Puedes ejecutar el siguiente comando
para obtener el nombre del recurso de tu agente implementado:
PROJECT_ID es el Google Cloud ID del proyecto en el que se ejecuta el agente desplegado.
LOCATION es la región en la que se ejecuta el agente desplegado.
RESOURCE_ID es el ID del agente implementado como recurso reasoningEngine.
(Opcional) Mostrar las operaciones admitidas
Cada agente implementado tiene una lista de operaciones admitidas. Puedes ejecutar el siguiente comando para obtener la lista de operaciones admitidas por el agente implementado:
remote_agent.operation_schemas()
El esquema de cada operación es un diccionario que documenta la información de un método del agente al que puedes llamar. El conjunto de operaciones admitidas depende del framework que hayas usado para desarrollar tu agente:
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-10-19 (UTC)."],[],[]]