การสร้างแอปพลิเคชันแชทที่อิงตาม LLM และ RAG โดยใช้ AI ของ AlloyDB และ LangChain

1. บทนำ

ใน Codelab นี้ คุณจะได้เรียนรู้วิธีทำให้บริการการดึงข้อมูลฐานข้อมูล GenAI ใช้งานได้และสร้างแอปพลิเคชันแบบอินเทอร์แอกทีฟตัวอย่างโดยใช้สภาพแวดล้อมที่ใช้งานได้

98c2676cc78880e.png

ดูข้อมูลเพิ่มเติมเกี่ยวกับบริการการดึงข้อมูล GenAI และตัวอย่างแอปพลิเคชันได้ที่นี่

ข้อกำหนดเบื้องต้น

  • ความเข้าใจพื้นฐานเกี่ยวกับ Google Cloud Console
  • ทักษะพื้นฐานในอินเทอร์เฟซบรรทัดคำสั่งและ Google Cloud Shell

สิ่งที่จะได้เรียนรู้

  • วิธีติดตั้งใช้งานคลัสเตอร์ AlloyDB
  • วิธีเชื่อมต่อกับ AlloyDB
  • วิธีกำหนดค่าและติดตั้งใช้งานบริการการดึงข้อมูลฐานข้อมูล GenAI
  • วิธีทำให้แอปพลิเคชันตัวอย่างใช้งานได้โดยใช้บริการที่ติดตั้งใช้งาน

สิ่งที่ต้องมี

  • บัญชี Google Cloud และโปรเจ็กต์ Google Cloud
  • เว็บเบราว์เซอร์ เช่น Chrome

2. การตั้งค่าและข้อกําหนด

การตั้งค่าสภาพแวดล้อมด้วยตนเอง

  1. ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณจะอัปเดตได้ทุกเมื่อ
  • รหัสโปรเจ็กต์จะซ้ำกันไม่ได้ในโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) คอนโซล Cloud จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นจะเป็นอะไร ในโค้ดแล็บส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (ปกติจะระบุเป็น PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสอื่นแบบสุ่มได้ หรือจะลองใช้อุปกรณ์ของคุณเองเพื่อดูว่าอุปกรณ์พร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงหลังจากขั้นตอนนี้ไม่ได้ และชื่อนี้จะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • โปรดทราบว่ามีค่าที่ 3 ซึ่งเป็นหมายเลขโปรเจ็กต์ที่ API บางรายการใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 รายการนี้ได้ในเอกสารประกอบ
  1. ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตามโค้ดแล็บนี้จะไม่เสียค่าใช้จ่ายมากนัก หากต้องการปิดใช้ทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินหลังจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างไว้หรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เริ่ม Cloud Shell

แม้ว่า Google Cloud จะทำงานจากระยะไกลจากแล็ปท็อปได้ แต่ในโค้ดแล็บนี้ คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จากคอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

55efc1aaa7a4d3ad.png

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อดำเนินการเสร็จแล้ว คุณควรเห็นข้อมูลดังต่อไปนี้

7ffe5cbb04455448.png

เครื่องเสมือนนี้โหลดเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ ซึ่งจะมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานบน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพเครือข่ายและการรับรองได้อย่างมีประสิทธิภาพ คุณทํางานทั้งหมดในโค้ดแล็บนี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไรเลย

3. ก่อนเริ่มต้น

เปิดใช้ API

เอาต์พุต:

ใน Cloud Shell ให้ตรวจสอบว่าได้ตั้งค่ารหัสโปรเจ็กต์แล้ว โดยทำดังนี้

โดยปกติแล้ว รหัสโปรเจ็กต์จะแสดงในวงเล็บในพรอมต์คำสั่งในเชลล์ระบบคลาวด์ดังที่แสดงในภาพ

fa6ee779963405d5.png

gcloud config set project [YOUR-PROJECT-ID]

จากนั้นตั้งค่าตัวแปรสภาพแวดล้อม PROJECT_ID เป็นรหัสโปรเจ็กต์ Google Cloud ดังนี้

PROJECT_ID=$(gcloud config get-value project)

เปิดใช้บริการที่จำเป็นทั้งหมด

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

ผลลัพธ์ที่คาดหวัง

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
Operation "operations/acf.p2-404051529011-664c71ad-cb2b-4ab4-86c1-1f3157d70ba1" finished successfully.

4. ติดตั้งใช้งานคลัสเตอร์ AlloyDB

ก่อนสร้างคลัสเตอร์ AlloyDB เราต้องมีช่วง IP ส่วนตัวที่พร้อมใช้งานใน VPC เพื่อใช้กับอินสแตนซ์ AlloyDB ในอนาคต หากไม่มี เราจะต้องสร้าง กำหนดให้บริการภายในของ Google นำไปใช้ แล้วหลังจากนั้นจึงจะสร้างคลัสเตอร์และอินสแตนซ์ได้

สร้างช่วง IP ส่วนตัว

เราต้องกำหนดค่าการเข้าถึงบริการส่วนตัวใน VPC สำหรับ AlloyDB สมมติฐานของเราคือเรามีเครือข่าย VPC "เริ่มต้น" ในโปรเจ็กต์และจะใช้เครือข่ายดังกล่าวสําหรับการดำเนินการทั้งหมด

สร้างช่วง IP ส่วนตัว โดยทำดังนี้

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

สร้างการเชื่อมต่อส่วนตัวโดยใช้ช่วง IP ที่จัดสรร โดยทำดังนี้

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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)$

สร้างคลัสเตอร์ AlloyDB

สร้างคลัสเตอร์ AlloyDB ในภูมิภาค us-central1

กำหนดรหัสผ่านสำหรับผู้ใช้ postgres คุณสามารถกําหนดรหัสผ่านของคุณเองหรือใช้ฟังก์ชันสุ่มเพื่อสร้างรหัสผ่าน

export PGPASSWORD=`openssl rand -hex 12`

ผลลัพธ์ที่คาดหวังในคอนโซล

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

จดรหัสผ่าน PostgreSQL ไว้ใช้ในอนาคต

echo $PGPASSWORD

ผลลัพธ์ที่คาดหวังในคอนโซล

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

กำหนดชื่อภูมิภาคและคลัสเตอร์ AlloyDB เราจะใช้ภูมิภาค us-central1 และ alloydb-aip-01 เป็นชื่อคลัสเตอร์

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

เรียกใช้คําสั่งเพื่อสร้างคลัสเตอร์

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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.                                                                                                                                                                                                                                                           

สร้างอินสแตนซ์หลักของ AlloyDB

สร้างอินสแตนซ์หลัก AlloyDB สําหรับคลัสเตอร์ของเราในเซสชัน Cloud Shell เดียวกัน หากถูกตัดการเชื่อมต่อ คุณจะต้องกําหนดตัวแปรสภาพแวดล้อมชื่อคลัสเตอร์และภูมิภาคอีกครั้ง

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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.                                                                                                                                                                                                                                                     

5. เตรียมเครื่องเสมือน GCE

สร้างบัญชีบริการ

เนื่องจากเราจะใช้ VM เพื่อติดตั้งใช้งานบริการการดึงข้อมูลฐานข้อมูล GenAI และโฮสต์แอปพลิเคชันตัวอย่าง ขั้นตอนแรกคือการสร้างบัญชีบริการ Google (GSA) GCE VM จะใช้ GSA และเราจะต้องให้สิทธิ์ที่จำเป็นแก่ GSA เพื่อให้ทำงานร่วมกับบริการอื่นๆ ได้

ใน Cloud Shell ให้ดำเนินการต่อไปนี้

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/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/serviceusage.serviceUsageConsumer"

ติดตั้งใช้งาน VM ใน GCE

สร้าง VM ของ GCE ในภูมิภาคและ VPC เดียวกับคลัสเตอร์ AlloyDB

ใน Cloud Shell ให้ดำเนินการต่อไปนี้

export ZONE=us-central1-a
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

ผลลัพธ์ที่คาดหวังในคอนโซล

student@cloudshell:~ (test-project-402417)$ export ZONE=us-central1-a
student@cloudshell:~ (test-project-402417)$ export ZONE=us-central1-a
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

Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/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.71.192.233
STATUS: RUNNING

ติดตั้งไคลเอ็นต์ Postgres

ติดตั้งซอฟต์แวร์ไคลเอ็นต์ PostgreSQL ใน VM ที่ติดตั้งใช้งาน

เชื่อมต่อกับ VM

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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:~$ 

ติดตั้งคำสั่งเรียกใช้ซอฟต์แวร์ภายใน VM โดยทำดังนี้

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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) ...

เชื่อมต่อกับอินสแตนซ์

เชื่อมต่อกับอินสแตนซ์หลักจาก VM โดยใช้ psql

ดำเนินการต่อด้วยเซสชัน SSH ที่เปิดอยู่ไปยัง VM หากถูกตัดการเชื่อมต่อ ให้เชื่อมต่ออีกครั้งโดยใช้คำสั่งเดียวกับด้านบน

ใช้ $PGASSWORD และชื่อคลัสเตอร์ที่ระบุไว้ก่อนหน้านี้เพื่อเชื่อมต่อกับ AlloyDB จาก GCE VM

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

ผลลัพธ์ที่คาดหวังในคอนโซล

student@instance-1:~$ export PGPASSWORD=P9...
student@instance-1:~$ export REGION=us-central1
student@instance-1:~$ export ADBCLUSTER=alloydb-aip-01
student@instance-1:~$ export INSTANCE_IP=export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres sslmode=require"
psql (13.11 (Debian 13.11-0+deb11u1), server 14.7)
WARNING: psql major version 13, server major version 14.
         Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=> 

ออกจากเซสชัน psql โดยที่การเชื่อมต่อ SSH ยังคงอยู่

exit

ผลลัพธ์ที่คาดหวังในคอนโซล

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

6. เริ่มต้นฐานข้อมูล

เราจะใช้ VM ของลูกค้าเป็นแพลตฟอร์มในการป้อนข้อมูลลงในฐานข้อมูลและโฮสต์แอปพลิเคชัน ขั้นตอนแรกคือการสร้างฐานข้อมูลและป้อนข้อมูล

สร้างฐานข้อมูล

สร้างฐานข้อมูลชื่อ "assistantdemo"

ในเซสชัน VM ของ GCE ให้ทำดังนี้

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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

เปิดใช้ส่วนขยาย pgVector

psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "CREATE EXTENSION vector"  

ผลลัพธ์ที่คาดหวังในคอนโซล

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

เตรียมสภาพแวดล้อม Python

เราจะใช้สคริปต์ Python ที่เตรียมไว้จากที่เก็บ GitHub แต่ก่อนอื่นเราต้องติดตั้งซอฟต์แวร์ที่จำเป็น

ใน GCE VM ให้ทำดังนี้

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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:~$

ยืนยันเวอร์ชัน Python

ใน GCE VM ให้ทำดังนี้

python -V

ผลลัพธ์ที่คาดหวังในคอนโซล

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

ป้อนข้อมูลฐานข้อมูล

โคลนที่เก็บ GitHub ที่มีโค้ดสําหรับบริการการดึงข้อมูลและแอปพลิเคชันตัวอย่าง

ใน GCE VM ให้ทำดังนี้

git clone https://github.com/GoogleCloudPlatform/genai-databases-retrieval-app.git

ผลลัพธ์ที่คาดหวังในคอนโซล

student@instance-1:~$ git clone https://github.com/GoogleCloudPlatform/genai-databases-retrieval-app.git
Cloning into 'genai-databases-retrieval-app'...
remote: Enumerating objects: 525, done.
remote: Counting objects: 100% (336/336), done.
remote: Compressing objects: 100% (201/201), done.
remote: Total 525 (delta 224), reused 179 (delta 135), pack-reused 189
Receiving objects: 100% (525/525), 46.58 MiB | 16.16 MiB/s, done.
Resolving deltas: 100% (289/289), done.

เตรียมไฟล์การกําหนดค่า

ใน GCE VM ให้ทำดังนี้

cd genai-databases-retrieval-app/retrieval_service
cp example-config.yml config.yml
sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml
sed -i s/my-password/$PGPASSWORD/g config.yml
sed -i s/my_database/assistantdemo/g config.yml
sed -i s/my-user/postgres/g config.yml
cat config.yml

ผลลัพธ์ที่คาดหวังในคอนโซล

student@instance-1:~$ cd genai-databases-retrieval-app/retrieval_service
cp example-config.yml config.yml
sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml
sed -i s/my-password/$PGPASSWORD/g config.yml
sed -i s/my_database/assistantdemo/g config.yml
sed -i s/my-user/postgres/g config.yml
cat config.yml
host: 0.0.0.0
# port: 8080
datastore:
  # Example for AlloyDB
  kind: "postgres"
  host: 10.65.0.2
  # port: 5432
  database: "assistantdemo"
  user: "postgres"
  password: "P9..."

ป้อนข้อมูลชุดข้อมูลตัวอย่างลงในฐานข้อมูล คำสั่งแรกจะเพิ่มแพ็กเกจที่จำเป็นทั้งหมดลงในสภาพแวดล้อมเสมือนของ Python และคำสั่งที่ 2 จะป้อนข้อมูลลงในฐานข้อมูล

ใน GCE VM ให้ทำดังนี้

pip install -r requirements.txt
python run_database_init.py

ผลลัพธ์ที่คาดหวังจากคอนโซล(ปกปิดบางส่วน)

student@instance-1:~/genai-databases-retrieval-app/retrieval_service$ pip install -r requirements.txt
python run_database_init.py
Collecting asyncpg==0.28.0 (from -r requirements.txt (line 1))
  Obtaining dependency information for asyncpg==0.28.0 from https://files.pythonhosted.org/packages/77/a4/88069f7935b14c58534442a57be3299179eb46aace2d3c8716be199ff6a6/asyncpg-0.28.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
  Downloading asyncpg-0.28.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.3 kB)
Collecting fastapi==0.101.1 (from -r requirements.txt (line 2))
...
database init done.
student@instance-1:~/genai-databases-retrieval-app/retrieval_service$

7. ติดตั้งใช้งานบริการการเรียกข้อมูลไปยัง Cloud Run

ตอนนี้เราทำให้บริการการเรียกข้อมูลใช้งานได้ใน Cloud Run แล้ว บริการมีหน้าที่รับผิดชอบในการจัดการกับฐานข้อมูลและดึงข้อมูลที่จำเป็นจากฐานข้อมูลตามคำขอจากแอปพลิเคชัน AI

สร้างบัญชีบริการ

สร้างบัญชีบริการสําหรับบริการการเรียกข้อมูลและมอบสิทธิ์ที่จําเป็น

เปิดแท็บ Cloud Shell อื่นโดยใช้เครื่องหมาย "+" ที่ด้านบน

4ca978f5142bb6ce.png

ในแท็บ Cloud Shell ใหม่ ให้ดำเนินการต่อไปนี้

export PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create retrieval-identity
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"

ผลลัพธ์ที่คาดหวังในคอนโซล

student@cloudshell:~ (gleb-test-short-003)$ gcloud iam service-accounts create retrieval-identity
Created service account [retrieval-identity].

ปิดแท็บด้วยคำสั่งการดำเนินการ "exit" ในแท็บ

exit

ทำให้บริการการเรียกข้อมูลใช้งานได้

ดำเนินการต่อในแท็บแรกที่คุณเชื่อมต่อกับ VM ผ่าน SSH ด้วยการทำให้บริการใช้งานได้

ในเซสชัน SSH ของ VM ให้ดำเนินการดังนี้

cd ~/genai-databases-retrieval-app
gcloud alpha run deploy retrieval-service \
    --source=./retrieval_service/\
    --no-allow-unauthenticated \
    --service-account retrieval-identity \
    --region us-central1 \
    --network=default \
    --quiet

ผลลัพธ์ที่คาดหวังในคอนโซล

student@instance-1:~/genai-databases-retrieval-app$ gcloud alpha run deploy retrieval-service \
    --source=./retrieval_service/\
    --no-allow-unauthenticated \
    --service-account retrieval-identity \
    --region us-central1 \
    --network=default
This command is equivalent to running `gcloud builds submit --tag [IMAGE] ./retrieval_service/` and `gcloud run deploy retrieval-service --image [IMAGE]`

Building using Dockerfile and deploying container to Cloud Run service [retrieval-service] in project [gleb-test-short-003] region [us-central1]
X Building and deploying... Done.
  ✓ Uploading sources...
  ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/6ebe74bf-3039-4221-b2e9-7ca8fa8dad8e?project=1012713954588].
  ✓ Creating Revision...
  ✓ Routing traffic...
    Setting IAM Policy...
Completed with warnings:
  Setting IAM policy failed, try "gcloud beta run services remove-iam-policy-binding --region=us-central1 --member=allUsers --role=roles/run.invoker retrieval-service"
Service [retrieval-service] revision [retrieval-service-00002-4pl] has been deployed and is serving 100 percent of traffic.
Service URL: https://retrieval-service-onme64eorq-uc.a.run.app
student@instance-1:~/genai-databases-retrieval-app$

ยืนยันบริการ

ตอนนี้เราตรวจสอบได้ว่าบริการทำงานอย่างถูกต้องและ VM มีสิทธิ์เข้าถึงอุปกรณ์ปลายทางหรือไม่ เราใช้ยูทิลิตี gcloud เพื่อรับปลายทางบริการการเรียกข้อมูล หรือจะตรวจสอบในคอนโซลระบบคลาวด์และแทนที่ "$(gcloud run services list –filter="(retrieval-service)" ในคําสั่ง curl ด้วยค่าจากตรงนั้นก็ได้

ในเซสชัน SSH ของ VM ให้ดำเนินการดังนี้

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

ผลลัพธ์ที่คาดหวังในคอนโซล

student@instance-1:~/genai-databases-retrieval-app$ curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud  run services list --filter="(retrieval-service)" --format="value(URL)")
{"message":"Hello World"}student@instance-1:~/genai-databases-retrieval-app$

หากเห็นข้อความ "Hello World" แสดงว่าบริการของเราพร้อมให้บริการและกำลังดำเนินการตามคำขอ

8. ทำให้แอปพลิเคชันตัวอย่างใช้งานได้

เมื่อบริการการเรียกข้อมูลพร้อมใช้งานแล้ว เราจะติดตั้งใช้งานแอปพลิเคชันตัวอย่างที่จะใช้บริการได้ แอปพลิเคชันสามารถทําให้ใช้งานได้ใน VM หรือบริการอื่นๆ เช่น Cloud Run, Kubernetes หรือแม้แต่ในเครื่องแล็ปท็อป เราจะแสดงวิธีทำให้ใช้งานได้ใน VM

เตรียมสภาพแวดล้อม

เราจะดำเนินการกับ VM โดยใช้เซสชัน SSH เดียวกันต่อไป เราต้องเพิ่มโมดูล Python บางรายการเพื่อเรียกใช้แอปพลิเคชัน ระบบจะเรียกใช้คําสั่งจากไดเรกทอรีแอปพลิเคชันในสภาพแวดล้อมเสมือนของ Python เดียวกัน

ในเซสชัน SSH ของ VM ให้ดำเนินการดังนี้

cd ~/genai-databases-retrieval-app/llm_demo
pip install -r requirements.txt

ผลลัพธ์ที่คาดหวัง (ปกปิดบางส่วน)

student@instance-1:~$ cd ~/genai-databases-retrieval-app/llm_demo
pip install -r requirements.txt
Collecting fastapi==0.104.0 (from -r requirements.txt (line 1))
  Obtaining dependency information for fastapi==0.104.0 from https://files.pythonhosted.org/packages/db/30/b8d323119c37e15b7fa639e65e0eb7d81eb675ba166ac83e695aad3bd321/fastapi-0.104.0-py3-none-any.whl.metadata
  Downloading fastapi-0.104.0-py3-none-any.whl.metadata (24 kB)
...

เตรียมรหัสไคลเอ็นต์

หากต้องการใช้ฟังก์ชันการจองของแอปพลิเคชัน เราต้องเตรียมรหัสไคลเอ็นต์ OAuth 2.0 โดยใช้ Cloud Console จะเป็นตอนที่เราลงชื่อเข้าใช้แอปพลิเคชัน เนื่องจากการจองใช้ข้อมูลเข้าสู่ระบบของลูกค้าเพื่อบันทึกข้อมูลการจองในฐานข้อมูล

ใน Cloud Console ให้ไปที่ API และบริการ แล้วคลิก "หน้าจอขอความยินยอม OAuth" แล้วเลือกผู้ใช้ "ภายใน"

2400e5dcdb93eab8.png

จากนั้นกด "สร้าง" แล้วทำตามขั้นตอนในหน้าจอถัดไป

6c34d235156e571f.png

คุณต้องกรอกข้อมูลในช่องที่ต้องกรอก เช่น "ชื่อแอป" และ "อีเมลการสนับสนุนผู้ใช้" นอกจากนี้ คุณยังเพิ่มโดเมนที่ต้องการแสดงในหน้าจอขอความยินยอม และ "ข้อมูลติดต่อนักพัฒนาแอป" ได้ด้วย

2b7cd51aff915072.png

จากนั้นกดปุ่ม "บันทึกและดำเนินการต่อ" ที่ด้านล่างของหน้า ซึ่งจะนำคุณไปยังหน้าถัดไป

d90c10c88fd347f9.png

คุณไม่จําเป็นต้องเปลี่ยนแปลงอะไรในนั้น เว้นแต่ว่าคุณต้องการระบุขอบเขต สุดท้ายให้ยืนยันโดยกดปุ่ม "บันทึกและดำเนินการต่อ" อีกครั้ง ซึ่งจะเป็นการตั้งค่าหน้าจอขอความยินยอมของแอปพลิเคชัน

ขั้นตอนถัดไปคือการสร้างรหัสไคลเอ็นต์ ในแผงด้านซ้าย ให้คลิก "ข้อมูลเข้าสู่ระบบ" ซึ่งจะนำคุณไปยังข้อมูลเข้าสู่ระบบสำหรับ OAuth2

7ad97432390f224c.png

ที่นี่ ให้คลิก "สร้างข้อมูลเข้าสู่ระบบ" ที่ด้านบน แล้วเลือก "รหัสไคลเอ็นต์ OAuth" จากนั้นระบบจะเปิดหน้าจออื่น

325a926431c8f16d.png

เลือก "เว็บแอปพลิเคชัน" จากรายการแบบเลื่อนลงสำหรับประเภทแอปพลิเคชัน แล้วใส่ URI ของแอปพลิเคชัน (และพอร์ต หากต้องการ) เป็น "ต้นทาง JavaScript ที่ได้รับอนุญาต" และคุณต้องเพิ่ม "URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต" ของโฮสต์แอปพลิเคชันที่มี "/login/google" ต่อท้ายเพื่อให้ใช้หน้าจอป๊อปอัปการให้สิทธิ์ได้ ในรูปภาพด้านบน คุณจะเห็นว่าเราใช้ http://localhost เป็น URI ของแอปพลิเคชันพื้นฐาน

หลังจากกดปุ่ม "สร้าง" คุณจะได้รับหน้าต่างป๊อปอัปที่มีข้อมูลเข้าสู่ระบบของลูกค้า

e91adf03ec31cd15.png

เราจะต้องใช้รหัสไคลเอ็นต์ (และรหัสลับไคลเอ็นต์ หากต้องการ) ในภายหลังเพื่อใช้กับแอปพลิเคชัน

เรียกใช้แอปพลิเคชัน Assistant

ก่อนเริ่มแอปพลิเคชัน เราต้องตั้งค่าตัวแปรสภาพแวดล้อมบางอย่าง ฟังก์ชันพื้นฐานของแอปพลิเคชัน เช่น การค้นหาเที่ยวบินและสิ่งอำนวยความสะดวกในสนามบิน ต้องใช้เพียง BASE_URL ซึ่งจะชี้แอปพลิเคชันไปยังบริการการเรียกข้อมูล เรารับข้อมูลได้โดยใช้คําสั่ง gcloud

ในเซสชัน SSH ของ VM ให้ดำเนินการดังนี้

export BASE_URL=$(gcloud  run services list --filter="(retrieval-service)" --format="value(URL)")

ผลลัพธ์ที่คาดหวัง (ปกปิดบางส่วน)

student@instance-1:~/genai-databases-retrieval-app/llm_demo$ export BASE_URL=$(gcloud  run services list --filter="(retrieval-service)" --format="value(URL)")

หากต้องการใช้ความสามารถขั้นสูงเพิ่มเติมของแอปพลิเคชัน เช่น การจองและการเปลี่ยนเที่ยวบิน เราต้องลงชื่อเข้าใช้แอปพลิเคชันโดยใช้บัญชี Google และเพื่อวัตถุประสงค์ดังกล่าว เราต้องระบุตัวแปรสภาพแวดล้อม CLIENT_ID โดยใช้รหัสไคลเอ็นต์ OAuth จากบทเตรียมรหัสไคลเอ็นต์ ดังนี้

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

ผลลัพธ์ที่คาดหวัง (ปกปิดบางส่วน)

student@instance-1:~/genai-databases-retrieval-app/llm_demo$ export CLIENT_ID=215....apps.googleusercontent.com

ตอนนี้เราเรียกใช้แอปพลิเคชันได้แล้ว

python run_app.py

ผลลัพธ์ที่คาดหวัง

student@instance-1:~/genai-databases-retrieval-app/llm_demo$ python main.py
INFO:     Started server process [28565]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)

เชื่อมต่อกับแอปพลิเคชัน

คุณเชื่อมต่อกับแอปพลิเคชันที่ทำงานใน VM ได้หลายวิธี เช่น คุณอาจเปิดพอร์ต 8081 ใน VM โดยใช้กฎไฟร์วอลล์ใน VPC หรือสร้างโหลดบาลานเซอร์ที่มี IP สาธารณะ เราจะใช้อุโมงค์ข้อมูล SSH ไปยัง VM เพื่อเปลี่ยนพอร์ต 8080 ในเครื่องเป็นพอร์ต 8081 ของ VM

การเชื่อมต่อจากเครื่อง

เมื่อต้องการเชื่อมต่อจากเครื่องในเครื่อง เราต้องเรียกใช้อุโมงค์ SSH ซึ่งทำได้โดยใช้ gcloud compute ssh

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

ผลลัพธ์ที่คาดหวัง

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:~$

ตอนนี้เราเปิดเบราว์เซอร์และใช้ http://localhost:8081 เพื่อเชื่อมต่อกับแอปพลิเคชันได้แล้ว เราควรจะเห็นหน้าจอแอปพลิเคชัน

c667b9013afac3f9.png

การเชื่อมต่อจาก Cloud Shell

หรือจะใช้ Cloud Shell เพื่อเชื่อมต่อก็ได้ เปิดแท็บ Cloud Shell อื่นโดยใช้เครื่องหมาย "+" ที่ด้านบน

4ca978f5142bb6ce.png

ใน Cloud Shell ใหม่ ให้รับ URI ต้นทางและ URI การเปลี่ยนเส้นทางสําหรับเว็บไคลเอ็นต์ที่เรียกใช้คําสั่ง gcloud

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

ผลลัพธ์ที่คาดหวังมีดังนี้

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

และใช้ต้นทางและการเปลี่ยนเส้นทางของ URI เป็น "ต้นทางของ JavaScript ที่ได้รับอนุญาต" และ "URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต" สำหรับข้อมูลเข้าสู่ระบบที่เราสร้างขึ้นในบท "เตรียมรหัสไคลเอ็นต์" โดยแทนที่หรือเพิ่มค่า http://localhost:8080 ที่ระบุไว้ตั้งแต่แรก

2c37eeda0a7e2f80.png

ในแท็บ Cloud Shell ใหม่ ให้เริ่มอุโมงค์ไปยัง VM โดยเรียกใช้คำสั่ง gcloud ดังนี้

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

ระบบจะแสดงข้อผิดพลาด "กำหนดที่อยู่ตามคำขอไม่ได้" โปรดไม่ต้องสนใจ

ผลลัพธ์ที่คาดหวังมีดังนี้

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:~$

ซึ่งจะเปิดพอร์ต 8080 ใน Cloud Shell ที่ใช้สำหรับ "ตัวอย่างเว็บ" ได้

คลิกปุ่ม "ตัวอย่างเว็บ" ที่ด้านขวาบนของ Cloud Shell แล้วเลือก "แสดงตัวอย่างบนพอร์ต 8080" จากเมนูแบบเลื่อนลง

444fbf54dcd4d160.png

ซึ่งจะเปิดแท็บใหม่ในเว็บเบราว์เซอร์ที่มีอินเทอร์เฟซแอปพลิเคชัน คุณควรเห็นหน้า "ผู้ช่วยฝ่ายบริการลูกค้าของ Cymbal Air"

389f0ae2945beed5.png

ลงชื่อเข้าใช้แอปพลิเคชัน

เมื่อตั้งค่าทุกอย่างและเปิดแอปพลิเคชันแล้ว เราจะใช้ปุ่ม "ลงชื่อเข้าใช้" ที่ด้านขวาบนของหน้าจอแอปพลิเคชันเพื่อระบุข้อมูลเข้าสู่ระบบได้ ซึ่งไม่บังคับและจำเป็นเฉพาะในกรณีที่คุณต้องการลองใช้ฟังก์ชันการจองของแอปพลิเคชันเท่านั้น

a1f571371b957129.png

ซึ่งจะเปิดหน้าต่างป๊อปอัปให้เราเลือกข้อมูลเข้าสู่ระบบ

หลังจากลงชื่อเข้าใช้แล้ว แอปพลิเคชันจะพร้อมใช้งานและคุณสามารถเริ่มโพสต์คำขอในช่องที่ด้านล่างของหน้าต่าง

การสาธิตนี้แสดงผู้ช่วยฝ่ายบริการลูกค้าของ Cymbal Air Cymbal Air เป็นสายการบินโดยสารสมมติ ผู้ช่วยดังกล่าวเป็นแชทบ็อต AI ที่ช่วยนักเดินทางจัดการเที่ยวบินและค้นหาข้อมูลเกี่ยวกับฮับของ Cymbal Air ที่สนามบินนานาชาติซานฟรานซิสโก (SFO)

โดยไม่ต้องลงชื่อเข้าใช้ (ไม่มี CLIENT_ID) ข้อมูลนี้จะช่วยตอบคําถามของผู้ใช้ เช่น

เที่ยวบินถัดไปที่ไปเดนเวอร์ออกเดินทางเมื่อใด

มีร้านหรูอยู่รอบๆ ประตู C28 ไหม

ฉันจะซื้อกาแฟใกล้กับประตู A6 ได้จากที่ไหน

ฉันจะซื้อของขวัญได้จากที่ไหน

โปรดจองเที่ยวบินไปเดนเวอร์ที่ออกเดินทางเวลา 10:35 น.

เมื่อลงชื่อเข้าใช้แอปพลิเคชันแล้ว คุณจะลองใช้ความสามารถอื่นๆ ได้ เช่น การจองเที่ยวบิน หรือตรวจสอบว่าที่นั่งที่กำหนดให้คุณเป็นที่นั่งริมหน้าต่างหรือริมทางเดิน

6e7758f707c67c3e.png

แอปพลิเคชันใช้โมเดลพื้นฐานล่าสุดของ Google เพื่อสร้างคำตอบและเสริมด้วยข้อมูลเกี่ยวกับเที่ยวบินและสิ่งอำนวยความสะดวกจากฐานข้อมูล AlloyDB ที่ใช้งานอยู่ อ่านข้อมูลเพิ่มเติมเกี่ยวกับแอปพลิเคชันสาธิตนี้ได้ในหน้า GitHub ของโปรเจ็กต์

9. ล้างสภาพแวดล้อม

เมื่องานทั้งหมดเสร็จสิ้นแล้ว เราจะล้างข้อมูลในสภาพแวดล้อมได้

ลบบริการ Cloud Run

ใน Cloud Shell ให้ดำเนินการต่อไปนี้

gcloud run services delete retrieval-service --region us-central1

ผลลัพธ์ที่คาดหวังในคอนโซล

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].

ลบบัญชีบริการสําหรับบริการ Cloud Run

ใน Cloud Shell ให้ดำเนินการต่อไปนี้

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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)$

ทำลายอินสแตนซ์และคลัสเตอร์ AlloyDB เมื่อใช้ห้องทดลองเสร็จแล้ว

ลบคลัสเตอร์ AlloyDB และอินสแตนซ์ทั้งหมด

ระบบจะทำลายคลัสเตอร์ด้วยตัวเลือก "บังคับ" ซึ่งจะลบอินสแตนซ์ทั้งหมดของคลัสเตอร์ด้วย

ในเชลล์ระบบคลาวด์ ให้กําหนดตัวแปรโปรเจ็กต์และสภาพแวดล้อมหากคุณถูกตัดการเชื่อมต่อและการตั้งค่าก่อนหน้านี้ทั้งหมดหายไป

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

ลบคลัสเตอร์

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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.   

ลบข้อมูลสํารอง AlloyDB

ลบข้อมูลสำรอง AlloyDB ทั้งหมดของคลัสเตอร์

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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.                                                                                                                                                                                                                                                            

ตอนนี้เราทำลาย VM ได้แล้ว

ลบ VM ใน GCE

ใน Cloud Shell ให้ดำเนินการต่อไปนี้

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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

ลบบัญชีบริการสําหรับ GCE VM และบริการการเรียกข้อมูล

ใน Cloud Shell ให้ดำเนินการต่อไปนี้

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

ผลลัพธ์ที่คาดหวังในคอนโซล

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. ขอแสดงความยินดี

ขอแสดงความยินดีที่ทํา Codelab จนเสร็จสมบูรณ์

สิ่งที่เราได้พูดถึง

  • วิธีติดตั้งใช้งานคลัสเตอร์ AlloyDB
  • วิธีเชื่อมต่อกับ AlloyDB
  • วิธีกำหนดค่าและติดตั้งใช้งานบริการการดึงข้อมูลฐานข้อมูล GenAI
  • วิธีทำให้แอปพลิเคชันตัวอย่างใช้งานได้โดยใช้บริการที่ติดตั้งใช้งาน

11. แบบสำรวจ

เอาต์พุต:

คุณจะใช้บทแนะนำนี้อย่างไร

อ่านอย่างเดียว อ่านและทำแบบฝึกหัดให้เสร็จ