Implemente um agente
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Para implementar um agente no Vertex AI Agent Engine, escolha entre dois métodos principais:
Implementação a partir de um objeto de agente: ideal para o desenvolvimento interativo em ambientes como o Colab, permitindo a implementação de objetos local_agent na memória. Este método funciona melhor para agentes com estruturas que não contêm componentes complexos e não serializáveis.
Implementação a partir de ficheiros de origem: este método é adequado para fluxos de trabalho automatizados, como pipelines de CI/CD e ferramentas de infraestrutura como código, como o Terraform, o que permite implementações totalmente declarativas e automatizadas. Implementa o seu agente diretamente a partir do código fonte local e não requer um contentor do Cloud Storage.
(Opcional) Configure o agente para a implementação
Pode fazer as seguintes configurações opcionais para o seu agente:
Defina os requisitos do pacote
Forneça o conjunto de pacotes exigidos pelo agente para a implementação. O conjunto de pacotes pode ser uma lista de itens a serem instalados pelo pip ou o caminho para um ficheiro que segue o formato de ficheiro de requisitos.
Use as seguintes práticas recomendadas:
Fixe as versões dos pacotes para compilações reproduzíveis. Os pacotes comuns a acompanhar incluem o seguinte: google-cloud-aiplatform,
cloudpickle, langchain, langchain-core,
langchain-google-vertexai e pydantic.
Minimize o número de dependências no seu agente. Isto reduz o número de alterações
destrutivas quando atualiza as dependências e o agente.
Se o agente não tiver dependências, pode definir requirements
para None:
requirements=None
Se o agente usar um modelo específico da framework, deve especificar a versão do SDK importada (como 1.112.0) ao desenvolver o agente.
Pode incluir ficheiros ou diretórios locais que contenham ficheiros de origem Python necessários localmente. Em comparação com os requisitos de pacotes, isto permite-lhe usar utilitários privados que desenvolveu e que, de outra forma, não estão disponíveis no PyPI nem no GitHub.
Se o agente não precisar de pacotes adicionais, pode definir
extra_packages como None:
extra_packages=None
Também pode fazer o seguinte com o extra_packages:
Incluir um único ficheiro (como agents/agent.py):
extra_packages=["agents/agent.py"]
Inclua o conjunto de ficheiros num diretório completo (por exemplo,
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
Defina variáveis de ambiente
Se existirem variáveis de ambiente das quais o seu agente depende, pode especificá-las no argumento env_vars=. Se o agente não depender de nenhuma variável de ambiente, pode defini-lo como None:
env_vars=None
Para especificar as variáveis de ambiente, existem algumas opções diferentes disponíveis:
Pode especificar controlos de recursos de tempo de execução para o agente, como o número mínimo e máximo de instâncias da aplicação, limites de recursos para cada contentor e simultaneidade para cada contentor.
min_instances: o número mínimo de instâncias da aplicação a manter em execução em todos os momentos, com um intervalo de [0, 10]. O valor predefinido é 1.
max_instances: o número máximo de instâncias da aplicação que podem ser iniciadas para processar o aumento do tráfego, com um intervalo de [1, 1000].
O valor predefinido é 100. Se o VPC-SC ou o PSC-I estiver ativado, o intervalo aceitável é [1, 100].
resource_limits: limites de recursos para cada contentor. Apenas são suportadas as chaves cpu e memory. O valor predefinido é {"cpu": "4", "memory": "4Gi"}.
Os únicos valores suportados para cpu são 1, 2, 4, 6 e
8. Para mais informações, consulte o artigo
Configure a atribuição de CPU.
Os únicos valores suportados para memory são 1Gi, 2Gi, ...
32Gi.
container_concurrency: concorrência para cada contentor e servidor
de agente. O valor recomendado é 2 * cpu + 1. O valor predefinido é 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})
Pode especificar opções de compilação para o agente, como scripts de instalação a executar quando compila a imagem do contentor do agente. Isto é útil para instalar dependências do sistema (por exemplo, gcloud cli, npx) ou outras configurações personalizadas. Os scripts são executados com autorizações de raiz.
Para usar scripts de instalação, crie um diretório com o nome installation_scripts e coloque os seus scripts de shell no diretório installation_scripts:
Os artefactos de preparação são substituídos se corresponderem a uma pasta existente num contentor do Cloud Storage.
Se necessário, pode especificar a pasta do Cloud Storage para os artefactos de preparação. Pode definir gcs_dir_name como None se não se importar de substituir potencialmente os ficheiros na pasta predefinida:
gcs_dir_name=None
Para evitar substituir os ficheiros (por exemplo, para diferentes ambientes, como desenvolvimento, preparação e produção), pode configurar a pasta correspondente e especificar a pasta para preparar o artefacto em:
gcs_dir_name="dev"# or "staging" or "prod"
Se quiser ou precisar de evitar colisões, pode gerar um
uuid aleatório:
importuuidgcs_dir_name=str(uuid.uuid4())
Defina o nome a apresentar
Pode definir o nome a apresentar para o recurso ReasoningEngine:
Pode definir a descrição do recurso ReasoningEngine
da seguinte forma:
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."""
Defina as etiquetas
Pode definir as etiquetas do recurso ReasoningEngine
como um dicionário de pares de strings de chave-valor. Segue-se um exemplo:
labels={"author":"username","version":"latest"}
Configure uma identidade do agente predefinida
Pode aprovisionar agentes que implementa no Vertex AI Agent Engine com uma identidade única quando cria o agente. A identidade está associada ao ID do recurso do agente do Vertex AI Agent Engine e é independente da framework de agentes que usou para desenvolver o agente:
Para tal, especifique o email da sua conta de serviço personalizada como o
service_account quando criar ou atualizar a instância do Agent Engine, por exemplo:
# 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 é o nome ou o caminho completo do anexo de rede. Se a associação de rede for criada num projeto (como o projeto anfitrião de VPC partilhada) diferente daquele onde usa o Agent Engine, tem de transmitir o caminho completo da associação de rede.
DOMAIN_SUFFIX é o nome DNS da zona do Cloud DNS privado que criou quando configurou o peering de DNS privado.
TARGET_PROJECT é o projeto que aloja a rede VPC. Pode ser diferente do projeto de associação à rede.
TARGET_NETWORK é o nome da rede VPC.
Pode configurar vários agentes para usar um único anexo de rede partilhado ou anexos de rede únicos e dedicados. Para usar um anexo de rede partilhado, forneça o mesmo anexo de rede no elemento psc_interface_config para cada agente que criar.
Configure chaves de encriptação geridas pelo cliente
Para configurar a chave personalizada (CMEK) do seu agente, tem de fornecer o nome do recurso da chave ao parâmetro encryption_spec quando criar a instância do 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},)
Crie uma instância do AgentEngine
Esta secção descreve como criar uma instância AgentEngine para implementar um agente.
Para implementar um agente no Vertex AI Agent Engine, pode escolher entre os seguintes métodos:
Implementação a partir de um objeto de agente para desenvolvimento interativo.
Implementação a partir de ficheiros de origem para fluxos de trabalho automatizados baseados em ficheiros.
A partir de um objeto de agente
Para implementar o agente no Vertex AI, use client.agent_engines.create para
transmitir o objeto local_agent juntamente com quaisquer configurações opcionais:
O pacote é carregado para o Cloud Storage (na pasta correspondente) para a preparação dos artefactos.
Os URIs do Cloud Storage para os artefactos respetivos são especificados no elemento PackageSpec.
O serviço Vertex AI Agent Engine recebe o pedido, cria contentores e inicia servidores HTTP no back-end.
A latência da implementação depende do tempo total necessário para instalar os pacotes necessários. Após a implementação, remote_agent corresponde a uma instância de local_agent que está a ser executada no Vertex AI e pode ser consultada ou eliminada.
O objeto remote_agent corresponde a uma classe AgentEngine que contém os seguintes atributos:
Um remote_agent.api_resource com informações sobre o agente implementado.
Também pode chamar agent.operation_schemas() para devolver a lista de operações que o agente suporta. Consulte o artigo Liste as operações suportadas para ver detalhes.
Para implementar a partir de ficheiros de origem na Vertex AI, use client.agent_engines.create fornecendo source_packages, entrypoint_module, entrypoint_object e class_methods no dicionário de configuração, juntamente com outras configurações opcionais. Com este método, não precisa de transmitir um objeto de agente nem um contentor do Cloud Storage.
Os parâmetros para a implementação de origens inline são:
source_packages (Obrigatório, list[str]): uma lista de caminhos de ficheiros ou diretórios locais a incluir na implementação. O tamanho total dos ficheiros e diretórios em source_packages não deve exceder 8 MB.
entrypoint_module (Obrigatório, str): o nome do módulo Python totalmente qualificado que contém o ponto de entrada do agente (por exemplo, agent_dir.agent).
entrypoint_object (Obrigatório, str): o nome do objeto chamável no entrypoint_module que representa a aplicação do agente (por exemplo, root_agent).
class_methods (obrigatório, list[dict]): uma lista de dicionários que definem os métodos expostos do agente. Cada dicionário inclui um campo name (obrigatório), um campo api_mode (obrigatório) e um campo parameters. Consulte o artigo Liste as operações suportadas para mais informações sobre os métodos de um agente personalizado.
Por exemplo:
"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): o caminho para um ficheiro de requisitos do pip nos caminhos especificados em source_packages. A predefinição é requirements.txt no diretório raiz da origem incluída no pacote.
A implementação demora alguns minutos, durante os quais os seguintes passos ocorrem em segundo plano:
O SDK Vertex AI cria um arquivo tar.gz dos caminhos especificados em source_packages.
Este arquivo é codificado e enviado diretamente para a API Vertex AI.
O serviço Vertex AI Agent Engine recebe o arquivo, extrai-o, instala as dependências de requirements_file (se fornecidas) e inicia a aplicação do agente com os parâmetros entrypoint_module e entrypoint_object especificados.
A latência da implementação depende do tempo total necessário para instalar os pacotes necessários. Após a implementação, remote_agent corresponde a uma instância da aplicação do agente que está a ser executada no Vertex AI e pode ser consultada ou eliminada.
O objeto remote_agent corresponde a uma classe AgentEngine que contém os seguintes atributos:
Um remote_agent.api_resource com informações sobre o agente implementado.
Também pode chamar agent.operation_schemas() para devolver a lista de operações que o agente suporta. Consulte o artigo Liste as operações suportadas para ver detalhes.
Segue-se um exemplo de implementação de um agente a partir de ficheiros de origem:
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) Obtenha o ID do recurso do agente
Cada agente implementado tem um identificador exclusivo. Pode executar o seguinte comando
para obter o nome do recurso do agente implementado:
PROJECT_ID é o Google Cloud ID do projeto
onde o agente implementado é executado.
LOCATION é a região
onde o agente implementado é executado.
RESOURCE_ID é o ID do agente implementado como um recurso reasoningEngine.
(Opcional) Indique as operações suportadas
Cada agente implementado tem uma lista de operações suportadas. Pode executar o seguinte comando para obter a lista de operações suportadas pelo agente implementado:
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 pode chamar. O conjunto de operações suportadas depende da framework que usou para desenvolver o seu agente:
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-12-05 UTC."],[],[]]