Desplegar un agente
Organízate con las colecciones
Guarda y clasifica el contenido según tus preferencias.
Para desplegar un agente en Vertex AI Agent Engine, puedes elegir entre dos métodos principales:
Implementar desde un objeto de agente: es ideal para el desarrollo interactivo en entornos como Colab, ya que permite implementar objetos local_agent en memoria. Este método es el más adecuado para los agentes con estructuras que no contienen componentes complejos no serializables.
Despliegue desde archivos de origen: este método es adecuado para flujos de trabajo automatizados, como flujos de procesamiento de CI/CD y herramientas de infraestructura como código, como Terraform, lo que permite realizar despliegues totalmente declarativos y automatizados. Despliega tu agente directamente desde el código fuente local y no requiere un segmento de Cloud Storage.
(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:
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 deben estar 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})
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 identidad de agente predeterminada
Puedes aprovisionar los agentes que despliegues en Vertex AI Agent Engine con una identidad única al crear el agente. La identidad está vinculada al ID del recurso de agente de Vertex AI Agent Engine y es independiente del framework de agente que hayas usado para desarrollar el agente:
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 peering 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
En esta sección se describe cómo crear una instancia de AgentEngine para implementar un agente.
Para desplegar un agente en Vertex AI Agent Engine, puedes elegir entre los siguientes métodos:
Implementación desde un objeto de agente para el desarrollo interactivo.
Despliegue desde archivos de origen para flujos de trabajo automatizados basados en archivos.
Desde un objeto de agente
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 tarde 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.
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.
Para implementar desde archivos de origen en Vertex AI, usa client.agent_engines.create. Para ello, proporciona source_packages, entrypoint_module, entrypoint_object y class_methods en el diccionario de configuración, junto con otras configuraciones opcionales. Con este método, no es necesario que transfiera un objeto de agente ni un segmento de Cloud Storage.
Los parámetros de la implementación de fuentes entre líneas son los siguientes:
source_packages (obligatorio, list[str]): lista de rutas de archivos o directorios locales que se incluirán en la implementación. El tamaño total de los archivos y directorios de source_packages no debe superar los 8 MB.
entrypoint_module (obligatorio, str): nombre de módulo de Python completo que contiene el punto de entrada del agente (por ejemplo, agent_dir.agent).
entrypoint_object (obligatorio, str): nombre del objeto invocable dentro de entrypoint_module que representa la aplicación del agente (por ejemplo, root_agent).
class_methods (obligatorio, list[dict]): lista de diccionarios que definen los métodos expuestos del agente. Cada diccionario incluye un campo name (obligatorio), un campo api_mode (obligatorio) y un campo parameters. Consulta Lista de operaciones admitidas para obtener más información sobre los métodos de un agente personalizado.
Por ejemplo:
"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 (Opcional, str): ruta a un archivo de requisitos de pip dentro de las rutas especificadas en source_packages. El valor predeterminado es requirements.txt en el directorio raíz del origen empaquetado.
El despliegue tarda unos minutos, durante los cuales se realizan los siguientes pasos en segundo plano:
El SDK de Vertex AI crea un archivo tar.gz de las rutas especificadas en source_packages.
Este archivo se codifica y se envía directamente a la API de Vertex AI.
El servicio Vertex AI Agent Engine recibe el archivo, lo extrae, instala las dependencias de requirements_file (si se proporciona) e inicia la aplicación del agente con los entrypoint_module y entrypoint_object especificados.
La latencia de implementación depende del tiempo total que se tarde en instalar los paquetes necesarios. Una vez desplegado, remote_agent corresponde a una instancia de la aplicación del agente que se ejecuta en Vertex AI y se puede consultar o eliminar.
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.
A continuación, se muestra un ejemplo de cómo implementar un agente a partir de archivos de origen:
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": "...",})
(Opcional) Obtener el ID de recurso del agente
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-12-05 (UTC)."],[],[]]