표준 샌드박스는 코드 실행 및 컴퓨터 사용과 같은 특정 작업을 위한 턴키 솔루션을 제공하는 사전 정의된 라이브러리 집합을 제공합니다. 특정 종속 항목, 라이브러리, 커스텀 도구 또는 전문 데이터 영역 인터페이스가 필요한 에이전트 워크로드의 경우 자체 컨테이너 이미지 (자체 컨테이너 가져오기 또는 BYOC라고도 함)를 제공할 수 있습니다. 이 기능을 사용하면 샌드박스 환경의 안전한 경계 내에서 커스텀 워크로드를 실행할 수 있습니다.
시작하기 전에
프로젝트, 이미지 저장소, 권한을 설정합니다.
컨테이너 이미지 설정
컨테이너 이미지 빌드: 커스텀 환경이 포함된 Docker 이미지를 만듭니다. Gemini Enterprise Agent Platform 샌드박스와의 호환성을 보장하려면 커스텀 이미지가 다음 요구사항을 충족해야 합니다.
- OS: Linux 기반 (예: Debian 또는 Ubuntu)
- 실행기: Gemini Enterprise Agent Platform에서 명령어를 실행하는 데 사용할 수 있는 호환 실행기 또는 진입점이 포함되어야 합니다.
- 보안: 이미지가 안전한 격리된 샌드박스 내에서 실행되므로 루트 권한 또는 제한된 시스템 리소스에 대한 액세스가 필요하지 않아야 합니다.
Artifact Registry에 이미지 추가: Agent Platform에서 액세스할 수 있는 Google Cloud Artifact Registry에 이미지를 추가합니다. 샌드박스를 프로비저닝할 때 Artifact Registry 이미지 URI를 제공합니다.
권한 구성
에이전트 샌드박스에서 Artifact Registry의 커스텀 컨테이너 이미지를 가져올 수 있도록 하려면
이미지가 포함된 저장소에 대해 에이전트 샌드박스 서비스 에이전트에게 Artifact Registry 리더
(roles/artifactregistry.reader) 역할을 부여합니다.
- 에이전트 샌드박스 서비스 에이전트:
service-<var>PROJECT_NUMBER</var>@gcp-sa-vertex-sandbox.iam.gserviceaccount.com
<var>PROJECT_NUMBER</var>를 프로젝트의 프로젝트 번호로 바꾸세요.
역할 부여에 대한 자세한 내용은 서비스 에이전트에 권한 부여를 참조하세요.
에이전트 플랫폼 인스턴스 만들기
Agent Platform 인스턴스가 없는 경우 하나를 만듭니다.
import vertexai
client = vertexai.Client(
project='PROJECT_ID',
location='LOCATION',
http_options={
"api_version": "v1beta1",
}
)
agent_instance = client.agent_engines.create()
agent_instance_name = agent_instance.api_resource.name
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다. Google CloudLOCATION: Agent Platform 인스턴스의 Google Cloud 리전입니다. 지원되는 리전을 참조하세요.
커스텀 컨테이너 샌드박스 만들기
커스텀 컨테이너 샌드박스를 만들려면 먼저 샌드박스 템플릿(SandboxEnvironmentTemplate)을 만듭니다. 템플릿을 만든 후 Agent Platform은 템플릿과 연결된 사전 워밍된 풀을 만들어 더 빠르고 안정적인 시작 시간을 제공합니다.
템플릿을 만들려면 커스텀 컨테이너의 구성을 지정하는 SandboxEnvironmentTemplate 리소스를 정의합니다.
- 컨테이너 이미지: Artifact Registry에 호스팅된 사전 빌드된 커스텀 이미지의 URI입니다.
- 포트: 컨테이너에서 노출할 네트워크 포트입니다.
템플릿 만들기
# Create a custom sandbox template
templates_client = client.agent_engines.sandboxes.templates
operation = templates_client.create(
name=agent_instance_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}")
샌드박스 만들기
템플릿을 정의한 후 템플릿 리소스 이름을 참조하여 새 샌드박스 환경을 프로비저닝할 수 있습니다.
# Provision a sandbox referencing the template
create_operation = client.agent_engines.sandboxes.create(
name=agent_instance_name,
config={
"sandbox_environment_template": template_name,
"display_name": "DISPLAY_NAME"
}
)
sandbox = create_operation.response
print(f"Sandbox environment provisioned: {sandbox.name}")
다음 단계
- 샌드박스를 관리하는 방법을 알아봅니다.