Implementa un agente
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Para implementar un agente en Vertex AI Agent Engine, elige entre dos métodos principales:
Implementación desde un objeto de agente: Es ideal para el desarrollo interactivo en entornos como Colab, ya que permite la implementación de objetos local_agent en la memoria. Este método funciona mejor para los agentes con estructuras que no contienen componentes complejos no serializables.
Implementación desde archivos fuente: Este método es adecuado para flujos de trabajo automatizados, como las canalizaciones de CI/CD y las herramientas de infraestructura como código, como Terraform, lo que permite implementaciones completamente declarativas y automatizadas. Implementa tu agente directamente desde el código fuente local y no requiere un bucket de Cloud Storage.
(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 instalará o la ruta de acceso a un archivo que siga 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).
Define 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 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 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 administrador.
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 identidad de agente predeterminada
Puedes aprovisionar los agentes que implementes en Vertex AI Agent Engine con una identidad única cuando crees tu agente. La identidad está vinculada al ID del recurso del agente de Vertex AI Agent Engine y es independiente del framework de agentes que usaste para desarrollar el agente:
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 intercambio de tráfico 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
En esta sección, se describe cómo crear una instancia de AgentEngine para implementar un agente.
Para implementar 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.
Implementación desde archivos fuente para flujos de trabajo automatizados basados en archivos
Desde un objeto de agente
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.
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.
Para realizar la implementación desde archivos fuente en Vertex AI, usa client.agent_engines.create proporcionando 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 pasar un objeto de agente ni un bucket de Cloud Storage.
Los parámetros para la implementación de la fuente intercalada son los siguientes:
source_packages (obligatorio, list[str]): Es una lista de rutas de acceso a archivos o directorios locales que se incluirán en la implementación. El tamaño total de los archivos y directorios en source_packages no debe superar los 8 MB.
entrypoint_module (obligatorio, str): Es el nombre completo del módulo de Python que contiene el punto de entrada del agente (por ejemplo, agent_dir.agent).
entrypoint_object (obligatorio, str): Es el nombre del objeto invocable dentro de entrypoint_module que representa la aplicación del agente (por ejemplo, root_agent).
class_methods (obligatorio, list[dict]): Es una 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 List supported operations 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): Es la ruta de acceso a un archivo de requisitos de pip dentro de las rutas de acceso especificadas en source_packages. El valor predeterminado es requirements.txt en el directorio raíz de la fuente empaquetada.
Deployment 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 de acceso especificadas en source_packages.
Este archivo se codifica y se envía directamente a la API de Vertex AI.
El servicio de Vertex AI Agent Engine recibe el archivo, lo extrae, instala las dependencias de requirements_file (si se proporciona) y, luego, inicia la aplicación del agente con los parámetros entrypoint_module y entrypoint_object especificados.
La latencia de Deployment depende del tiempo total que lleva instalar los paquetes requeridos. Una vez implementado, remote_agent corresponde a una instancia de la aplicación del agente que se ejecuta en Vertex AI y que se puede consultar o borrar.
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.
A continuación, se muestra un ejemplo de cómo implementar un agente a partir de archivos fuente:
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) Obtén el ID del 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:
remote_agent.api_resource.name
La respuesta debería verse como 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-12-05 (UTC)"],[],[]]