Implantar um agente

A implantação de um agente no Agent Runtime o disponibiliza remotamente para processar solicitações. Neste documento, explicamos como implantar um agente com base no seu fluxo de trabalho de desenvolvimento: de um objeto de execução, arquivos de origem locais, um Dockerfile, uma imagem de contêiner hospedada no Artifact Registry ou diretamente por um repositório Git conectado.

Para implantar um agente no Agent Runtime, escolha um dos seguintes métodos:

Developer Connect

Recomendado para projetos gerenciados em um repositório Git vinculados pelo Developer Connect. Esse método simplifica a implantação de agentes diretamente do código-fonte e oferece suporte nativo ao controle de versões, à colaboração em equipe e aos pipelines de CI/CD. Antes de usar esse método, configure o link do repositório Git seguindo as instruções em Configurar o link do repositório Git do Developer Connect.

Esse método de implantação só pode ser usado com o Python.

Arquivos de origem

Adequado para fluxos de trabalho automatizados, como pipelines de CI/CD e ferramentas de infraestrutura como código, como o Terraform, permitindo implantações totalmente declarativas e automatizadas. Ele implanta seu agente diretamente do código-fonte local e não requer um bucket do Cloud Storage.

Esse método de implantação só pode ser usado com o Python.

Dockerfile

Semelhante à implantação de arquivos de origem. Você implanta o agente diretamente do código-fonte local sem precisar de um bucket do Cloud Storage. Esse método é adequado se você precisar definir e controlar o servidor de API implantado. O contêiner implantado precisa seguir o contrato de ambiente de execução.

É possível usar esse método de implantação com qualquer linguagem. Os exemplos nesta página usam Python.

Imagem do contêiner

Semelhante à implantação do Dockerfile. Implante uma imagem de contêiner hospedada no Artifact Registry. Use esse método se você precisar de controle sobre o processo de criação da imagem do contêiner e menor latência de implantação. A imagem do contêiner precisa seguir o contrato de ambiente de execução.

É possível usar esse método de implantação com qualquer linguagem. Os exemplos nesta página usam Python.

SDK da plataforma de agentes

Ideal para desenvolvimento interativo em ambientes como o Colab, permitindo a implantação de objetos local_agent na memória. Esse método funciona melhor para agentes com estruturas que não contêm componentes complexos e não serializáveis.

Para começar, siga estas etapas:

  1. Concluir pré-requisitos
  2. Opcional: configurar o agente para implantação
  3. Criar uma instância da Agent Platform
  4. Opcional: receber o ID do recurso do agente
  5. Opcional: listar as operações compatíveis
  6. Opcional: conceder as permissões do agente implantado

Pré-requisitos

Antes de implantar um agente, conclua as seguintes tarefas:

  1. Configurar o ambiente
  2. Criar um agente

Opcional: configurar o agente para implantação

É possível fazer configurações opcionais para o agente. Os exemplos nesta seção usam Python.

Criar uma instância da Agent Platform

Nesta seção, descrevemos como criar uma instância da Agent Platform para implantar um agente. Você pode escolher entre os seguintes métodos:

Developer Connect

Para implantar do Developer Connect na Agent Platform, use client.runtimes.create fornecendo developer_connect_source, entrypoint_module e entrypoint_object no dicionário de configuração, além de outras configurações opcionais. Esse método permite implantar código diretamente de um repositório Git conectado.

Esse método de implantação só pode ser usado com o 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": "...",
    },
)

Os parâmetros para a implantação do Developer Connect são:

  • developer_connect_source (dict): a configuração para buscar o código-fonte. Consulte Configurar o link do repositório Git do Developer Connect para mais detalhes.
    • git_repository_link (str): o nome do recurso do link do repositório Git do Developer Connect.
    • revision (str): a revisão a ser buscada (ramificação, tag ou SHA de commit).
    • dir (str): o diretório raiz do código do agente no repositório.
  • entrypoint_module (str): o nome do módulo Python que contém o ponto de entrada do agente, relativo ao diretório especificado em developer_connect_source.dir.
  • entrypoint_object (str): o nome do objeto chamável dentro do entrypoint_module que representa o aplicativo do agente (por exemplo, root_agent).
  • requirements_file (str): opcional. O caminho para um arquivo de requisitos do pip em relação à raiz de origem. O padrão é requirements.txt.

A implantação leva alguns minutos, durante os quais as seguintes etapas acontecem em segundo plano:

  1. O serviço do Agent Runtime busca o código-fonte da revisão do repositório Git especificada.
  2. O serviço instala dependências de requirements_file (se fornecido).
  3. O serviço inicia o aplicativo do agente usando os valores especificados para entrypoint_module e entrypoint_object.

A latência da implantação depende do tempo total necessário para instalar os pacotes necessários. Depois de implantado, remote_agent corresponde a uma instância de local_agent que está em execução na plataforma de agentes e pode ser consultada ou excluída.

O objeto remote_agent corresponde a uma classe AgentRuntime que contém o seguinte:

Arquivos de origem

Para implantar de arquivos de origem na Agent Platform, use client.runtimes.create fornecendo source_packages, entrypoint_module, entrypoint_object e class_methods no dicionário de configuração, além de outras configurações opcionais. Com esse método, não é necessário transmitir um objeto de agente ou um bucket do Cloud Storage.

Esse método de implantação só pode ser usado com o 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.
    },
)

Os parâmetros para implantação de origem inline são:

  • source_packages (list[str]): uma lista de caminhos de arquivos ou diretórios locais para incluir na implantação. O tamanho total dos arquivos e diretórios em source_packages não pode exceder 8 MB.
  • entrypoint_module (str): o nome totalmente qualificado do módulo Python que contém o ponto de entrada do agente (por exemplo, agent_dir.agent).
  • entrypoint_object (str): o nome do objeto chamável dentro do entrypoint_module que representa o aplicativo do agente (por exemplo, root_agent).
  • class_methods (list[dict]): uma lista de dicionários que definem os métodos expostos do agente. Cada dicionário inclui um campo name, api_mode e um campo opcional parameters. Consulte Listar operações compatíveis para mais informações sobre os métodos de um agente personalizado.

    Exemplo:

    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. O caminho para um arquivo de requisitos do pip nos caminhos especificados em source_packages. O padrão é requirements.txt no diretório raiz da origem empacotada.

A implantação leva alguns minutos, durante os quais as seguintes etapas acontecem em segundo plano:

  1. O SDK da Plataforma de Agentes cria um arquivo tar.gz dos caminhos especificados em source_packages.
  2. Esse arquivo é codificado e enviado diretamente para a API Agent Platform.
  3. O serviço Agent Runtime recebe o arquivo, o extrai, instala as dependências de requirements_file (se fornecido) e inicia o aplicativo do agente usando os entrypoint_module e entrypoint_object especificados.

A latência da implantação depende do tempo total necessário para instalar os pacotes necessários. Depois de implantado, remote_agent corresponde a uma instância de local_agent que está em execução na plataforma de agentes e pode ser consultada ou excluída.

O objeto remote_agent corresponde a uma classe AgentRuntime que contém o seguinte:

Dockerfile

A implantação do Dockerfile na plataforma de agentes segue uma abordagem semelhante à implantação de arquivos de origem, exceto que você usa image_spec na configuração em vez de entrypoint_module, entrypoint_object e requirements_file. O contêiner criado com base no Dockerfile precisa seguir o contrato de ambiente de execução.

É possível usar esse método de implantação com qualquer linguagem. O exemplo nesta seção usa Python.

Veja a seguir um exemplo de implantação de um agente usando um 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",
    }
)

A latência da implantação depende do tempo total necessário para instalar os pacotes necessários. Depois de implantado, remote_agent corresponde a uma instância de local_agent que está em execução na plataforma de agentes e pode ser consultada ou excluída.

O objeto remote_agent corresponde a uma classe AgentRuntime que contém o seguinte:

Imagem do contêiner

Para implantar usando uma imagem do contêiner, siga as instruções de configuração em Traga seu próprio contêiner e instale uma versão de google-cloud-aiplatform que atenda a >=1.144. A imagem do contêiner precisa seguir o contrato de ambiente de execução.

É possível usar esse método de implantação com qualquer linguagem. O exemplo nesta seção usa Python.

Veja a seguir um exemplo de implantação de um agente usando uma imagem de contêiner:

remote_agent = client.runtimes.create(
    config={
        "container_spec": {
            "image_uri": "CONTAINER_IMAGE_URI",
        },
        # Other optional configs
        "display_name": "Container image agent",
    },
)

Em que CONTAINER_IMAGE_URI corresponde ao URI da imagem do contêiner no Artifact Registry (como us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag).

A latência da implantação depende do tempo total necessário para instalar os pacotes necessários. Depois de implantado, remote_agent corresponde a uma instância de local_agent que está em execução na plataforma de agentes e pode ser consultada ou excluída.

O objeto remote_agent corresponde a uma classe AgentRuntime que contém o seguinte:

SDK da plataforma de agentes

Para implantar o agente na Agent Platform, use client.runtimes.create para transmitir o objeto local_agent com as configurações opcionais:

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.
    },
)

A implantação leva alguns minutos, durante os quais as seguintes etapas acontecem em segundo plano:

  1. Um pacote com os seguintes artefatos é gerado localmente:
    • *.pkl: um arquivo pickle correspondente ao local_agent.
    • requirements.txt: um arquivo de texto que contém os requisitos do pacote.
    • dependencies.tar.gz: um arquivo tar que contém pacotes extras.
  2. O pacote é enviado para o Cloud Storage (na pasta correspondente) para preparar os artefatos.
  3. Os URIs do Cloud Storage para os respectivos artefatos são especificados no PackageSpec.
  4. O serviço Agent Runtime recebe a solicitação, cria contêineres e inicia servidores HTTP no back-end.

A latência da implantação depende do tempo total necessário para instalar os pacotes necessários. Depois de implantado, remote_agent corresponde a uma instância de local_agent que está em execução na plataforma de agentes e pode ser consultada ou excluída.

O objeto remote_agent corresponde a uma classe AgentRuntime que contém o seguinte:

Opcional: receber o ID do recurso do agente

Cada agente implantado tem um identificador exclusivo. Execute o seguinte comando para receber o nome do recurso do agente implantado:

remote_agent.api_resource.name

A resposta será parecida com esta string:

"projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/RESOURCE_ID"

em que

  • PROJECT_ID é o Cloud de Confiance by S3NS ID do projeto em que o agente implantado é executado.

  • LOCATION é a região em que o agente implantado é executado.

  • RESOURCE_ID é o ID do agente implantado como um recurso reasoningEngine.

Opcional: listar as operações compatíveis

Cada agente implantado tem uma lista de operações compatíveis. Use o AgentRuntime.operation_schemas para ver a lista de operações compatíveis com o agente implantado:

remote_agent.operation_schemas()

O esquema de cada operação é um dicionário que documenta as informações de um método para o agente que você pode chamar. O conjunto de operações compatíveis depende do framework usado para desenvolver o agente:

Opcional: conceder permissões ao agente implantado

Se o agente implantado precisar de outras permissões, siga as instruções em Configurar a identidade e as permissões do agente.

Opcional: implantar agentes com infraestrutura empresarial

Para implantar o agente com um ambiente completo que inclua camadas de segurança e governança, copie e personalize os seguintes modelos do Application Design Center:

A seguir

Guia

Saiba como gerenciar agentes que foram implantados no ambiente de execução gerenciado da Agent Platform.

Guia

Usar um agente com o ambiente de execução da plataforma de agentes.