Untuk men-deploy agen di Vertex AI Agent Engine, gunakan langkah-langkah berikut:
- Konfigurasi agen Anda untuk deployment.
- Buat instance
AgentEngine
. - Berikan izin agen yang di-deploy.
- Mendapatkan ID resource agen.
Anda juga dapat menggunakan template Agent Starter Pack untuk deployment.
Sebelum memulai
Sebelum men-deploy agen, pastikan Anda telah menyelesaikan tugas berikut:
Mengonfigurasi agen untuk deployment
Anda dapat melakukan konfigurasi opsional berikut:
- Persyaratan paket
- Paket tambahan
- Variabel lingkungan
- Kontrol resource yang disesuaikan
- Opsi build
- Folder Cloud Storage
- Metadata resource
- Akun layanan kustom
- Antarmuka Private Service Connect
- Kunci enkripsi yang dikelola pelanggan
Menentukan persyaratan paket
Menyediakan kumpulan paket yang diperlukan oleh agen untuk deployment. Kumpulan paket dapat berupa daftar item yang akan diinstal oleh pip, atau jalur ke file yang mengikuti Format File Persyaratan. Gunakan praktik terbaik berikut:
Sematkan versi paket Anda untuk build yang dapat direproduksi. Paket umum yang perlu diperhatikan mencakup:
google-cloud-aiplatform
,cloudpickle
,langchain
,langchain-core
,langchain-google-vertexai
, danpydantic
.Minimalkan jumlah dependensi di agen Anda. Hal ini mengurangi jumlah perubahan yang merusak saat memperbarui dependensi dan agen Anda.
Jika agen tidak memiliki dependensi, Anda dapat menyetel requirements
ke None
:
requirements = None
Jika agen menggunakan template khusus framework, Anda harus menentukan versi SDK yang diimpor (seperti 1.77.0
) saat mengembangkan agen.
ADK
requirements = [
"google-cloud-aiplatform[agent_engines,adk]",
# any other dependencies
]
LangChain
requirements = [
"google-cloud-aiplatform[agent_engines,langchain]",
# any other dependencies
]
LangGraph
requirements = [
"google-cloud-aiplatform[agent_engines,langgraph]",
# any other dependencies
]
AG2
requirements = [
"google-cloud-aiplatform[agent_engines,ag2]",
# any other dependencies
]
LlamaIndex
Petunjuk berikut ditujukan untuk Pipeline Kueri LlamaIndex:
requirements = [
"google-cloud-aiplatform[agent_engines,llama_index]",
# any other dependencies
]
Anda juga dapat melakukan hal berikut dengan paket requirements
:
Membatasi atau menyematkan versi paket tertentu (seperti
google-cloud-aiplatform
):requirements = [ # See https://pypi.org/project/google-cloud-aiplatform for the latest version. "google-cloud-aiplatform[agent_engines,adk]==1.88.0", ]
Menambahkan paket dan batasan tambahan:
requirements = [ "google-cloud-aiplatform[agent_engines,adk]==1.88.0", "cloudpickle==3.0", # new ]
Menunjuk ke versi paket di cabang atau permintaan pull GitHub:
requirements = [ "google-cloud-aiplatform[agent_engines,adk] @ git+https://github.com/googleapis/python-aiplatform.git@BRANCH_NAME", # new "cloudpickle==3.0", ]
Buat daftar persyaratan dalam file (seperti
path/to/requirements.txt
):requirements = "path/to/requirements.txt"
dengan
path/to/requirements.txt
adalah file teks yang mengikuti Format File Persyaratan. Contoh:google-cloud-aiplatform[agent_engines,adk] cloudpickle==3.0
Menentukan paket tambahan
Anda dapat menyertakan file atau direktori lokal yang berisi file sumber Python lokal yang diperlukan. Dibandingkan dengan persyaratan paket, hal ini memungkinkan Anda menggunakan utilitas pribadi yang telah Anda kembangkan yang tidak tersedia di PyPI atau GitHub.
Jika agen tidak memerlukan paket tambahan, Anda dapat menyetel extra_packages
ke None
:
extra_packages = None
Anda juga dapat melakukan hal berikut dengan extra_packages
:
Sertakan satu file (seperti
agents/agent.py
):extra_packages = ["agents/agent.py"]
Sertakan kumpulan file di seluruh direktori (misalnya,
agents/
):extra_packages = ["agents"] # directory that includes agents/agent.py
Tentukan biner wheel Python (misalnya,
path/to/python_package.whl
):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
Menentukan variabel lingkungan
Jika ada variabel lingkungan yang bergantung pada agen Anda, Anda dapat menentukannya
dalam argumen env_vars=
. Jika agen tidak bergantung pada variabel lingkungan apa pun, Anda dapat menyetelnya ke None
:
env_vars = None
Untuk menentukan variabel lingkungan, ada beberapa opsi berbeda yang tersedia:
Kamus
env_vars = {
"VARIABLE_1": "VALUE_1",
"VARIABLE_2": "VALUE_2",
}
# These environment variables will become available in Vertex AI Agent Engine
# through `os.environ`, e.g.
#
# import os
# os.environ["VARIABLE_1"] # will have the value "VALUE_1"
#
# and
#
# os.environ["VARIABLE_2"] # will have the value "VALUE_2"
#
Untuk mereferensikan secret di Secret Manager dan membuatnya tersedia sebagai
variabel lingkungan (misalnya, CLOUD_SQL_CREDENTIALS_SECRET
), ikuti terlebih dahulu
petunjuk untuk Membuat secret untuk CLOUD_SQL_CREDENTIALS_SECRET
di project Anda,
sebelum menentukan variabel lingkungan sebagai:
env_vars = {
# ... (other environment variables and their values)
"CLOUD_SQL_CREDENTIALS_SECRET": {"secret": "SECRET_ID", "version": "SECRET_VERSION_ID"},
}
di mana
SECRET_VERSION_ID
adalah ID versi secret.SECRET_ID
adalah ID secret.
Dalam kode agen, Anda dapat mereferensikan secret seperti ini:
secret = os.environ.get("CLOUD_SQL_CREDENTIALS_SECRET")
if secret:
# Secrets are stored as strings, so use json.loads to parse JSON payloads.
return json.loads(secret)
Daftar
env_vars = ["VARIABLE_1", "VARIABLE_2"]
# This corresponds to the following code snippet:
#
# import os
#
# env_vars = {
# "VARIABLE_1": os.environ["VARIABLE_1"],
# "VARIABLE_2": os.environ["VARIABLE_2"],
# }
Menentukan kontrol resource yang disesuaikan
Anda dapat menentukan kontrol resource runtime untuk agen, seperti jumlah minimum dan maksimum instance aplikasi, batas resource untuk setiap container, dan serentak untuk setiap container.
min_instances
: Jumlah minimum instance aplikasi yang harus tetap berjalan setiap saat, dengan rentang[0, 10]
. Nilai default adalah 1.max_instances
: Jumlah maksimum instance aplikasi yang dapat diluncurkan untuk menangani peningkatan traffic, dengan rentang[1, 1000]
. Nilai defaultnya adalah 100. Jika VPC-SC atau PSC-I diaktifkan, rentang yang dapat diterima adalah[1, 100]
.resource_limits
: Batas resource untuk setiap container. Hanya tombolcpu
danmemory
yang didukung. Nilai defaultnya adalah{"cpu": "4", "memory": "4Gi"}
.Satu-satunya nilai yang didukung untuk
cpu
adalah '1', '2', '4', '6', dan '8'. Untuk informasi selengkapnya, lihat Mengonfigurasi alokasi CPU.Satu-satunya nilai yang didukung untuk
memory
adalah '1Gi', '2Gi', ... '32Gi'.Untuk CPU yang diperlukan pada nilai memori yang berbeda, lihat Mengonfigurasi batas memori.
container_concurrency
: Serentak untuk setiap server agen dan container. Nilai yang direkomendasikan adalah 2 *cpu
+ 1. Nilai defaultnya adalah9
.
remote_agent = agent_engines.create(
local_agent,
# ... other configs
min_instances=1,
max_instances=10,
resource_limits={"cpu": "4", "memory": "8Gi"},
container_concurrency=9,
)
Menentukan opsi build
Anda dapat menentukan opsi build untuk agen, seperti skrip penginstalan yang akan dijalankan
saat membangun image container agen. Hal ini berguna untuk menginstal dependensi sistem (misalnya, gcloud cli
, npx
) atau penyiapan kustom lainnya. Skrip dijalankan dengan izin root.
Untuk menggunakan skrip penginstalan, buat direktori bernama installation_scripts
dan
tempatkan skrip shell Anda di dalam direktori tersebut:
.
├── ...
└── installation_scripts/
└── install.sh
Selanjutnya, tentukan direktori installation_scripts
di
extra_packages
dan jalur skrip di build_options
:
extra_packages = [..., "installation_scripts/install.sh"]
build_options = {"installation_scripts": ["installation_scripts/install.sh"]}
Anda dapat menggunakan salah satu skrip penginstalan umum berikut:
install_npx.sh
#!/bin/bash
# Exit immediately if a command exits with a non-zero status.
set -e
echo "--- Installing System-Wide Node.js v20.x ---"
# 1. Install prerequisites
apt-get update
apt-get install -y ca-certificates curl gnupg
# 2. Add the NodeSource repository GPG key
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
# 3. Add the NodeSource repository for Node.js v20
NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
# 4. Update package lists again and install Node.js
apt-get update
apt-get install nodejs -y
echo "--- System-wide Node.js installation complete ---"
echo "Verifying versions:"
# These commands will now work for ANY user because node and npx
# are installed in /usr/bin/ which is in everyone's default PATH.
node -v
npm -v
npx -v
install_uvx.sh
#!/bin/bash
# Exit immediately if a command exits with a non-zero status.
set -e
echo "Starting setup..."
# Install uv
apt-get update
apt-get install -y curl
curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="/usr/local/bin" sh
# These commands will now work for ANY user because uv and uvx
# are installed in /usr/local/bin/ which is in everyone's default PATH.
uv --version
uvx --version
install_gcloud_cli.sh
#!/bin/bash
# Exit immediately if a command exits with a non-zero status.
set -e
apt-get install -y curl gpg
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
apt-get update -y && apt-get install google-cloud-cli -y
gcloud --version
Tentukan folder Cloud Storage
Artefak penyiapan akan ditimpa jika sesuai dengan
folder yang ada di bucket Cloud Storage. Jika perlu, Anda dapat
menentukan folder Cloud Storage untuk artefak penyiapan. Anda
dapat menyetel gcs_dir_name
ke None
jika tidak keberatan berpotensi menimpa file di folder default:
gcs_dir_name = None
Untuk menghindari penimpaan file (seperti untuk lingkungan yang berbeda seperti pengembangan, staging, dan produksi), Anda dapat menyiapkan folder yang sesuai, dan menentukan folder untuk melakukan penyiapan artefak di dalamnya:
gcs_dir_name = "dev" # or "staging" or "prod"
Jika ingin atau perlu menghindari tabrakan, Anda dapat membuat uuid
acak:
import uuid
gcs_dir_name = str(uuid.uuid4())
Mengonfigurasi metadata resource
Anda dapat menyetel metadata pada resource
ReasoningEngine
:
display_name = "Currency Exchange Rate Agent (Staging)"
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.
"""
Untuk mengetahui kumpulan lengkap parameter, lihat referensi API.
Mengonfigurasi akun layanan kustom
Anda dapat mengonfigurasi akun layanan kustom sebagai identitas agen yang di-deploy, bukan identitas default.
Untuk melakukannya, tentukan email akun layanan kustom Anda sebagai
service_account
saat membuat atau memperbarui instance Agent Engine, misalnya:
# Create a new instance
agent_engines.create(
local_agent=<my-agent>,
service_account="my-custom-service-account@my-project.",
...
)
# Update an existing instance
resource_name = "projects/{project_id}/locations/{location}/reasoningEngines/{reasoning_engine_id}"
agent_engines.update(
resource_name,
service_account="my-new-custom-service-account@my-project.",
...
)
Mengonfigurasi Antarmuka Private Service Connect
Vertex AI Agent Engine mendukung Antarmuka Private Service Connect dan Peering DNS untuk traffic keluar yang bersifat pribadi dan aman.
Mengapa menggunakan Antarmuka Private Service Connect?
Agen Anda di-deploy di jaringan yang aman dan dikelola Google tanpa akses ke jaringan Virtual Private Cloud (VPC) Anda. Antarmuka PSC membuat jembatan pribadi dan aman ke jaringan Anda, sehingga menjadikannya solusi yang direkomendasikan untuk berinteraksi dengan layanan yang dihosting secara pribadi di seluruh lingkungan VPC, lokal, dan multicloud Anda.
Selain menyediakan akses pribadi, koneksi ini juga diperlukan untuk mengaktifkan akses internet saat menggunakan Kontrol Layanan VPC. Lihat Mengakses Internet Publik.
Cara Kerjanya
Saat Anda mengonfigurasi Antarmuka PSC, Agent Engine akan menyediakan antarmuka di project tenant milik Google tempat agen Anda berjalan. Antarmuka ini terhubung langsung ke Network Attachment di project Anda. Semua traffic antara agen dan VPC Anda berjalan dengan aman dalam jaringan Google, dan tidak pernah melintasi internet publik.
Mengakses Internet Publik
Kemampuan agen untuk mengakses internet publik bergantung pada konfigurasi keamanan project Anda, khususnya apakah Anda menggunakan Kontrol Layanan VPC.
Perilaku Default (Tanpa Kontrol Layanan VPC)
- Jika Anda mengonfigurasi agen hanya dengan Antarmuka PSC, agen tersebut akan mempertahankan akses internet default-nya. Traffic keluar ini keluar langsung dari lingkungan yang aman dan dikelola Google tempat agen Anda berjalan.
Dengan Kontrol Layanan VPC
- Jika project Anda adalah bagian dari perimeter Kontrol Layanan VPC, akses internet default agen diblokir oleh perimeter untuk mencegah pemindahan data yang tidak sah. Untuk mengizinkan agen mengakses internet publik dalam skenario ini, Anda harus mengonfigurasi jalur keluar yang aman secara eksplisit yang merutekan traffic melalui VPC Anda. Cara yang direkomendasikan untuk mencapai hal ini adalah dengan menyiapkan server proxy di dalam perimeter VPC Anda dan membuat gateway Cloud NAT untuk mengizinkan VM proxy mengakses internet.
Sebelum memulai
Untuk mengaktifkan konektivitas pribadi bagi agen yang di-deploy menggunakan antarmuka Private Service Connect, Anda perlu menyiapkan jaringan VPC, subnetwork, dan lampiran jaringan di project pengguna Anda.
Persyaratan Rentang IP Subnetwork
Agent Engine merekomendasikan subnetwork /28.
Subnet lampiran jaringan mendukung alamat RFC 1918 dan non-RFC 1918, kecuali subnet 100.64.0.0/10
dan 240.0.0.0/4
.
Agent Engine hanya dapat terhubung ke rentang alamat IP RFC 1918 yang dapat dirutekan
dari jaringan yang ditentukan. Agent Engine tidak dapat menjangkau alamat IP publik yang digunakan secara pribadi atau rentang non-RFC 1918 berikut:
100.64.0.0/10
192.0.0.0/24
192.0.2.0/24
198.18.0.0/15
198.51.100.0/24
203.0.113.0/24
240.0.0.0/4
Lihat Menyiapkan antarmuka Private Service Connect untuk mengetahui detail selengkapnya tentang penyiapan.
Menggunakan dengan VPC Bersama
Anda dapat menggunakan Antarmuka Private Service Connect dengan arsitektur VPC Bersama, yang memungkinkan Anda membuat Agent Engine di Project Layanan sambil menggunakan jaringan dari Project Host pusat.
Saat menyiapkan PSC-I di lingkungan VPC Bersama, buat subnet di Project Host, lalu buat lampiran jaringan di Project Layanan.
Agar Project Layanan dapat menggunakan jaringan Project Host, Anda harus memberikan izin IAM yang sesuai. Agen Layanan Vertex AI dari Project Layanan Anda memerlukan peran Compute Network User (roles/compute.networkUser
) di Project Host.
Men-deploy agen dengan Antarmuka Private Service Connect
Setelah lampiran jaringan disiapkan, Anda dapat menentukannya saat membuat instance AgentEngine
.
remote_agent = agent_engines.create(
agent_engine=local_agent,
psc_interface_config={
"network_attachment": "NETWORK_ATTACHMENT",
},
)
di mana
NETWORK_ATTACHMENT
adalah nama atau jalur lengkap lampiran jaringan yang Anda buat.
Menggunakan Lampiran Jaringan dengan Beberapa Agen
Anda memiliki fleksibilitas untuk memutuskan cara agen Anda membagikan resource jaringan. Anda dapat mengonfigurasi beberapa agen untuk menggunakan lampiran jaringan bersama tunggal atau lampiran jaringan khusus yang unik.
Untuk menggunakan lampiran jaringan bersama, berikan lampiran jaringan yang sama di
psc_interface_config
untuk setiap agen yang Anda buat.
Peering DNS
Meskipun Antarmuka Private Service Connect menyediakan jalur jaringan yang aman, Peering DNS menyediakan mekanisme penemuan layanan. Dengan PSC-I, Anda tetap perlu mengetahui alamat IP spesifik layanan di jaringan VPC. Meskipun Anda dapat terhubung ke layanan menggunakan alamat IP internalnya, hal ini tidak direkomendasikan untuk sistem produksi yang IP-nya dapat berubah. Dengan Peering DNS, agen yang di-deploy dapat terhubung ke layanan di jaringan VPC Anda menggunakan nama DNS yang stabil dan mudah dibaca, bukan alamat IP. Peering DNS memungkinkan agen yang di-deploy untuk me-resolve nama DNS menggunakan data dari zona pribadi Cloud DNS di VPC Anda. Lihat Menyiapkan peering DNS pribadi.
Setelah Peering DNS pribadi disiapkan, Anda dapat menentukannya saat membuat instance AgentEngine
.
remote_agent = agent_engines.create(
agent_engine=local_agent,
psc_interface_config={
"network_attachment": "NETWORK_ATTACHMENT",
"dns_peering_configs": [
{
"domain": "DOMAIN_SUFFIX",
"target_project": "TARGET_PROJECT",
"target_network": "TARGET_NETWORK",
}
],
},
)
di mana
NETWORK_ATTACHMENT
adalah nama atau jalur lengkap lampiran jaringan yang Anda buat.DOMAIN_SUFFIX
adalah nama DNS zona Cloud DNS pribadi yang Anda buat saat menyiapkan Peering DNS pribadi.TARGET_PROJECT
adalah project yang menghosting jaringan VPC.TARGET_NETWORK
adalah nama jaringan VPC.
Mengonfigurasi kunci enkripsi yang dikelola pelanggan
Anda dapat menggunakan kunci kustom untuk mengenkripsi data agen Anda saat tidak digunakan. Lihat Kunci enkripsi yang dikelola pelanggan (CMEK) Agent Engine untuk mengetahui detail selengkapnya.
Untuk mengonfigurasi kunci kustom (CMEK) untuk agen, Anda harus memberikan nama resource kunci ke parameter encryption_spec
saat membuat instance Agent Engine.
# The fully qualified key name
kms_key_name = "projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"
remote_agent = agent_engines.create(
local_agent,
# ... other parameters
encryption_spec={"kms_key_name": kms_key_name},
)
Buat instance AgentEngine
Untuk men-deploy agen di Vertex AI, gunakan agent_engines.create
untuk meneruskan objek local_agent
bersama dengan konfigurasi opsional:
remote_agent = agent_engines.create(
local_agent, # Optional.
requirements=requirements, # Optional.
extra_packages=extra_packages, # Optional.
gcs_dir_name=gcs_dir_name, # Optional.
display_name=display_name, # Optional.
description=description, # Optional.
env_vars=env_vars, # Optional.
build_options=build_options, # 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.
)
Deployment memerlukan waktu beberapa menit, dan selama itu langkah-langkah berikut terjadi di latar belakang:
Bundle artefak berikut dibuat secara lokal:
*.pkl
file pickle yang sesuai dengan local_agent.requirements.txt
file teks yang berisi persyaratan paket.dependencies.tar.gz
file tar yang berisi paket tambahan.
Bundle diupload ke Cloud Storage (di folder yang sesuai) untuk penyiapan artefak.
URI Cloud Storage untuk artefak masing-masing ditentukan dalam PackageSpec.
Layanan Vertex AI Agent Engine menerima permintaan, membangun container, dan memulai server HTTP di backend.
Latensi deployment bergantung pada total waktu yang diperlukan untuk menginstal paket yang diperlukan. Setelah di-deploy, remote_agent
sesuai dengan instance
local_agent
yang berjalan di Vertex AI dan dapat dikueri atau
dihapus. Agent ini terpisah dari instance lokal agent.
Memberikan izin agen yang di-deploy
Jika agen yang di-deploy perlu diberi izin tambahan, ikuti petunjuk di Menyiapkan identitas dan izin untuk agen Anda.
Jika Anda menentukan secret sebagai variabel lingkungan, Anda harus memberikan izin berikut:
- Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor
)
Mendapatkan ID resource agen
Setiap agen yang di-deploy memiliki ID unik. Anda dapat menjalankan perintah berikut
untuk mendapatkan ID resource_name
untuk agen yang di-deploy:
remote_agent.resource_name
Responsnya akan terlihat seperti string berikut:
"projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/RESOURCE_ID"
di mana
PROJECT_ID
adalah Google Cloud project ID tempat agen yang di-deploy berjalan.LOCATION
adalah region tempat agen yang di-deploy berjalan.RESOURCE_ID
adalah ID agen yang di-deploy sebagaireasoningEngine
resource.
Langkah berikutnya
- Menggunakan agen.
- Mengelola agen yang di-deploy.
- Memecahkan masalah deployment agen.
- Dapatkan dukungan.