Aplikasi RAG Agentik AlloyDB dengan MCP Toolbox

1. Pengantar

e71e051395674233.gif

Dalam codelab ini, Anda akan mempelajari cara membuat cluster AlloyDB, men-deploy toolbox MCP, dan mengonfigurasinya untuk menggunakan AlloyDB sebagai sumber data. Kemudian, Anda akan membangun aplikasi RAG interaktif contoh yang menggunakan toolbox yang di-deploy untuk mendasari permintaannya.

f753f71c7116358a.png

Anda bisa mendapatkan informasi selengkapnya tentang MCP Toolbox di halaman dokumentasi dan aplikasi contoh Cymbal Air di sini.

Lab ini merupakan bagian dari koleksi lab yang dikhususkan untuk fitur AI AlloyDB. Anda dapat membaca selengkapnya di halaman AlloyDB AI dalam dokumentasi dan melihat lab lainnya.

Prasyarat

  • Pemahaman dasar tentang Konsol Google Cloud
  • Keterampilan dasar dalam antarmuka command line dan Google Cloud shell

Yang akan Anda pelajari

  • Cara men-deploy Cluster AlloyDB dengan integrasi Vertex AI
  • Cara terhubung ke AlloyDB
  • Cara mengonfigurasi dan men-deploy Layanan MCP Toolbox
  • Cara men-deploy aplikasi contoh menggunakan layanan yang di-deploy

Yang akan Anda butuhkan

  • Akun Google Cloud dan Project Google Cloud
  • Browser web seperti Chrome

2. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:

Aktifkan Cloud Shell

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

Screenshot terminal Google Cloud Shell yang menunjukkan bahwa lingkungan telah terhubung

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.

3. Sebelum memulai

Aktifkan API

Output:

Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan:

Biasanya project ID ditampilkan dalam tanda kurung di command prompt di Cloud Shell seperti yang ditunjukkan dalam gambar:

fa6ee779963405d5.png

gcloud config set project [YOUR-PROJECT-ID]

Kemudian, tetapkan variabel lingkungan PROJECT_ID ke project ID Google Cloud Anda:

PROJECT_ID=$(gcloud config get-value project)

Aktifkan semua layanan yang diperlukan:

gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       vpcaccess.googleapis.com \
                       aiplatform.googleapis.com \
                       cloudbuild.googleapis.com \
                       artifactregistry.googleapis.com \
                       run.googleapis.com \
                       iam.googleapis.com \
                       secretmanager.googleapis.com

Output yang diharapkan

student@cloudshell:~ (gleb-test-short-004)$ gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       vpcaccess.googleapis.com \
                       aiplatform.googleapis.com \
                       cloudbuild.googleapis.com \
                       artifactregistry.googleapis.com \
                       run.googleapis.com \
                       iam.googleapis.com \
                       secretmanager.googleapis.com
Operation "operations/acf.p2-404051529011-664c71ad-cb2b-4ab4-86c1-1f3157d70ba1" finished successfully.

4. Deploy Cluster AlloyDB

Buat cluster dan instance utama AlloyDB. Prosedur berikut menjelaskan cara membuat cluster dan instance AlloyDB menggunakan Google Cloud SDK. Jika lebih memilih pendekatan konsol, Anda dapat mengikuti dokumentasi di sini.

Sebelum membuat cluster AlloyDB, kita memerlukan rentang IP pribadi yang tersedia di VPC untuk digunakan oleh instance AlloyDB mendatang. Jika belum ada, kita perlu membuatnya, menetapkannya untuk digunakan oleh layanan Google internal, dan setelah itu kita dapat membuat cluster dan instance.

Buat rentang IP pribadi

Kita perlu menyetel konfigurasi Akses Layanan Pribadi di VPC untuk AlloyDB. Asumsinya di sini adalah kita memiliki jaringan VPC "default" dalam project dan jaringan tersebut akan digunakan untuk semua tindakan.

Buat rentang IP pribadi:

gcloud compute addresses create psa-range \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=24 \
    --description="VPC private service access" \
    --network=default

Buat koneksi pribadi menggunakan rentang IP yang dialokasikan:

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range \
    --network=default

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-402417)$ gcloud compute addresses create psa-range \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=24 \
    --description="VPC private service access" \
    --network=default
Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/global/addresses/psa-range].

student@cloudshell:~ (test-project-402417)$ gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range \
    --network=default
Operation "operations/pssn.p24-4470404856-595e209f-19b7-4669-8a71-cbd45de8ba66" finished successfully.

student@cloudshell:~ (test-project-402417)$

Buat Cluster AlloyDB

Di bagian ini, kita akan membuat cluster AlloyDB di region us-central1.

Tentukan sandi untuk pengguna postgres. Anda dapat menentukan sandi Anda sendiri atau menggunakan fungsi acak untuk membuatnya

export PGPASSWORD=`openssl rand -hex 12`

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-402417)$ export PGPASSWORD=`openssl rand -hex 12`

Catat sandi PostgreSQL untuk penggunaan berikutnya.

echo $PGPASSWORD

Anda akan memerlukan sandi tersebut pada masa mendatang untuk terhubung ke instance sebagai pengguna postgres. Sebaiknya tulis atau salin di suatu tempat agar dapat digunakan nanti.

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-402417)$ echo $PGPASSWORD
bbefbfde7601985b0dee5723

Membuat Cluster Uji Coba Gratis

Jika belum pernah menggunakan AlloyDB, Anda dapat membuat cluster uji coba gratis:

Tentukan region dan nama cluster AlloyDB. Kita akan menggunakan region us-central1 dan alloydb-aip-01 sebagai nama cluster:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01

Jalankan perintah untuk membuat cluster:

gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION \
    --subscription-type=TRIAL

Output konsol yang diharapkan:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION \
    --subscription-type=TRIAL
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.                                                                                                                                                                                                                                                           

Buat instance utama AlloyDB untuk cluster di sesi cloud shell yang sama. Jika koneksi terputus, Anda harus menentukan variabel lingkungan nama cluster dan region lagi.

gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=8 \
    --region=$REGION \
    --cluster=$ADBCLUSTER

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=8 \
    --region=$REGION \
    --availability-type ZONAL \
    --cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.                                                                                                                                                                                                                                                     

Buat Cluster Standar AlloyDB

Jika ini bukan cluster AlloyDB pertama Anda dalam project, lanjutkan pembuatan cluster standar.

Tentukan region dan nama cluster AlloyDB. Kita akan menggunakan region us-central1 dan alloydb-aip-01 sebagai nama cluster:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01

Jalankan perintah untuk membuat cluster:

gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION

Output konsol yang diharapkan:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION 
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.                                                                                                                                                                                                                                                           

Buat instance utama AlloyDB untuk cluster di sesi cloud shell yang sama. Jika koneksi terputus, Anda harus menentukan variabel lingkungan nama cluster dan region lagi.

gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --region=$REGION \
    --cluster=$ADBCLUSTER

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --region=$REGION \
    --availability-type ZONAL \
    --cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.                                                                                                                                                                                                                                                     

Memberikan Izin yang Diperlukan ke AlloyDB

Tambahkan izin Vertex AI ke agen layanan AlloyDB.

Buka tab Cloud Shell lain menggunakan tanda "+" di bagian atas.

4ca978f5142bb6ce.png

Di tab Cloud Shell baru, jalankan:

PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-11039]
student@cloudshell:~ (test-project-001-402417)$ gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"
Updated IAM policy for project [test-project-001-402417].
bindings:
- members:
  - serviceAccount:service-4470404856@gcp-sa-alloydb.iam.gserviceaccount.com
  role: roles/aiplatform.user
- members:
...
etag: BwYIEbe_Z3U=
version: 1
 

Tutup tab dengan menjalankan perintah "exit" di tab:

exit

5. Siapkan Virtual Machine GCE

Kita akan menggunakan VM Google Compute Engine (GCE) sebagai platform untuk berinteraksi dengan database dan men-deploy berbagai bagian aplikasi contoh. Menggunakan VM memberi kita lebih banyak fleksibilitas dalam komponen yang diinstal dan akses langsung ke IP AlloyDB pribadi untuk langkah-langkah penyiapan data.

Buat Akun Layanan

Karena kita akan menggunakan VM untuk men-deploy MCP Toolbox sebagai layanan dan men-deploy atau menghosting aplikasi contoh, langkah pertama adalah membuat Akun Layanan Google (GSA). GSA akan digunakan oleh VM GCE, dan kita perlu memberinya izin akses yang diperlukan agar dapat berfungsi dengan layanan lain.

Di Cloud Shell, jalankan:

PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create compute-aip --project $PROJECT_ID

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/cloudbuild.builds.editor"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/artifactregistry.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/storage.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/run.admin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/iam.serviceAccountUser"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/alloydb.viewer"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/alloydb.client"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/serviceusage.serviceUsageConsumer"

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com \
    --role roles/secretmanager.admin

Deploy VM GCE

Buat VM GCE di region dan VPC yang sama dengan cluster AlloyDB.

Di Cloud Shell, jalankan:

ZONE=us-central1-a
PROJECT_ID=$(gcloud config get-value project)
gcloud compute instances create instance-1 \
    --zone=$ZONE \
    --create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-12 AND family!=debian-12-arm64" --format="value(name)") \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-402417)$ ZONE=us-central1-a
PROJECT_ID=$(gcloud config get-value project)
gcloud compute instances create instance-1 \
    --zone=$ZONE \
    --create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-12 AND family!=debian-12-arm64" --format="value(name)") \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com
Your active configuration is: [cloudshell-10282]
Created [https://www.googleapis.com/compute/v1/projects/gleb-test-short-002-470613/zones/us-central1-a/instances/instance-1].
NAME: instance-1
ZONE: us-central1-a
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE: 
INTERNAL_IP: 10.128.0.2
EXTERNAL_IP: 34.28.55.32
STATUS: RUNNING

Instal Klien Postgres

Instal software klien PostgreSQL pada VM yang di-deploy

Hubungkan ke VM:

gcloud compute ssh instance-1 --zone=us-central1-a

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a
Updating project ssh metadata...working..Updated [https://www.googleapis.com/compute/v1/projects/test-project-402417].                                                                                                                                                         
Updating project ssh metadata...done.                                                                                                                                                                                                                                              
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.5110295539541121102' (ECDSA) to the list of known hosts.
Linux instance-1 5.10.0-26-cloud-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
student@instance-1:~$ 

Instal software yang menjalankan perintah dalam VM:

sudo apt-get update
sudo apt-get install --yes postgresql-client

Output konsol yang diharapkan:

student@instance-1:~$ sudo apt-get update
sudo apt-get install --yes postgresql-client
Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B]
Get:4 file:/etc/apt/mirrors/debian-security.list Mirrorlist [39 B]
Hit:7 https://packages.cloud.google.com/apt google-compute-engine-bookworm-stable InRelease
Get:8 https://packages.cloud.google.com/apt cloud-sdk-bookworm InRelease [1652 B]
Get:2 https://deb.debian.org/debian bookworm InRelease [151 kB]
Get:3 https://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
...redacted...
update-alternatives: using /usr/share/postgresql/15/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode
Setting up postgresql-client (15+248) ...
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for libc-bin (2.36-9+deb12u7) ...

Menghubungkan ke Instance AlloyDB

Hubungkan ke instance utama dari VM menggunakan psql.

Lanjutkan dengan sesi SSH yang dibuka ke VM Anda. Jika koneksi Anda telah terputus, hubungkan kembali menggunakan perintah yang sama seperti di atas.

Gunakan $PGASSWORD yang dicatat sebelumnya dan nama cluster untuk terhubung ke AlloyDB dari VM GCE:

export PGPASSWORD=<Noted password>
PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"

Output konsol yang diharapkan:

student@instance-1:~$ PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"
psql (15.13 (Debian 15.13-0+deb12u1), server 16.8)
WARNING: psql major version 15, server major version 16.
         Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

postgres=>

Keluar dari sesi psql dengan tetap mempertahankan koneksi SSH:

exit

Output konsol yang diharapkan:

postgres=> exit
student@instance-1:~$ 

6. Melakukan inisialisasi database

Kita akan menggunakan VM klien sebagai platform untuk mengisi database dengan data dan menghosting aplikasi. Langkah pertama adalah membuat database dan mengisinya dengan data.

Buat Database

Buat database dengan nama "assistantdemo".

Dalam sesi VM GCE, jalankan:

psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo"  

Output konsol yang diharapkan:

student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo"
CREATE DATABASE
student@instance-1:~$  

Siapkan Lingkungan Python

Untuk melanjutkan, kita akan menggunakan skrip Python yang sudah disiapkan dari repositori GitHub. Namun, sebelum itu, kita perlu menginstal software yang diperlukan.

Di VM GCE, jalankan:

sudo apt install -y python3.11-venv git
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip

Output konsol yang diharapkan:

student@instance-1:~$ sudo apt install -y python3.11-venv git
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  git-man liberror-perl patch python3-distutils python3-lib2to3 python3-pip-whl python3-setuptools-whl
Suggested packages:
  git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn ed diffutils-doc
The following NEW packages will be installed:
  git git-man liberror-perl patch python3-distutils python3-lib2to3 python3-pip-whl python3-setuptools-whl python3.11-venv
0 upgraded, 9 newly installed, 0 to remove and 2 not upgraded.
Need to get 12.4 MB of archives.
After this operation, 52.2 MB of additional disk space will be used.
Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B]
...redacted...
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 23.0.1
    Uninstalling pip-23.0.1:
      Successfully uninstalled pip-23.0.1
Successfully installed pip-24.0
(.venv) student@instance-1:~$

Verifikasi versi Python.

Di VM GCE, jalankan:

python -V

Output konsol yang diharapkan:

(.venv) student@instance-1:~$ python -V
Python 3.11.2
(.venv) student@instance-1:~$ 

Menginstal MCP Toolbox Secara Lokal

MCP Toolbox for Databases (selanjutnya dalam teks disebut MCP Toolbox atau Toolbox) adalah server MCP open source yang berfungsi dengan berbagai sumber data. Alat ini membantu Anda mengembangkan alat lebih cepat dengan menyediakan tingkat abstraksi untuk berbagai sumber data dan menambahkan fitur seperti autentikasi dan penggabungan koneksi. Anda dapat membaca semua fitur di halaman resmi.

Kita akan menggunakan toolbox MCP untuk memulai set data contoh dan selanjutnya digunakan sebagai server MCP untuk menangani permintaan sumber data dari aplikasi kita selama alur Retrieval Augmented Generation (RAG).

Mari kita instal toolbox MCP secara lokal untuk mengisi database assistantdemo.

Di VM GCE, jalankan:

export VERSION=0.16.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox

Output konsol yang diharapkan:

(.venv) student@instance-1:~$ export VERSION=0.16.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  133M  100  133M    0     0   158M      0 --:--:-- --:--:-- --:--:--  158M

Menjalankan Toolbox untuk Inisialisasi Data

Di VM GCE, jalankan:

Ekspor variabel lingkungan untuk pengisian database:

export ALLOYDB_POSTGRES_PROJECT=$(gcloud config get-value project)
export ALLOYDB_POSTGRES_REGION="us-central1"
export ALLOYDB_POSTGRES_CLUSTER="alloydb-aip-01"
export ALLOYDB_POSTGRES_INSTANCE="alloydb-aip-01-pr"
export ALLOYDB_POSTGRES_DATABASE="assistantdemo"
export ALLOYDB_POSTGRES_USER="postgres"
export ALLOYDB_POSTGRES_PASSWORD=$PGPASSWORD
export ALLOYDB_POSTGRES_IP_TYPE="private"

Mulai toolbox untuk inisiasi database. Proses ini akan memulai proses secara lokal yang akan membantu Anda terhubung dengan lancar ke database tujuan di AlloyDB untuk mengisinya dengan data sampel.

./toolbox --prebuilt alloydb-postgres

Output konsol yang diharapkan. Anda akan melihat di baris terakhir output - "Server ready to serve!":

student@instance-1:~$ cexport ALLOYDB_POSTGRES_PROJECT=$PROJECT_ID
export ALLOYDB_POSTGRES_REGION="us-central1"
export ALLOYDB_POSTGRES_CLUSTER="alloydb-aip-01"
export ALLOYDB_POSTGRES_INSTANCE="alloydb-aip-01-pr"
export ALLOYDB_POSTGRES_DATABASE="assistantdemo"
export ALLOYDB_POSTGRES_USER="postgres"
export ALLOYDB_POSTGRES_PASSWORD=$PGPASSWORD
export ALLOYDB_POSTGRES_IP_TYPE="private"
student@instance-1:~$ ./toolbox --prebuilt alloydb-postgres
2025-09-02T18:30:58.957655886Z INFO "Using prebuilt tool configuration for alloydb-postgres" 
2025-09-02T18:30:59.507306664Z INFO "Initialized 1 sources." 
2025-09-02T18:30:59.50748379Z INFO "Initialized 0 authServices." 
2025-09-02T18:30:59.507618807Z INFO "Initialized 2 tools." 
2025-09-02T18:30:59.507726704Z INFO "Initialized 2 toolsets." 
2025-09-02T18:30:59.508258894Z INFO "Server ready to serve!" 

Jangan keluar atau menutup tab Cloud Shell ini hingga pengisian data selesai.

Isi Database

Buka tab Cloud Shell lain menggunakan tanda "+" di bagian atas.

4ca978f5142bb6ce.png

Kemudian, hubungkan ke VM instance-1:

gcloud compute ssh instance-1 --zone=us-central1-a

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a
Linux instance-1 6.1.0-37-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Sep  2 21:44:07 2025 from 35.229.111.9
student@instance-1:~$ 

Buat clone repositori GitHub dengan kode untuk layanan pengambilan dan aplikasi contoh.

Di VM GCE, jalankan:

git clone  https://github.com/GoogleCloudPlatform/cymbal-air-toolbox-demo.git

Output konsol yang diharapkan:

student@instance-1:~$ git clone  https://github.com/GoogleCloudPlatform/cymbal-air-toolbox-demo.git
Cloning into 'cymbal-air-toolbox-demo'...
remote: Enumerating objects: 3481, done.
remote: Counting objects: 100% (47/47), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 3481 (delta 16), reused 7 (delta 5), pack-reused 3434 (from 3)
Receiving objects: 100% (3481/3481), 57.96 MiB | 6.04 MiB/s, done.
Resolving deltas: 100% (2549/2549), done.
student@instance-1:~

Perhatikan jika ada error.

Siapkan lingkungan Python dan instal paket persyaratan:

source .venv/bin/activate
cd cymbal-air-toolbox-demo
pip install -r requirements.txt

Tetapkan jalur Python ke folder root repositori dan jalankan skrip untuk mengisi database dengan set data contoh. Perintah pertama menambahkan jalur ke modul Python kita ke lingkungan kita, dan perintah kedua mengisi database kita dengan data.

export PYTHONPATH=$HOME/cymbal-air-toolbox-demo
python data/run_database_init.py

Output konsol yang diharapkan(disamarkan). Anda akan melihat "database init done" di bagian akhir:

student@instance-1:~$ source .venv/bin/activate
(.venv) student@instance-1:~$ 
(.venv) student@instance-1:~$ cd cymbal-air-toolbox-demo/
(.venv) student@instance-1:~/cymbal-air-toolbox-demo$ pip install -r requirements.txt
python run_database_init.py
Collecting fastapi==0.115.0 (from -r requirements.txt (line 1))
  Downloading fastapi-0.115.0-py3-none-any.whl.metadata (27 kB)
Collecting google-auth==2.40.3 (from -r requirements.txt (line 2))
  Downloading google_auth-2.40.3-py2.py3-none-any.whl.metadata (6.2 kB)
Collecting google-cloud-aiplatform==1.97.0 (from google-cloud-aiplatform[evaluation]==1.97.0->-r requirements.txt (line 3))
  Downloading google_cloud_aiplatform-1.97.0-py2.py3-none-any.whl.metadata (36 kB)
Collecting itsdangerous==2.2.0 (from -r requirements.txt (line 4))
  Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)
Collecting jinja2==3.1.5 (from -r requirements.txt (line 5))
  Downloading jinja2-3.1.5-py3-none-any.whl.metadata (2.6 kB)
Collecting langchain-community==0.3.25 (from -r requirements.txt (line 6))
  Downloading langchain_community-0.3.25-py3-none-any.whl.metadata (2.9 kB)
Collecting langchain==0.3.25 (from -r requirements.txt (line 7))
...

(.venv) student@instance-1:~/cymbal-air-toolbox-demo$ 
(.venv) student@instance-1:~/cymbal-air-toolbox-demo$ export PYTHONPATH=$HOME/cymbal-air-toolbox-demo
python data/run_database_init.py
Airports table initialized
Amenities table initialized
Flights table initialized
Tickets table initialized
Policies table initialized
database init done.
(.venv) student@instance-1:~/cymbal-air-toolbox-demo$ 

Anda dapat menutup tab ini sekarang.

Di sesi VM, jalankan:

exit

Di sesi Cloud Shell, tekan ctrl+d atau jalankan :

exit

Di tab pertama dengan MCP Toolbox yang sedang berjalan, tekan ctrl+c untuk keluar dari sesi MCP Toolbox yang sedang berjalan.

Database telah diisi dengan data contoh untuk aplikasi.

Anda dapat memverifikasinya dengan menghubungkan ke database dan memeriksa jumlah baris dalam tabel bandara. Anda dapat menggunakan utilitas psql seperti yang telah kita gunakan sebelumnya atau AlloyDB Studio . Berikut cara memeriksanya menggunakan psql

Dalam sesi SSH ke VM instance-1, jalankan:

export PGPASSWORD=<Noted AlloyDB password>
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "SELECT COUNT(*) FROM airports"  

Output konsol yang diharapkan:

student@instance-1:~$ REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "SELECT COUNT(*) FROM airports"
 count 
-------
  7698
(1 row)

Database sudah siap dan kita dapat melanjutkan ke deployment MCP Toolbox.

7. Men-deploy MCP Toolbox ke Cloud Run

Sekarang kita dapat men-deploy MCP Toolbox ke Cloud Run. Ada berbagai cara untuk men-deploy toolbox MCP. Cara paling sederhana adalah menjalankannya dari command line, tetapi jika kita ingin menjadikannya sebagai layanan yang skalabel dan andal, Cloud Run adalah solusi yang lebih baik.

Siapkan Client ID

Untuk menggunakan fungsi pemesanan aplikasi, kita perlu menyiapkan Client ID OAuth 2.0 menggunakan Cloud Console. Tanpa itu, kita tidak dapat login ke aplikasi dengan kredensial Google untuk membuat pemesanan dan mencatat pemesanan ke database.

Di Konsol Cloud, buka APIs and Services, lalu klik "OAuth consent screen". Berikut link ke halaman tersebut. Tindakan ini akan membuka halaman Ringkasan Oauth tempat kita mengklik Mulai.

2f13a26289362f20.png

Di halaman berikutnya, kami memberikan nama aplikasi, email dukungan pengguna, lalu klik Berikutnya.

dd3721c042db26ae.png

Di layar berikutnya, kita memilih Internal untuk aplikasi kita, lalu mengklik Next lagi.

71b6d11179ed872b.png

Kemudian, kami memberikan email kontak dan mengklik Berikutnya

8ff29dfd959b41f0.png

Kemudian, kita menyetujui kebijakan layanan Google API dan menekan tombol Buat.

ca87d1200662b7f7.png

Tindakan ini akan mengarahkan kita ke halaman tempat kita dapat membuat klien OAuth.

56e5040805632a53.png

Di layar, kita memilih "Web Application" dari menu dropdown, memasukkan "Cymbal Air" sebagai aplikasi, dan menekan tombol Add URI.

4e28c6700426735a.png

URI mewakili sumber tepercaya untuk aplikasi dan bergantung pada tempat Anda mencoba menjangkau aplikasi. Kita memasukkan "http://localhost:8081" sebagai URI yang diizinkan dan "http://localhost:8081/login/google" sebagai URI pengalihan. Nilai tersebut akan berfungsi jika Anda memasukkan "http://localhost:8081" sebagai URI untuk koneksi di browser Anda. Misalnya, saat Anda terhubung melalui tunnel SSH dari komputer Anda. Saya akan menunjukkan cara melakukannya nanti.

9dc25f2d318097e2.png

Setelah menekan tombol "Create", Anda akan mendapatkan jendela pop-up dengan kredensial klien Anda. Kredensial akan dicatat dalam sistem. Anda selalu dapat menyalin ID klien untuk digunakan saat memulai aplikasi.

f5a7b6ad0858d95c.png

Nanti Anda akan melihat tempat Anda memberikan ID klien tersebut.

Buat Akun Layanan

Kita memerlukan akun layanan khusus untuk layanan Cloud Run dengan semua hak istimewa yang diperlukan. Untuk layanan kita, kita memerlukan akses ke AlloyDB dan Cloud Secret Manager. Untuk nama akun layanan, kita akan menggunakan toolbox-identity.

Buka tab Cloud Shell lain menggunakan tanda "+" di bagian atas.

4ca978f5142bb6ce.png

Di tab Cloud Shell baru, jalankan:

export PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create toolbox-identity

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/alloydb.client"
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/serviceusage.serviceUsageConsumer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/secretmanager.secretAccessor"

Perhatikan jika ada error. Perintah ini seharusnya membuat akun layanan untuk layanan Cloud Run dan memberikan hak istimewa untuk bekerja dengan Secret Manager, database, dan Vertex AI.

Tutup tab dengan menekan ctrl+d atau menjalankan perintah "exit" di tab:

exit

Menyiapkan Konfigurasi Toolbox MCP

Siapkan file konfigurasi untuk MCP Toolbox. Anda dapat membaca semua opsi konfigurasi dalam dokumentasi, tetapi di sini kita akan menggunakan file tools.yaml contoh dan mengganti beberapa nilai seperti nama cluster dan instance, sandi AlloyDB, dan project ID dengan nilai sebenarnya.

Mengekspor Sandi AlloyDB:

export PGPASSWORD=<noted AlloyDB password>

Ekspor ID klien yang kita siapkan pada langkah sebelumnya:

export CLIENT_ID=<noted OAuth 2.0 client ID for our application>

Siapkan file konfigurasi.

PROJECT_ID=$(gcloud config get-value project)
ADBCLUSTER=alloydb-aip-01
sed -e "s/project: retrieval-app-testing/project: $(gcloud config get-value project)/g" \
-e "s/cluster: my-alloydb-cluster/cluster: $ADBCLUSTER/g" \
-e "s/instance: my-alloydb-instance/instance: $ADBCLUSTER-pr/g" \
-e "s/password: postgres/password: $PGPASSWORD\\n    ipType: private/g" \
-e "s/^ *clientId: .*/    clientId: $CLIENT_ID/g" \
cymbal-air-toolbox-demo/tools.yaml >~/tools.yaml

Jika Anda melihat bagian file yang menentukan sumber data target, Anda akan melihat bahwa kami juga menambahkan baris untuk menggunakan IP pribadi untuk koneksi.

sources:
  my-pg-instance:
    kind: alloydb-postgres
    project: gleb-test-short-003-471020
    region: us-central1
    cluster: alloydb-aip-01
    instance: alloydb-aip-01-pr
    database: assistantdemo
    user: postgres
    password: L23F...
    ipType: private
authServices:
  my_google_service:
    kind: google
    clientId: 96828*******-***********.apps.googleusercontent.com

Buat secret menggunakan konfigurasi tools.yaml sebagai sumber.

Di konsol SSH VM, jalankan:

gcloud secrets create tools --data-file=tools.yaml

Output konsol yang diharapkan:

student@instance-1:~$ gcloud secrets create tools --data-file=tools.yaml
Created version [1] of the secret [tools].

Men-deploy MCP Toolbox sebagai Layanan Cloud Run

Sekarang semuanya sudah siap untuk men-deploy MCP Toolbox sebagai layanan ke Cloud Run. Untuk pengujian lokal, Anda dapat menjalankan "./toolbox –tools-file=./tools.yaml", tetapi jika ingin aplikasi berjalan di cloud, deployment di Cloud Run akan lebih masuk akal.

Dalam sesi SSH VM, jalankan:

export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
gcloud run deploy toolbox \
    --image $IMAGE \
    --service-account toolbox-identity \
    --region us-central1 \
    --set-secrets "/app/tools.yaml=tools:latest" \
    --args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
    --network default \
    --subnet default \
    --no-allow-unauthenticated

Output konsol yang diharapkan:

student@instance-1:~$ export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
gcloud run deploy toolbox \
    --image $IMAGE \
    --service-account toolbox-identity \
    --region us-central1 \
    --set-secrets "/app/tools.yaml=tools:latest" \
    --args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
    --network default \
    --subnet default \
    --no-allow-unauthenticated
Deploying container to Cloud Run service [toolbox] in project [gleb-test-short-002-470613] region [us-central1]
✓ Deploying new service... Done.                                                                                                                                                                                                
  ✓ Creating Revision...                                                                                                                                                                                                        
  ✓ Routing traffic...                                                                                                                                                                                                          
Done.                                                                                                                                                                                                                           
Service [toolbox] revision [toolbox-00001-l9c] has been deployed and is serving 100 percent of traffic.
Service URL: https://toolbox-868691532292.us-central1.run.app

student@instance-1:~$

Verifikasi Layanan

Sekarang kita dapat memeriksa apakah layanan sudah aktif dan kita dapat mengakses endpoint. Kita menggunakan utilitas gcloud untuk mendapatkan endpoint layanan pengambilan dan token autentikasi. Atau, Anda dapat memeriksa URI layanan di konsol cloud.

dd1a16ee00a861a0.png

Anda dapat menyalin nilai dan mengganti bagian "$(gcloud run services list –filter="(toolbox)" –format="value(URL)" dalam perintah curl .

Berikut cara mendapatkan URL secara dinamis dari command line:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud  run services list --filter="(toolbox)" --format="value(URL)")

Output konsol yang diharapkan:

student@instance-1:~$ curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud  run services list --filter="(toolbox)" --format="value(URL)")
🧰 Hello, World! 🧰student@instance-1:~$

Jika kita melihat pesan "Hello World", berarti layanan kita sudah aktif dan melayani permintaan.

8. Men-deploy Aplikasi Contoh

Sekarang, setelah layanan pengambilan aktif dan berjalan, kita dapat men-deploy aplikasi contoh. Aplikasi ini merupakan asisten bandara online yang dapat memberi Anda informasi tentang penerbangan, bandara, dan bahkan memesan penerbangan berdasarkan data penerbangan dan bandara dari database kami.

Aplikasi dapat di-deploy secara lokal, di VM di cloud, atau layanan lain seperti Cloud Run atau Kubernetes. Di sini kita akan menunjukkan cara men-deploy-nya di VM terlebih dahulu.

Siapkan lingkungan

Kita tetap mengerjakan VM menggunakan sesi SSH yang sama. Untuk menjalankan aplikasi, kita memerlukan beberapa modul Python dan kita telah menambahkannya saat menginisialisasi database sebelumnya. Mari beralih ke lingkungan virtual Python dan mengubah lokasi ke direktori aplikasi.

Dalam sesi SSH VM, jalankan:

source ~/.venv/bin/activate
cd cymbal-air-toolbox-demo

Output yang diharapkan (disamarkan):

student@instance-1:~$ source ~/.venv/bin/activate
cd cymbal-air-toolbox-demo
(.venv) student@instance-1:~/cymbal-air-toolbox-demo$

Jalankan Aplikasi Asisten

Sebelum memulai aplikasi, kita perlu menyiapkan beberapa variabel lingkungan. Fungsi dasar aplikasi seperti kueri penerbangan dan fasilitas bandara hanya memerlukan TOOLBOX_URL yang mengarahkan aplikasi ke layanan pengambilan. Kita bisa mendapatkannya menggunakan perintah gcloud .

Dalam sesi SSH VM, jalankan:

export TOOLBOX_URL=$(gcloud  run services list --filter="(toolbox)" --format="value(URL)")

Output yang diharapkan (disamarkan):

student@instance-1:~/cymbal-air-toolbox-demo$ export BASE_URL=$(gcloud  run services list --filter="(toolbox)" --format="value(URL)")

Untuk menggunakan kemampuan aplikasi yang lebih canggih seperti memesan dan mengubah penerbangan, kita perlu login ke aplikasi menggunakan akun Google kita dan untuk tujuan tersebut, kita perlu menyediakan variabel lingkungan CLIENT_ID menggunakan client ID OAuth dari bab Menyiapkan Client ID:

export CLIENT_ID=215....apps.googleusercontent.com

Output yang diharapkan (disamarkan):

student@instance-1:~/cymbal-air-toolbox-demo$ export CLIENT_ID=215....apps.googleusercontent.com

Sekarang kita dapat menjalankan aplikasi:

python run_app.py

Output yang diharapkan:

student@instance-1:~/cymbal-air-toolbox-demo/llm_demo$ python run_app.py
INFO:     Started server process [2900]
INFO:     Waiting for application startup.
Loading application...
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)

Hubungkan ke Aplikasi

Anda memiliki beberapa cara untuk terhubung ke aplikasi yang berjalan di VM. Misalnya, Anda dapat membuka port 8081 di VM menggunakan aturan firewall di VPC atau membuat load balancer dengan IP publik. Di sini kita akan menggunakan tunnel SSH ke VM yang menerjemahkan port lokal 8080 ke port VM 8081.

Menghubungkan dari Mesin Lokal

Saat ingin terhubung dari komputer lokal, kita perlu menjalankan tunnel SSH. Hal ini dapat dilakukan menggunakan gcloud compute ssh:

gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8081:localhost:8081

Output yang diharapkan:

student-macbookpro:~ student$ gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081
Warning: Permanently added 'compute.7064281075337367021' (ED25519) to the list of known hosts.
Linux instance-1.us-central1-c.c.gleb-test-001.internal 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
student@instance-1:~$

Sekarang kita dapat membuka browser dan menggunakan http://localhost:8081 untuk terhubung ke aplikasi kita. Kita akan melihat layar aplikasi.

c667b9013afac3f9.png

Menghubungkan dari Cloud Shell

Atau, kita dapat menggunakan Google Cloud Shell untuk terhubung. Buka tab Cloud Shell lain menggunakan tanda "+" di bagian atas.

4ca978f5142bb6ce.png

Di tab baru, dapatkan URI origin dan pengalihan untuk klien web Anda dengan menjalankan perintah gcloud:

echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google"

Berikut output yang diharapkan:

student@cloudshell:~ echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google"
origin:
https://8080-cs-35704030349-default.cs-us-east1-rtep.cloudshell.dev
redirect:
https://8080-cs-35704030349-default.cs-us-east1-rtep.cloudshell.dev/login/google

Gunakan asal dan pengalihan URI sebagai "Authorized JavaScript origins" dan "Authorized redirect URIs" untuk kredensial yang dibuat di bab "Prepare Client ID" dengan mengganti atau menambahkan nilai http://localhost:8080 yang awalnya diberikan.

Klik "Cymbal Air" di halaman client ID OAuth 2.0.

b4c1430329886d9c.png

Masukkan origin dan URI pengalihan untuk Cloud Shell, lalu tekan tombol Simpan.

5651bdd6d0d1c88.png

Di tab Cloud Shell yang baru, mulai tunnel ke VM dengan menjalankan perintah gcloud:

gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081

Tindakan ini akan menampilkan pesan error "Cannot assign requested address" - harap abaikan.

Berikut output yang diharapkan:

student@cloudshell:~ gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081
bind [::1]:8081: Cannot assign requested address
inux instance-1.us-central1-a.c.gleb-codelive-01.internal 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat May 25 19:15:46 2024 from 35.243.235.73
student@instance-1:~$

Tindakan ini akan membuka port 8080 di Cloud Shell yang dapat digunakan untuk "Web preview".

Klik tombol "Web preview" di bagian kanan atas Cloud Shell Anda. Dari menu drop-down, pilih "Preview on port 8080"

444fbf54dcd4d160.png

Alat ini akan membuka tab baru di browser web Anda dengan antarmuka aplikasi. Anda akan dapat melihat halaman "Cymbal Air Customer Service Assistant".

389f0ae2945beed5.png

Login ke Aplikasi

Setelah semuanya disiapkan dan aplikasi Anda terbuka, kita dapat menggunakan tombol "Login" di kanan atas layar aplikasi untuk memberikan kredensial kita. Hal ini bersifat opsional dan hanya diperlukan jika Anda ingin mencoba fungsi pemesanan aplikasi.

a1f571371b957129.png

Jendela pop-up akan terbuka tempat kita dapat memilih kredensial.

Setelah login, aplikasi siap dan Anda dapat mulai memposting permintaan ke kolom di bagian bawah jendela.

Demo ini menampilkan asisten layanan pelanggan Cymbal Air. Cymbal Air adalah maskapai penumpang fiktif. Asisten ini adalah chatbot AI yang membantu wisatawan mengelola penerbangan dan mencari informasi tentang hub Cymbal Air di Bandar Udara Internasional San Francisco (SFO).

Tanpa login (tanpa CLIENT_ID), aplikasi ini dapat membantu menjawab pertanyaan pengguna seperti:

Kapan penerbangan berikutnya ke Denver?

Apakah ada toko mewah di sekitar gerbang C28?

Di mana saya bisa mendapatkan kopi di dekat gerbang A6?

Di mana saya bisa membeli hadiah?

Temukan penerbangan dari SFO ke Denver yang berangkat hari ini

Saat login ke aplikasi, Anda dapat mencoba kemampuan lain seperti memesan penerbangan atau memeriksa apakah kursi yang ditetapkan untuk Anda adalah kursi di dekat jendela atau lorong.

6e7758f707c67c3e.png

Aplikasi ini menggunakan model dasar Google terbaru untuk menghasilkan respons dan melengkapinya dengan informasi tentang penerbangan dan fasilitas dari database AlloyDB operasional. Anda dapat membaca selengkapnya tentang aplikasi demo ini di halaman GitHub project.

9. Membersihkan lingkungan

Setelah semua tugas selesai, kita dapat membersihkan lingkungan

Hapus Layanan Cloud Run

Di Cloud Shell, jalankan:

gcloud run services delete toolbox --region us-central1

Output konsol yang diharapkan:

student@cloudshell:~ (gleb-test-short-004)$ gcloud run services delete retrieval-service --region us-central1
Service [retrieval-service] will be deleted.

Do you want to continue (Y/n)?  Y

Deleting [retrieval-service]...done.                                                                                                                                                                                                                 
Deleted service [retrieval-service].

Hapus Akun Layanan untuk layanan Cloud Run

Di Cloud Shell, jalankan:

PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet

Output konsol yang diharapkan:

student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-222]
student@cloudshell:~ (gleb-test-short-004)$ gcloud iam service-accounts delete retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet
deleted service account [retrieval-identity@gleb-test-short-004.iam.gserviceaccount.com]
student@cloudshell:~ (gleb-test-short-004)$

Hancurkan instance dan cluster AlloyDB setelah Anda selesai mengerjakan lab.

Hapus cluster AlloyDB dan semua instance

Jika Anda telah menggunakan versi uji coba AlloyDB. Jangan hapus cluster uji coba jika Anda berencana menguji lab dan resource lain menggunakan cluster uji coba. Anda tidak akan dapat membuat cluster uji coba lain dalam project yang sama.

Cluster tersebut dihancurkan dengan opsi paksa yang juga akan menghapus semua instance milik cluster tersebut.

Di Cloud Shell, tentukan variabel project dan lingkungan jika koneksi Anda terputus dan semua setelan sebelumnya hilang:

gcloud config set project <your project id>
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export PROJECT_ID=$(gcloud config get-value project)

Hapus cluster:

gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-001-402417)$ gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force
All of the cluster data will be lost when the cluster is deleted.

Do you want to continue (Y/n)?  Y

Operation ID: operation-1697820178429-6082890a0b570-4a72f7e4-4c5df36f
Deleting cluster...done.   

Hapus Cadangan AlloyDB

Hapus semua cadangan AlloyDB untuk cluster:

for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-001-402417)$ for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done
Operation ID: operation-1697826266108-60829fb7b5258-7f99dc0b-99f3c35f
Deleting backup...done.                                                                                                                                                                                                                                                            

Sekarang kita bisa menghancurkan VM

Hapus VM GCE

Di Cloud Shell, jalankan:

export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
    --zone=$ZONE \
    --quiet

Output konsol yang diharapkan:

student@cloudshell:~ (test-project-001-402417)$ export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
    --zone=$ZONE \
    --quiet
Deleted 

Hapus Akun Layanan untuk VM GCE dan layanan Pengambilan

Di Cloud Shell, jalankan:

PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet

Output konsol yang diharapkan:

student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet
Your active configuration is: [cloudshell-222]
deleted service account [compute-aip@gleb-test-short-004.iam.gserviceaccount.com]
student@cloudshell:~ (gleb-test-short-004)$ 

10. Selamat

Selamat, Anda telah menyelesaikan codelab.

Yang telah kita bahas

  • Cara men-deploy Cluster AlloyDB
  • Cara terhubung ke AlloyDB
  • Cara mengonfigurasi dan men-deploy Layanan Toolbox MCP
  • Cara men-deploy aplikasi contoh menggunakan layanan yang di-deploy

11. Survei

Output:

Bagaimana Anda akan menggunakan tutorial ini?

Hanya membacanya Membaca dan menyelesaikan latihannya