Implementar un agente en Agent Runtime lo hace disponible de forma remota para controlar solicitudes. En este documento, se explican las formas de implementar un agente según tu flujo de trabajo de desarrollo: desde un objeto de ejecución, archivos fuente locales, un Dockerfile, una imagen de contenedor alojada en Artifact Registry o directamente a través de un repositorio de Git conectado.
Para implementar un agente en Agent Runtime, elige uno de los siguientes métodos:
Developer Connect
Se recomienda para los proyectos administrados en un repositorio de Git que se vinculan a través de Developer Connect. Este método optimiza la implementación de agentes directamente desde tu código fuente y admite de forma nativa el control de versión, la colaboración en equipo y las canalizaciones de CI/CD. Antes de usar este método, configura el vínculo a tu repositorio de Git siguiendo las instrucciones que se indican en Cómo configurar el vínculo al repositorio de Git de Developer Connect.
Solo puedes usar este método de implementación con Python.
Archivos fuente
Es adecuada para flujos de trabajo automatizados, como canalizaciones de CI/CD y 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.
Solo puedes usar este método de implementación con Python.
Dockerfile
Es similar a la implementación desde archivos fuente. Implementas tu agente directamente desde el código fuente local sin necesidad de un bucket de Cloud Storage. Este método es adecuado si necesitas definir y controlar el servidor de API que se implementa. El contenedor implementado debe cumplir con el contrato de tiempo de ejecución.
Puedes usar este método de implementación con cualquier lenguaje. En los ejemplos de esta página, se usa Python.
Imagen de contenedor
Es similar a la implementación desde Dockerfile. Implementarás una imagen de contenedor alojada en Artifact Registry. Usa este método si necesitas controlar el proceso de compilación de la imagen del contenedor y reducir la latencia de implementación. La imagen de contenedor debe cumplir con el contrato de tiempo de ejecución.
Puedes usar este método de implementación con cualquier lenguaje. En los ejemplos de esta página, se usa Python.
SDK de Agent Platform
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.
Para comenzar, sigue estos pasos:
- Completar los requisitos previos
- Opcional: Configura tu agente para la implementación
- Crea una instancia de Agent Platform
- Opcional: Obtén el ID del recurso del agente
- Opcional: Enumera las operaciones admitidas
- Opcional: Otorga permisos al agente implementado
Requisitos previos
Antes de implementar un agente, asegúrate de haber completado las siguientes tareas:
Opcional: Configura tu agente para la implementación
Puedes realizar configuraciones opcionales para tu agente. En los ejemplos de esta sección, se usa Python.
Crea una instancia de Agent Platform
En esta sección, se describe cómo crear una instancia de Agent Platform para implementar un agente. Puedes elegir entre los siguientes métodos:
Developer Connect
Para realizar la implementación desde Developer Connect en Agent Platform, usa client.agent_engines.create proporcionando developer_connect_source, entrypoint_module y entrypoint_object en el diccionario de configuración, junto con otras configuraciones opcionales. Este método te permite implementar código directamente desde un repositorio de Git conectado.
Solo puedes usar este método de implementación con Python.
remote_agent = client.agent_engines.create( config={ "developer_connect_source": { # Required. "git_repository_link": "projects/PROJECT_ID/locations/LOCATION/connections/CONNECTION_ID/gitRepositoryLinks/REPO_ID", "revision": "main", "dir": "path/to/dir", }, "entrypoint_module": "agent", # Required. "entrypoint_object": "root_agent", # Required. "requirements_file": "requirements.txt", # Optional. # Other optional configs: # "env_vars": {...}, # "service_account": "...", }, )
Los parámetros para la implementación de Developer Connect son los siguientes:
developer_connect_source(dict): Es la configuración para recuperar el código fuente. Consulta cómo configurar el vínculo al repositorio de Git de Developer Connect para obtener más detalles.git_repository_link(str): Es el nombre del recurso del vínculo al repositorio de Git de Developer Connect.revision(str): Es la revisión que se recuperará (rama, etiqueta o SHA de confirmación).dir(str): Es el directorio raíz del código del agente dentro del repositorio.
entrypoint_module(str): Es el nombre del módulo de Python que contiene el punto de entrada del agente, en relación con el directorio especificado endeveloper_connect_source.dir.entrypoint_object(str): Es el nombre del objeto invocable dentro deentrypoint_moduleque representa la aplicación del agente (por ejemplo,root_agent).requirements_file(str): Opcional: Es la ruta a un archivo de requisitos de pip en relación con la raíz de la fuente. La configuración predeterminada esrequirements.txt.
Deployment tarda unos minutos, durante los cuales se realizan los siguientes pasos en segundo plano:
- El servicio de Agent Runtime recupera el código fuente de la revisión del repositorio de Git especificada.
- El servicio instala dependencias desde
requirements_file(si se proporciona). - El servicio inicia la aplicación del agente con los parámetros
entrypoint_moduleyentrypoint_objectespecificados.
La latencia de la 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 Agent Platform y se puede consultar o borrar.
El objeto remote_agent corresponde a una clase AgentEngine que contiene lo siguiente:
remote_agent.api_resourcecon información sobre el agente implementado. También puedes llamar aremote_agent.operation_schemas()para que muestre la lista de operaciones que admiteremote_agent. Consulta Operaciones admitidas para obtener más detalles.remote_agent.api_clientque permite interacciones de servicio síncronasremote_agent.async_api_clientque permite interacciones de servicio asíncronas
Archivos fuente
Para realizar la implementación desde archivos fuente en Agent Platform, 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 necesitas pasar un objeto de agente ni un bucket de Cloud Storage.
Solo puedes usar este método de implementación con Python.
# 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={ "source_packages": source_packages, # Required. "entrypoint_module": entrypoint_module, # Required. "entrypoint_object": entrypoint_object, # Required. "class_methods": class_methods, # Required. "requirements_file": requirements_file, # Optional. "display_name": display_name, # Optional. "description": description, # Optional. "labels": labels, # Optional. "env_vars": env_vars, # Optional. "build_options": build_options, # Optional. "identity_type": identity_type, # Optional. "service_account": service_account, # Optional. "min_instances": min_instances, # Optional. "max_instances": max_instances, # Optional. "resource_limits": resource_limits, # Optional. "container_concurrency": container_concurrency, # Optional "encryption_spec": encryption_spec, # Optional. "agent_framework": agent_framework, # Optional. }, )
Los parámetros para la implementación de la fuente intercalada son los siguientes:
source_packages(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 ensource_packagesno debe superar los 8 MB.entrypoint_module(str): Es el nombre del módulo de Python completamente calificado que contiene el punto de entrada del agente (por ejemplo,agent_dir.agent).entrypoint_object(str): Es el nombre del objeto invocable dentro deentrypoint_moduleque representa la aplicación del agente (por ejemplo,root_agent).class_methods(list[dict]): Es una lista de diccionarios que definen los métodos expuestos del agente. Cada diccionario incluye un camponame,api_modey un campoparametersopcional. 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": "", # Options: "", "async", "async_stream", "stream", "bidi_stream" "parameters": { "type": "object", "properties": { "param1": {"type": "string", "description": "Description of param1"}, "param2": {"type": "integer"} }, "required": ["param1"] } } ]
requirements_file(str): Opcional: Es la ruta de acceso a un archivo de requisitos de pip dentro de las rutas de acceso especificadas ensource_packages. El valor predeterminado esrequirements.txten 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 Agent Platform crea un archivo
tar.gzde las rutas de acceso especificadas ensource_packages. - Este archivo se codifica y se envía directamente a la API de Agent Platform.
- El servicio de Agent Runtime 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ámetrosentrypoint_moduleyentrypoint_objectespecificados.
La latencia de la 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 Agent Platform y se puede consultar o borrar.
El objeto remote_agent corresponde a una clase AgentEngine que contiene lo siguiente:
remote_agent.api_resourcecon información sobre el agente implementado. También puedes llamar aremote_agent.operation_schemas()para que muestre la lista de operaciones que admiteremote_agent. Consulta Operaciones admitidas para obtener más detalles.remote_agent.api_clientque permite interacciones de servicio síncronasremote_agent.async_api_clientque permite interacciones de servicio asíncronas
Dockerfile
La implementación desde Dockerfile en la Agent Platform sigue un enfoque similar al de la implementación desde archivos fuente, excepto que usas image_spec en la configuración en lugar de entrypoint_module, entrypoint_object y requirements_file. El contenedor compilado a partir del Dockerfile debe cumplir con el contrato de tiempo de ejecución.
Puedes usar este método de implementación con cualquier lenguaje. En el ejemplo de esta sección, se usa Python.
A continuación, se muestra un ejemplo de implementación de un agente con un Dockerfile:
# Example file structure: # /current_directory # ├── agent.py # ├── main.py # ├── requirements.txt # ├── Dockerfile remote_agent = client.agent_engines.create( config={ "source_packages": [ "agent.py", "main.py", "requirements.txt", "Dockerfile", ], "image_spec": {}, # tells Agent Runtime to use the Dockerfile # Other optional configs "display_name": "Dockerfile agent", } )
La latencia de la 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 Agent Platform y se puede consultar o borrar.
El objeto remote_agent corresponde a una clase AgentEngine que contiene lo siguiente:
remote_agent.api_resourcecon información sobre el agente implementado. También puedes llamar aremote_agent.operation_schemas()para que muestre la lista de operaciones que admiteremote_agent. Consulta Operaciones admitidas para obtener más detalles.remote_agent.api_clientque permite interacciones de servicio síncronasremote_agent.async_api_clientque permite interacciones de servicio asíncronas
Imagen de contenedor
Para realizar la implementación desde una imagen de contenedor, primero sigue las instrucciones de configuración de Trae tu propio contenedor y asegúrate de instalar una versión de google-cloud-aiplatform que satisfaga >=1.144. La imagen de contenedor debe cumplir con el contrato de tiempo de ejecución.
Puedes usar este método de implementación con cualquier lenguaje. En el ejemplo de esta sección, se usa Python.
A continuación, se muestra un ejemplo de implementación de un agente con una imagen de contenedor:
remote_agent = client.agent_engines.create( config={ "container_spec": { "image_uri": "CONTAINER_IMAGE_URI", }, # Other optional configs "display_name": "Container image agent", }, )
Aquí, CONTAINER_IMAGE_URI corresponde al URI de la imagen de contenedor en Artifact Registry (como us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag).
La latencia de la 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 Agent Platform y se puede consultar o borrar.
El objeto remote_agent corresponde a una clase AgentEngine que contiene lo siguiente:
remote_agent.api_resourcecon información sobre el agente implementado. También puedes llamar aremote_agent.operation_schemas()para que muestre la lista de operaciones que admiteremote_agent. Consulta Operaciones admitidas para obtener más detalles.remote_agent.api_clientque permite interacciones de servicio síncronasremote_agent.async_api_clientque permite interacciones de servicio asíncronas
SDK de Agent Platform
Para implementar el agente en Agent Platform, usa client.agent_engines.create para
pasar el objeto local_agent junto con cualquier configuración opcional:
remote_agent = client.agent_engines.create( agent=local_agent, # Optional. config={ "requirements": requirements, # Optional. "extra_packages": extra_packages, # Optional. "gcs_dir_name": gcs_dir_name, # Optional. "display_name": display_name, # Optional. "description": description, # Optional. "labels": labels, # Optional. "env_vars": env_vars, # Optional. "build_options": build_options, # Optional. "identity_type": identity_type, # Optional. "service_account": service_account, # Optional. "min_instances": min_instances, # Optional. "max_instances": max_instances, # Optional. "resource_limits": resource_limits, # Optional. "container_concurrency": container_concurrency, # Optional "encryption_spec": encryption_spec, # Optional. "agent_framework": agent_framework, # Optional. }, )
Deployment tarda unos minutos, durante los cuales se realizan los siguientes pasos en segundo plano:
- Se genera un paquete de los siguientes artefactos de forma local:
*.pklun archivo pickle correspondiente a local_agent.requirements.txt, un archivo de texto que contiene los requisitos del paquetedependencies.tar.gzun archivo tar que contiene paquetes adicionales
- 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 de Agent Runtime recibe la solicitud, crea contenedores y activa servidores HTTP en el backend.
La latencia de la 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 Agent Platform y se puede consultar o borrar.
El objeto remote_agent corresponde a una clase AgentEngine que contiene lo siguiente:
remote_agent.api_resourcecon información sobre el agente implementado. También puedes llamar aremote_agent.operation_schemas()para que muestre la lista de operaciones que admiteremote_agent. Consulta Operaciones admitidas para obtener más detalles.remote_agent.api_clientque permite interacciones de servicio síncronasremote_agent.async_api_clientque permite interacciones de servicio asíncronas
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 ser similar a la siguiente cadena:
"projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/RESOURCE_ID"
donde
PROJECT_IDes el Google Cloud ID del proyecto en el que se ejecuta el agente implementado.LOCATIONes la región en la que se ejecuta el agente implementado.RESOURCE_IDes el ID del agente implementado como un recursoreasoningEngine.
Opcional: Enumera las operaciones admitidas
Cada agente implementado tiene una lista de operaciones admitidas. Puedes usar AgentEngine.operation_schemas 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:
Opcional: Otorga permisos al agente implementado
Si el agente implementado necesita permisos adicionales, sigue las instrucciones que se indican en Configura la identidad y los permisos de tu agente.
Opcional: Implementa agentes con infraestructura empresarial
Para implementar tu agente con un entorno completo que incluya capas de seguridad y gobernanza, copia y personaliza las siguientes plantillas de App Design Center:
¿Qué sigue?
Administrar agentes implementados
Aprende a administrar los agentes que se implementaron en el entorno de ejecución administrado de Agent Platform.