Implementar un agente en Agent Runtime hace que esté 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 de código 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 entre los siguientes métodos:
Developer Connect
Se recomienda para 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 del repositorio de Git siguiendo las instrucciones que se indican en Configura el vínculo del repositorio de Git de Developer Connect.
Solo puedes usar este método de implementación con Python.
Archivos fuente
Es ideal 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.
Solo puedes usar este método de implementación con Python.
Dockerfile
Es similar a la implementación desde archivos de origen. 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 la API que se implementa. El contenedor implementado debe cumplir con el contrato de entorno 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
Similar a la implementación desde Dockerfile. Implementas una imagen de contenedor alojada en Artifact Registry. Usa este método si necesitas controlar el proceso de compilación de la imagen de contenedor y una latencia de implementación más baja. La imagen de contenedor debe cumplir con el contrato de entorno 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:
- Completa 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 implementar desde Developer Connect en Agent Platform, usa client.runtimes.create proporcionando developer_connect_source, entrypoint_module y entrypoint_object en el diccionario de configuración, junto con otros parámetros de configuración 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.runtimes.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 Configura 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 que se puede llamar dentro deentrypoint_moduleque representa la aplicación del agente (por ejemplo,root_agent).requirements_file(str): Opcional. Es la ruta de acceso a un archivo de requisitos de pip en relación con la raíz de origen. 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 las dependencias de
requirements_file(si se proporciona). - El servicio inicia la aplicación del agente con los valores de
entrypoint_moduleyentrypoint_objectespecificados.
La latencia de Deployment depende del tiempo total que se tarda en instalar los paquetes
necesarios. 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 AgentRuntime que contiene lo siguiente:
remote_agent.api_resourcecon información sobre el agente implementado. También puedes llamar aremote_agent.operation_schemas()para que devuelva la lista de operaciones que admiteremote_agent. Consulta Operaciones compatibles para obtener más detalles.remote_agent.api_clientque permite interacciones de servicio síncronasremote_agent.async_api_clientque permite interacciones asíncronas entre servicios
Archivos fuente
Para implementar desde archivos de origen en Agent Platform, usa client.runtimes.create proporcionando source_packages, entrypoint_module, entrypoint_object y class_methods en el diccionario de configuración, junto con otras parámetros de configuración 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.runtimes.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 código fuente intercalado son los siguientes:
source_packages(list[str]): Es una lista de rutas de acceso de 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 completamente calificado del módulo de Python que contiene el punto de entrada del agente (por ejemplo,agent_dir.agent).entrypoint_object(str): Es el nombre del objeto que se puede llamar 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 Enumera las operaciones compatibles 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): Es opcional y se refiere a 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 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 valores deentrypoint_moduleyentrypoint_objectespecificados.
La latencia de la Deployment depende del tiempo total que se tarda en instalar los paquetes
necesarios. 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 AgentRuntime que contiene lo siguiente:
remote_agent.api_resourcecon información sobre el agente implementado. También puedes llamar aremote_agent.operation_schemas()para que devuelva la lista de operaciones que admiteremote_agent. Consulta Operaciones compatibles para obtener más detalles.remote_agent.api_clientque permite interacciones de servicio síncronasremote_agent.async_api_clientque permite interacciones asíncronas entre servicios
Dockerfile
La implementación desde un Dockerfile en Agent Platform sigue un enfoque similar
al de la implementación desde archivos de origen, 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 entorno 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 cómo implementar un agente con un Dockerfile:
# Example file structure: # /current_directory # ├── agent.py # ├── main.py # ├── requirements.txt # ├── Dockerfile remote_agent = client.runtimes.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 Deployment depende del tiempo total que se tarda en instalar los paquetes
necesarios. 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 AgentRuntime que contiene lo siguiente:
remote_agent.api_resourcecon información sobre el agente implementado. También puedes llamar aremote_agent.operation_schemas()para que devuelva la lista de operaciones que admiteremote_agent. Consulta Operaciones compatibles para obtener más detalles.remote_agent.api_clientque permite interacciones de servicio síncronasremote_agent.async_api_clientque permite interacciones asíncronas entre servicios
Imagen de contenedor
Para implementar 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 cumpla con
>=1.144. La imagen de contenedor debe cumplir con el contrato de entorno 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 cómo implementar un agente con una imagen de contenedor:
remote_agent = client.runtimes.create( config={ "container_spec": { "image_uri": "CONTAINER_IMAGE_URI", }, # Other optional configs "display_name": "Container image agent", }, )
Donde 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 Deployment depende del tiempo total que se tarda en instalar los paquetes
necesarios. 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 AgentRuntime que contiene lo siguiente:
remote_agent.api_resourcecon información sobre el agente implementado. También puedes llamar aremote_agent.operation_schemas()para que devuelva la lista de operaciones que admiteremote_agent. Consulta Operaciones compatibles para obtener más detalles.remote_agent.api_clientque permite interacciones de servicio síncronasremote_agent.async_api_clientque permite interacciones asíncronas entre servicios
SDK de Agent Platform
Para implementar el agente en Agent Platform, usa client.runtimes.create para
pasar el objeto local_agent junto con cualquier parámetro de configuración opcional:
remote_agent = client.runtimes.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 conjunto de los siguientes artefactos de forma local:
*.pkl: Un archivo pickle correspondiente a local_agent.requirements.txt: Es un archivo de texto que contiene los requisitos del paquete.dependencies.tar.gz: Un archivo tar que contiene paquetes adicionales.
- El paquete se sube a Cloud Storage (en la carpeta correspondiente) para organizar los artefactos.
- Los URI de Cloud Storage para los artefactos respectivos se especifican en PackageSpec.
- El servicio Agent Runtime recibe la solicitud, crea contenedores y activa servidores HTTP en el backend.
La latencia de Deployment depende del tiempo total que se tarda en instalar los paquetes
necesarios. 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 AgentRuntime que contiene lo siguiente:
remote_agent.api_resourcecon información sobre el agente implementado. También puedes llamar aremote_agent.operation_schemas()para que devuelva la lista de operaciones que admiteremote_agent. Consulta Operaciones compatibles para obtener más detalles.remote_agent.api_clientque permite interacciones de servicio síncronasremote_agent.async_api_clientque permite interacciones asíncronas entre servicios
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 el
AgentRuntime.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 que se le otorguen permisos adicionales, sigue las instrucciones que se indican en Configura la identidad y los permisos para tu agente.
Opcional: Implementa agentes con infraestructura empresarial
Para implementar tu agente con un entorno completo que incluya capas de seguridad y administración, copia y personaliza las siguientes plantillas de Application Design Center:
¿Qué sigue?
Administrar agentes implementados
Aprende a administrar agentes que se implementaron en el entorno de ejecución administrado de Agent Platform.