Os sandboxes padrão oferecem um conjunto predefinido de bibliotecas, que fornecem soluções prontas para tarefas específicas, como execução de código e uso do computador. Para cargas de trabalho de agentes que exigem dependências, bibliotecas, ferramentas personalizadas ou interfaces de plano de dados especializadas, é possível fornecer suas próprias imagens de contêiner (também conhecidas como "traga seu próprio contêiner" ou BYOC, na sigla em inglês). Esse recurso permite executar cargas de trabalho personalizadas nos limites seguros de um ambiente de sandbox.
Antes de começar
Configure seu projeto, repositório de imagens e permissões.
Configurar a imagem do contêiner
Criar uma imagem de contêiner: crie uma imagem do Docker que contenha seu ambiente personalizado. Para garantir a compatibilidade com os sandboxes da Gemini Enterprise Agent Platform, a imagem personalizada precisa atender aos seguintes requisitos:
- SO: baseado em Linux (por exemplo, Debian ou Ubuntu).
- Executor: precisa incluir um executor ou ponto de entrada compatível que a Gemini Enterprise Agent Platform possa usar para executar comandos.
- Segurança: não pode exigir privilégios de raiz ou acesso a recursos restritos do sistema, já que a imagem será executada em um sandbox seguro e isolado.
Adicionar imagem ao Artifact Registry: adicione sua imagem ao Google Cloud Artifact Registry, em que a Agent Platform pode acessá-la. Ao provisionar o sandbox, forneça o URI da imagem do Artifact Registry.
Configurar permissões
Para permitir que o Agent Sandbox extraia sua imagem de contêiner personalizada do Artifact Registry,
conceda o papel de leitor do Artifact Registry
(roles/artifactregistry.reader) no repositório que contém a imagem para
o agente de serviço do Agent Sandbox:
- Agente de serviço do Agent Sandbox:
service-PROJECT_NUMBER@gcp-sa-vertex-sandbox.iam.gserviceaccount.com
Substitua PROJECT_NUMBER pelo número do seu projeto.
Para mais informações sobre como conceder papéis, consulte Conceder permissões a um agente de serviço.
Criar uma instância da Agent Platform
Se você não tiver uma instância da Agent Platform, crie uma.
import agentplatform
client = agentplatform.Client(
project='PROJECT_ID',
location='LOCATION',
http_options={
"api_version": "v1beta1",
}
)
remote_agent = client.runtimes.create()
remote_agent_name = remote_agent.api_resource.name
Substitua:
PROJECT_ID: o ID do Google Cloud projeto do.LOCATION: a Google Cloud região da instância da Agent Platform. Consulte Regiões com suporte.
Criar um sandbox de contêiner personalizado
Para criar um sandbox de contêiner personalizado, primeiro crie um modelo de sandbox (SandboxEnvironmentTemplate). Depois de criar um modelo, a Agent Platform cria pools pré-aquecidos associados ao modelo para oferecer tempos de inicialização mais rápidos e confiáveis.
Para criar um modelo, defina um recurso SandboxEnvironmentTemplate, que especifica a configuração do contêiner personalizado:
- Imagem do contêiner: o URI de uma imagem personalizada pré-criada hospedada no Artifact Registry.
- Portas: portas de rede a serem expostas do contêiner.
Criar o modelo
# Create a custom sandbox template
templates_client = client.sandboxes.templates
operation = templates_client.create(
name=remote_agent_name,
display_name="DISPLAY_NAME",
config={
"custom_container_environment": {
"custom_container_spec": {
"image_uri": "IMAGE_LOCATION"
},
"resources": {
"requests": {
"cpu": "1",
"memory": "500Mi"
},
"limits": {
"cpu": "1",
"memory": "500Mi"
}
},
"ports": [
{
"port": PORT_NUMBER,
"protocol": "TCP"
}
]
},
"egress_control_config": {
"internet_access": True
}
}
)
template_name = operation.response.name
print(f"Template created: {template_name}")
Criar o sandbox
Depois de definir o modelo, é possível provisionar um novo ambiente de sandbox referenciando o nome do recurso do modelo.
# Provision a sandbox referencing the template
create_operation = client.sandboxes.create(
name=remote_agent_name,
config={
"sandbox_environment_template": template_name,
"display_name": "DISPLAY_NAME"
}
)
sandbox = create_operation.response
print(f"Sandbox environment provisioned: {sandbox.name}")
A seguir
- Saiba como gerenciar seus sandboxes.
- Saiba como gerenciar modelos de sandbox.