(Opcional) Configura tu agente para la implementación
Puedes realizar las siguientes configuraciones opcionales para tu agente:
Define los requisitos del paquete
Proporciona el conjunto de paquetes que requiere el agente para la implementación. El conjunto de paquetes puede ser una lista de elementos que pip debe instalar o la ruta de acceso a un archivo que sigue el formato de archivo de requisitos.
Sigue las siguientes prácticas recomendadas:
Fija las versiones de tus paquetes para compilaciones reproducibles. Entre los paquetes comunes de los que debes hacer un seguimiento, se incluyen los siguientes: google-cloud-aiplatform, cloudpickle, langchain, langchain-core, langchain-google-vertexai y pydantic.
Minimiza la cantidad de dependencias en tu agente. Esto reduce la cantidad de cambios drásticos cuando actualizas tus dependencias y tu agente.
Si el agente no tiene dependencias, puedes establecer requirements en None:
requirements=None
Si el agente usa una plantilla específica del framework, debes especificar la versión del SDK que se importa (como 1.112.0) cuando desarrolles el agente.
Puedes incluir archivos o directorios locales que contengan archivos fuente de Python locales requeridos. En comparación con los requisitos de paquetes, esto te permite usar utilidades privadas que desarrollaste y que no están disponibles en PyPI o GitHub.
Si el agente no requiere ningún paquete adicional, puedes establecer extra_packages en 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 en 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
Define las 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 configurarlo como None:
env_vars=None
Para especificar las variables de entorno, tienes varias opciones disponibles:
También debes seguir las instrucciones que se indican en Configura la identidad y los permisos de tu agente para otorgarle a tu agente el permiso de Secret Manager Secret Accessor (roles/secretmanager.secretAccessor).
Cómo definir controles de recursos personalizados
Puedes especificar controles de recursos de tiempo de ejecución para el agente, como la cantidad mínima y máxima de instancias de la aplicación, los límites de recursos para cada contenedor y la simultaneidad para cada contenedor.
min_instances: Es la cantidad mínima de instancias de la aplicación que se deben mantener en ejecución en todo momento, con un rango de [0, 10]. El valor predeterminado es 1.
max_instances: Es la cantidad máxima de instancias de la aplicación que se pueden iniciar para controlar el aumento del tráfico, con un rango de [1, 1000].
El valor predeterminado es 100. Si se habilitan VPC-SC o PSC-I, el rango aceptable es [1, 100].
resource_limits: Límites de recursos para cada contenedor. Solo se admiten las claves cpu y memory. El valor predeterminado es {"cpu": "4", "memory": "4Gi"}.
container_concurrency: Es la simultaneidad para cada servidor de contenedores y 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})
Define opciones de compilación
Puedes especificar opciones de compilación para el agente, como secuencias de comandos de instalación que se ejecutan cuando se compila la imagen de contenedor del agente. Esto es útil para instalar dependencias del sistema (por ejemplo, gcloud cli, npx) o cualquier otra configuración personalizada. Las secuencias de comandos se ejecutan con permisos de raíz.
Para usar secuencias de comandos de instalación, crea un directorio llamado installation_scripts y coloca tus secuencias de comandos de shell dentro de él:
Los artefactos de la etapa de pruebas se reemplazan si corresponden a una carpeta existente en un bucket de Cloud Storage.
Si es necesario, puedes especificar la carpeta de Cloud Storage para los artefactos de etapa de pruebas. Puedes configurar gcs_dir_name como None si no te importa sobrescribir los archivos de la carpeta predeterminada:
gcs_dir_name=None
Para evitar sobrescribir los archivos (por ejemplo, para diferentes entornos, como desarrollo, etapa de pruebas y producción), puedes configurar la carpeta correspondiente y especificar la carpeta en la que se 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 establecer el nombre visible para el recurso ReasoningEngine de la siguiente manera:
Puedes establecer la descripción del recurso 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."""
Define las etiquetas
Puedes establecer las etiquetas del recurso ReasoningEngine como un diccionario de pares clave-valor de cadenas. A continuación, se muestra un ejemplo:
labels={"author":"username","version":"latest"}
Configura una cuenta de servicio personalizada
Puedes configurar una cuenta de servicio personalizada como la identidad de tu agente implementado, en lugar de la identidad predeterminada.
Para ello, especifica el correo electrónico de tu cuenta de servicio personalizada como service_account cuando crees o actualices 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",# ...},)
NETWORK_ATTACHMENT es el nombre o la ruta de acceso completa de tu adjunto de red. Si la vinculación de red se crea en un proyecto (como el proyecto host de VPC compartida) diferente de aquel en el que usas Agent Engine, debes pasar la ruta de acceso completa de la vinculación de red.
DOMAIN_SUFFIX es el nombre de DNS de la zona privada de Cloud DNS que creaste cuando configuraste el peering de DNS privado.
TARGET_PROJECT es el proyecto que aloja la red de VPC. Puede ser diferente del proyecto de Network Attachment.
TARGET_NETWORK es el nombre de la red de VPC.
Puedes configurar varios agentes para que usen un solo adjunto de red compartido o adjuntos de red únicos y dedicados. Para usar un adjunto de red compartido, proporciona el mismo adjunto de red en psc_interface_config para cada agente que crees.
Configura claves de encriptación administradas 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 cuando crees 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},)
Crea una instancia de AgentEngine
Para implementar el agente en Vertex AI, usa client.agent_engines.create para pasar 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 para los artefactos respectivos se especifican en PackageSpec.
El servicio Vertex AI Agent Engine recibe la solicitud, crea contenedores y activa servidores HTTP en el backend.
La latencia de Deployment depende del tiempo total que lleva instalar los paquetes requeridos. Una vez implementado, remote_agent corresponde a una instancia de local_agent que se ejecuta en Vertex AI y que se puede consultar o borrar. 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 devolver la lista de operaciones que admite el agente. Consulta Cómo enumerar las operaciones admitidas para obtener más detalles.
Cada agente implementado tiene un identificador único. Puedes ejecutar el siguiente comando para obtener el nombre del recurso de tu agente implementado:
remote_agent.api_resource.name
La respuesta debería ser similar a la siguiente cadena:
Cada agente implementado tiene una lista de operaciones admitidas. Puedes ejecutar el siguiente comando para obtener la lista de operaciones que admite 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 para el agente al que puedes llamar. El conjunto de operaciones admitidas depende del framework que usaste para desarrollar tu agente:
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-10-19 (UTC)"],[],[]]