Xây dựng ứng dụng trò chuyện dựa trên LLM và RAG bằng cơ sở dữ liệu Cloud SQL và LangChain

1. Giới thiệu

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách triển khai Dịch vụ truy xuất cơ sở dữ liệu AI tạo sinh và tạo một ứng dụng tương tác mẫu bằng môi trường đã triển khai.

8727a44c8c402834.pngS

Bạn có thể xem thêm thông tin về Dịch vụ truy xuất AI tạo sinh và ứng dụng mẫu tại đây.

Điều kiện tiên quyết

  • Hiểu biết cơ bản về Google Cloud Console
  • Kỹ năng cơ bản về giao diện dòng lệnh và giao diện dòng lệnh của Google Cloud

Kiến thức bạn sẽ học được

  • Cách tạo một phiên bản Cloud SQL
  • Cách kết nối với thực thể đó
  • Cách định cấu hình và triển khai Dịch vụ truy xuất cơ sở dữ liệu AI tạo sinh
  • Cách triển khai ứng dụng mẫu bằng dịch vụ đã triển khai

Bạn cần có

  • Một tài khoản Google Cloud và một dự án trên Google Cloud
  • Một trình duyệt web như Chrome

2. Thiết lập và yêu cầu

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png.

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật ứng dụng.
  • Mã dự án là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham khảo Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử cách riêng của mình để xem có thể sử dụng hay không. Bạn không thể thay đổi mã này sau bước này và mã vẫn giữ nguyên trong thời gian của dự án.
  • Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án), mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
  1. Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh phát sinh việc thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạn đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Khởi động Cloud Shell

Mặc dù bạn có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trong Đám mây.

Trong Google Cloud Console, hãy nhấp vào biểu tượng Cloud Shell ở thanh công cụ trên cùng bên phải:

55efc1aaa7a4d3ad.pngS

Sẽ chỉ mất một chút thời gian để cấp phép và kết nối với môi trường. Sau khi hoàn tất, bạn sẽ thấy như sau:

7ffe5cbb04455448.pngS

Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Phiên bản này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Bạn có thể thực hiện mọi công việc trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt gì cả.

3. Trước khi bắt đầu

Bật API

Bên trong Cloud Shell, hãy đảm bảo bạn đã thiết lập mã dự án:

Thông thường, mã dự án được hiển thị trong dấu ngoặc đơn tại dấu nhắc lệnh trong Cloud shell như trong hình:

fa6ee779963405d5.png

gcloud config set project [YOUR-PROJECT-ID]

Sau đó, hãy đặt biến môi trường PROJECT_ID thành mã dự án trên Google Cloud:

PROJECT_ID=$(gcloud config get-value project)

Bật tất cả dịch vụ cần thiết:

gcloud services enable sqladmin.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

Kết quả dự kiến trên bảng điều khiển:

student@cloudshell:~ (gleb-test-short-004)$ gcloud services enable sqladmin.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. Tạo một thực thể Cloud SQL

Tạo một thực thể Cloud SQL có bật tính năng hỗ trợ vectơ.

Tạo mật khẩu

Xác định mật khẩu cho người dùng cơ sở dữ liệu mặc định. Bạn có thể xác định mật khẩu của riêng mình hoặc sử dụng một hàm ngẫu nhiên để tạo mật khẩu

export CLOUDSQL_PASSWORD=`openssl rand -hex 12`

Ghi lại giá trị được tạo cho mật khẩu

echo $CLOUDSQL_PASSWORD

MySQL

Bạn có thể bật cờ cloudsql_vector khi tạo thực thể. Hiện tại, hỗ trợ vectơ được cung cấp trong MySQL 8.0.36 & 8.0.37.

export region=us-central1
gcloud sql instances create my-cloudsql-instance --region=$region --database-version=MYSQL_8_0_36 --database-flags=cloudsql_vector=ON --root-password=$CLOUDSQL_PASSWORD

Kết quả dự kiến trên bảng điều khiển (địa chỉ IP đã bị loại bỏ):

student@cloudshell:~ export region=us-central1
gcloud sql instances create my-cloudsql-instance --region=$region --database-version=MYSQL_8_0_36 --database-flags=cloudsql_vector=ON --root-password=$CLOUDSQL_PASSWORD
Creating Cloud SQL instance for MYSQL_8_0_36...done.                                                                                                                                 
Created [https://sqladmin.googleapis.com/sql/v1beta4/projects/test-project-402417/instances/my-cloudsql-instance].
NAME                   DATABASE_VERSION  LOCATION       TIER             PRIMARY_ADDRESS  PRIVATE_ADDRESS  STATUS
my-cloudsql-instance  MYSQL_8_0_36      us-central1-a  db-n1-standard-1  00.000.00.00   -                RUNNABLE

PostgreSQL

Phần mở rộng pgvector được cung cấp trong các phiên bản >= 11.

export region=us-central1
gcloud sql instances create my-cloudsql-instance --region=$region --database-version=POSTGRES_15 --tier=db-g1-small

Kết quả dự kiến trên bảng điều khiển (địa chỉ IP đã bị loại bỏ):

student@cloudshell:~ export region=us-central1
gcloud sql instances create my-cloudsql-instance --region=$region --database-version=POSTGRES_15 --tier=db-g1-small
Creating Cloud SQL instance for POSTGRES_15...done.                                                                                                                                  
Created [https://sqladmin.googleapis.com/sql/v1beta4/projects/test-project-402417/instances/my-cloudsql-instance].
NAME                   DATABASE_VERSION  LOCATION       TIER         PRIMARY_ADDRESS  PRIVATE_ADDRESS  STATUS
my-cloudsql-instance  POSTGRES_15       us-central1-a  db-g1-small  00.000.00.00     -                RUNNABLE

Sau khi tạo phiên bản, chúng ta cần xác định mật khẩu cho người dùng mặc định trong phiên bản đó và kiểm tra xem chúng ta có thể kết nối với mật khẩu đó hay không. Nhập mật khẩu của bạn vào lời nhắc khi thiết bị đã sẵn sàng kết nối.

gcloud sql users set-password postgres \
    --instance=my-cloudsql-instance \
    --password=$CLOUDSQL_PASSWORD
gcloud sql connect my-cloudsql-instance --user=postgres

Kết quả dự kiến trên bảng điều khiển:

student@cloudshell:~ (test-project-402417)$ gcloud sql users set-password postgres \
    --instance=my-cloudsql-instance \
    --password=$CLOUDSQL_PASSWORD
gcloud sql connect my-cloudsql-instance --user=postgres
Updating Cloud SQL user...done.                                                                                                                                                                                                                                            
Allowlisting your IP for incoming connection for 5 minutes...done.                                                                                                                                                                                                         
Connecting to database with SQL user [postgres].Password: 
psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1), server 15.7)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

postgres=>

Thoát phiên psql:

exit

5. Chuẩn bị máy ảo GCE

Tạo tài khoản dịch vụ

Vì chúng tôi sẽ dùng máy ảo để triển khai dịch vụ Truy xuất cơ sở dữ liệu AI tạo sinh và lưu trữ một ứng dụng mẫu, nên bước đầu tiên là tạo một Tài khoản dịch vụ của Google (GVL). Giao diện này sẽ được máy ảo GCE sử dụng và chúng tôi sẽ phải cấp cho máy chủ này các đặc quyền cần thiết để hoạt động với các dịch vụ khác.

Trong Cloud Shell, hãy thực thi:

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

Triển khai máy ảo GCE

Tạo một máy ảo GCE trong cùng khu vực và VPC với phiên bản Cloud SQL.

Trong Cloud Shell, hãy thực thi:

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

Kết quả dự kiến trên bảng điều khiển:

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

Cho phép máy ảo kết nối với Cloud SQL

Chúng tôi cần thêm IP công khai của máy ảo vào danh sách các mạng được uỷ quyền cho phiên bản Cloud SQL. Trong shell đám mây, hãy thực thi:

VM_EXTERNAL_IP=$(gcloud compute instances describe instance-1 --zone=us-central1-a --format='get(networkInterfaces[0].accessConfigs[0].natIP)')
gcloud sql instances patch my-cloudsql-instance --authorized-networks=$VM_EXTERNAL_IP

Kết quả dự kiến trên bảng điều khiển:

student@cloudshell:~ (test-project-402417)$ export ZONE=us-central1-a
student@cloudshell:~ (test-project-402417)$ VM_EXTERNAL_IP=$(gcloud compute instances describe instance-1 --zone=us-central1-a --format='get(networkInterfaces[0].accessConfigs[0].natIP)')
gcloud sql instances patch my-cloudsql-instance --authorized-networks=$VM_EXTERNAL_IP
When adding a new IP address to authorized networks, make sure to also include any IP addresses that have already been authorized. Otherwise, they will be overwritten and de-authorized.

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

The following message will be used for the patch API method.
{"name": "my-cloudsql-instance", "project": "test-project-402417", "settings": {"ipConfiguration": {"authorizedNetworks": [{"value": "34.71.252.173"}]}}}
Patching Cloud SQL instance...done.                                                                                                                                                                                     
Updated [https://sqladmin.googleapis.com/sql/v1beta4/projects/test-project-402417/instances/my-cloudsql-instance].

Cài đặt ứng dụng cơ sở dữ liệu

MySQL

Cài đặt phần mềm ứng dụng MySQL trên máy ảo đã triển khai.

Kết nối với máy ảo:

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

Kết quả dự kiến trên bảng điều khiển:

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

Cài đặt phần mềm đang chạy lệnh bên trong máy ảo:

sudo apt-get update
sudo apt-get install --yes default-mysql-client

Kết quả dự kiến trên bảng điều khiển:

student@instance-1:~$ sudo apt-get update
sudo apt-get install --yes mysql-client
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libconfig-inifiles-perl libdbd-mariadb-perl libdbi-perl libgdbm-compat4 libperl5.32 libterm-readkey-perl mariadb-client-10.5 mariadb-client-core-10.5 perl perl-modules-5.32
Suggested packages:
  libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-perl perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make libtap-harness-archive-perl
The following NEW packages will be installed:
  default-mysql-client libconfig-inifiles-perl libdbd-mariadb-perl libdbi-perl libgdbm-compat4 libperl5.32 libterm-readkey-perl mariadb-client-10.5 mariadb-client-core-10.5 perl
  Perl-modules-5.32
...redacted...
Processing triggers for libc-bin (2.31-13+deb11u10) ...

PostgreSQL

Cài đặt phần mềm ứng dụng PostgreSQL trên máy ảo đã triển khai.

Kết nối với máy ảo:

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

Kết quả dự kiến trên bảng điều khiển:

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

Cài đặt phần mềm đang chạy lệnh bên trong máy ảo:

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

Kết quả dự kiến trên bảng điều khiển:

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

Kết nối với thực thể

MySQL

Kết nối với thực thể chính từ máy ảo bằng MySQL.

Tiếp tục phiên SSH đã mở tới máy ảo của bạn. Nếu bạn đã bị ngắt kết nối, hãy kết nối lại bằng lệnh tương tự như trên.

Sử dụng $CLOUDSQL_Password và tên thực thể đã lưu ý trước đây để kết nối với Cloud SQL từ máy ảo GCE:

export CLOUDSQL_PASSWORD=<Noted password>
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export INSTANCE_NAME=my-cloudsql-instance
export INSTANCE_IP=$(gcloud sql instances list --filter=name:$INSTANCE_NAME --format="value(PRIMARY_ADDRESS)")
mysql --host=$INSTANCE_IP --user=root --password=$CLOUDSQL_PASSWORD

Kết quả dự kiến trên bảng điều khiển:

student@instance-1:~$ export CLOUDSQL_PASSWORD=P9...
student@instance-1:~$ export REGION=us-central1
student@instance-1:~$ export INSTANCE_NAME=my-cloud-sql-instance
student@instance-1:~$ export INSTANCE_IP=$(gcloud sql instances list --filter=name:$INSTANCE_NAME --format="value(PRIMARY_ADDRESS)")
student@instance-1:~$ mysql  –host=$INSTANCE_IP –user=root –password=$CLOUDSQL_PASSWORD –sslmode=require 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2824706
Server version: 8.0.36-google (Google)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

Thoát khỏi phiên MySQL và tiếp tục thiết lập kết nối SSH:

exit

Kết quả dự kiến trên bảng điều khiển:

MySQL [(none)]> exit
Bye
student@instance-1:~$ 

PostgreSQL

Kết nối với thực thể chính từ máy ảo bằng psql.

Tiếp tục phiên SSH đã mở tới máy ảo của bạn. Nếu bạn đã bị ngắt kết nối, hãy kết nối lại bằng lệnh tương tự như trên.

Sử dụng $CLOUDSQL_Password và tên thực thể đã lưu ý trước đây để kết nối với PostgreSQL từ máy ảo GCE:

export PGPASSWORD=<Noted password (CLOUDSQL_PASSWORD)>
export CLOUDSQL_PASSWORD=$PGPASSWORD
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export INSTANCE_NAME=my-cloudsql-instance
export INSTANCE_IP=$(gcloud sql instances list --filter=name:$INSTANCE_NAME --format="value(PRIMARY_ADDRESS)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"

Kết quả dự kiến trên bảng điều khiển:

student@instance-1:~$ export CLOUDSQL_PASSWORD=P9...
student@instance-1:~$ export REGION=us-central1
student@instance-1:~$ export INSTANCE_IP=$(gcloud sql instances list --filter=name:$INSTANCE_NAME --format="value(PRIMARY_ADDRESS)")
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=> 

Thoát khỏi phiên psql và tiếp tục thiết lập kết nối SSH:

exit

Kết quả dự kiến trên bảng điều khiển:

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

6. Khởi động cơ sở dữ liệu

Chúng tôi sẽ dùng máy ảo máy khách làm nền tảng để điền dữ liệu vào cơ sở dữ liệu và lưu trữ ứng dụng. Bước đầu tiên là tạo cơ sở dữ liệu và điền dữ liệu vào cơ sở dữ liệu đó.

Tạo cơ sở dữ liệu

MySQL

Tạo cơ sở dữ liệu có tên "assistantdemo".

Trong phiên máy ảo GCE, hãy thực thi:

mysql --host=$INSTANCE_IP  --user=root --password=$CLOUDSQL_PASSWORD -e "CREATE DATABASE assistantdemo"

Đầu ra dự kiến trên bảng điều khiển (không có đầu ra):

student@instance-1:~$ mysql --host=$INSTANCE_IP  --user=root --password=$CLOUDSQL_PASSWORD -e "CREATE DATABASE assistantdemo"
student@instance-1:~$  

PostgreSQL

Tạo cơ sở dữ liệu có tên "assistantdemo".

Trong phiên máy ảo GCE, hãy thực thi:

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

Kết quả dự kiến trên bảng điều khiển:

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

Bật phần mở rộng pgvector.

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

Đầu ra dự kiến trên bảng điều khiển (không có đầu ra):

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

Chuẩn bị môi trường Python

Để tiếp tục, chúng ta sẽ sử dụng các tập lệnh Python đã chuẩn bị từ kho lưu trữ GitHub nhưng trước khi làm việc đó, chúng ta cần cài đặt phần mềm cần thiết.

Trong máy ảo GCE, hãy thực thi:

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

Kết quả dự kiến trên bảng điều khiển:

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

Xác minh phiên bản Python.

Trong máy ảo GCE, hãy thực thi:

python -V

Kết quả dự kiến trên bảng điều khiển:

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

Chuẩn bị tệp cấu hình

Sao chép kho lưu trữ GitHub bằng mã cho dịch vụ truy xuất và ứng dụng mẫu.

Trong máy ảo GCE, hãy thực thi:

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

Kết quả dự kiến trên bảng điều khiển:

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.

MySQL

Trong máy ảo GCE, hãy thực thi:

cd ~/genai-databases-retrieval-app/retrieval_service
cp example-config-cloudsql.yml config.yml
cp example-config-cloudsql.yml config.yml
sed -i s/engine/mysql/g config.yml
sed -i s/my-project/$PROJECT_ID/g config.yml
sed -i s/my-region/$REGION/g config.yml
sed -i s/my-instance/$INSTANCE_NAME/g config.yml
sed -i s/my-password//g config.yml
sed -i s/my_database/assistantdemo/g config.yml
sed -i s/my-user/root/g config.yml
cat config.yml

Kết quả dự kiến trên bảng điều khiển:

student@instance-1:~$ cd genai-databases-retrieval-app/retrieval_service
cp example-config-cloudsql.yml config.yml
sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml
sed -i s/my-password/$CLOUDSQL_PASSWORD/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 MySQL
  kind: "cloudsql-mysql"
  host: 10.65.0.2
  # port: 5432
  database: "assistantdemo"
  user: "root"
  password: "P9..."

Postgres

Trong máy ảo GCE, hãy thực thi:

cd ~/genai-databases-retrieval-app/retrieval_service
cp example-config-cloudsql.yml config.yml
sed -i s/engine/postgres/g config.yml
sed -i s/my-project/$PROJECT_ID/g config.yml
sed -i s/my-region/$REGION/g config.yml
sed -i s/my-instance/$INSTANCE_NAME/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

Kết quả dự kiến trên bảng điều khiển:

student@instance-1:~$ cd genai-databases-retrieval-app/retrieval_service
cp example-config-cloudsql.yml config.yml
sed -i s/engine/postgres/g config.yml
sed -i s/my-project/$PROJECT_ID/g config.yml
sed -i s/my-region/$REGION/g config.yml
sed -i s/my-instance/$INSTANCE_NAME/g config.yml
sed -i s/my-password/$CLOUDSQL_PASSWORD/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 Postgres
  kind: "cloudsql-postgres"
  host: 10.65.0.2
  # port: 5432
  database: "assistantdemo"
  user: "postgres"
  password: "P9..."

Điền cơ sở dữ liệu

Điền sẵn cơ sở dữ liệu bằng tập dữ liệu mẫu. Lệnh đầu tiên là thêm tất cả các gói bắt buộc vào môi trường ảo Python và lệnh thứ hai đang điền dữ liệu vào cơ sở dữ liệu.

Trong máy ảo GCE, hãy thực thi:

cd ~/genai-databases-retrieval-app/retrieval_service
pip install -r requirements.txt
python run_database_init.py

Kết quả dự kiến trên bảng điều khiển (đã loại bỏ):

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. Triển khai Dịch vụ truy xuất lên Cloud Run

Bây giờ, chúng ta có thể triển khai dịch vụ truy xuất cho Cloud Run. Dịch vụ này chịu trách nhiệm làm việc với cơ sở dữ liệu và trích xuất thông tin cần thiết từ cơ sở dữ liệu dựa trên yêu cầu của một ứng dụng AI.

Tạo tài khoản dịch vụ

Tạo tài khoản dịch vụ cho dịch vụ truy xuất và cấp các đặc quyền cần thiết.

Mở một thẻ Cloud Shell khác bằng dấu "+" ở trên cùng.

4ca978f5142bb6ce.pngS

Trong thẻ Cloud shell mới, hãy thực thi:

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"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/cloudsql.client"

Kết quả dự kiến trên bảng điều khiển:

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

Đóng thẻ bằng lệnh thực thi "exit" trong thẻ:

exit

Triển khai Dịch vụ truy xuất

Tiếp tục trong thẻ đầu tiên khi bạn kết nối với máy ảo thông qua SSH bằng cách triển khai dịch vụ.

Trong phiên SSH của máy ảo, hãy thực thi:

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

Kết quả dự kiến trên bảng điều khiển:

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$

Xác minh Dịch vụ

Bây giờ, chúng ta có thể kiểm tra xem dịch vụ có chạy đúng cách và máy ảo có quyền truy cập vào điểm cuối hay không. Chúng ta dùng tiện ích gcloud để lấy điểm cuối của dịch vụ truy xuất. Ngoài ra, bạn có thể kiểm tra URL này trong Cloud Console và thay thế trong lệnh curl, rồi nhập "$(gcloud run services list –filter="(retrieval-service)" theo giá trị từ đó.

Trong phiên SSH của máy ảo, hãy thực thi:

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

Kết quả dự kiến trên bảng điều khiển:

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$

Nếu chúng ta thấy thông báo "Hello World" ("Xin chào thế giới") thì có nghĩa là dịch vụ của chúng tôi đang hoạt động và đang thực hiện yêu cầu.

8. Triển khai ứng dụng mẫu

Bây giờ, khi đã thiết lập và chạy dịch vụ truy xuất, chúng ta có thể triển khai ứng dụng mẫu sẽ sử dụng dịch vụ này. Bạn có thể triển khai ứng dụng trên máy ảo hoặc bất kỳ dịch vụ nào khác như Cloud Run, Kubernetes hoặc thậm chí là trên máy tính xách tay. Ở đây, chúng tôi sẽ trình bày cách triển khai trên máy ảo.

Chuẩn bị môi trường

Chúng tôi vẫn tiếp tục làm việc trên máy ảo thông qua cùng một phiên SSH. Để chạy ứng dụng, chúng ta cần thêm một số mô-đun Python. Lệnh này sẽ được thực thi qua thư mục ứng dụng trong cùng một môi trường ảo Python.

Trong phiên VM SSH, hãy thực thi:

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

Kết quả dự kiến (đã loại bỏ):

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

Chuẩn bị mã ứng dụng khách

Để dùng chức năng đặt trước của ứng dụng này, chúng ta cần chuẩn bị Mã ứng dụng khách OAuth 2.0 bằng Cloud Console. Đó sẽ là thời điểm chúng ta đăng nhập vào ứng dụng vì quy trình đặt phòng sử dụng thông tin xác thực của khách hàng để ghi dữ liệu đặt phòng trong cơ sở dữ liệu.

Trong Cloud Console, hãy chuyển đến API và Dịch vụ rồi nhấp vào "Màn hình xin phép OAuth" và chọn "Nội bộ" người dùng.

2400e5dcdb93eab8.png.

Sau đó, nhấn nút "Tạo" và làm theo hướng dẫn trên màn hình tiếp theo.

6c34d235156e571f.png.

Bạn cần điền vào các trường bắt buộc như "Tên ứng dụng" và "Email hỗ trợ người dùng". Ngoài ra, bạn có thể thêm miền mà bạn muốn hiển thị trên màn hình xin phép và cuối cùng là phần "Thông tin liên hệ của nhà phát triển"

2b7cd51aff915072.pngS

Sau đó, bạn nhấn nút "Lưu và tiếp tục" ở cuối trang và sẽ dẫn bạn đến trang tiếp theo.

d90c10c88fd347f9.png

Bạn không cần thay đổi bất cứ điều gì trừ phi bạn muốn chỉ định phạm vi. Cuối cùng, bạn xác nhận bằng cách nhấn nút "Lưu và tiếp tục" một lần nữa. Thao tác này sẽ thiết lập màn hình xin phép trong ứng dụng.

Bước tiếp theo là tạo mã ứng dụng khách. Trên bảng điều khiển bên trái, bạn nhấp vào phần "Credentials" (Thông tin xác thực) Thao tác này sẽ đưa bạn đến thông tin đăng nhập OAuth2.

7ad97432390f224c.pngS

Tại đây, bạn nhấp vào "Tạo thông tin xác thực'' ở trên cùng rồi chọn "OAuth ClientID". Sau đó, một màn hình khác sẽ mở ra.

325a926431c8f16d.pngS

Chọn "Ứng dụng web" trong danh sách thả xuống cho loại ứng dụng, rồi đặt URI ứng dụng (và cổng (không bắt buộc)) làm "Nguồn gốc JavaScript được cho phép". Ngoài ra, bạn cần thêm vào "URI chuyển hướng được phép" máy chủ lưu trữ ứng dụng của bạn bằng "/login/google" ở cuối để có thể sử dụng màn hình uỷ quyền bật lên. Trong hình ở trên, bạn có thể thấy rằng tôi đã sử dụng http://localhost làm URI ứng dụng cơ sở của mình.

Sau khi đẩy nút "Tạo" bạn sẽ thấy cửa sổ bật lên chứa thông tin đăng nhập của ứng dụng khách.

e91adf03ec31cd15.png

Sau này, chúng ta sẽ cần Mã ứng dụng khách (và Mật khẩu ứng dụng khách (không bắt buộc)) để dùng với ứng dụng

Chạy ứng dụng Trợ lý

Trước khi bắt đầu ứng dụng, chúng ta cần thiết lập một số biến môi trường. Chức năng cơ bản của ứng dụng như truy vấn chuyến bay và tiện nghi sân bay chỉ yêu cầu BASE_URL trỏ ứng dụng đến dịch vụ truy xuất. Chúng ta có thể dùng lệnh gcloud để lấy thông tin này .

Trong phiên VM SSH, hãy thực thi:

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

Kết quả dự kiến (đã loại bỏ):

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

Để sử dụng các tính năng nâng cao hơn của ứng dụng như đặt vé và thay đổi chuyến bay, chúng ta cần đăng nhập vào ứng dụng này bằng Tài khoản Google. Để làm được điều đó, chúng ta cần cung cấp biến môi trường CLIENT_ID bằng Mã ứng dụng khách OAuth trong chương Chuẩn bị mã ứng dụng khách:

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

Kết quả dự kiến (đã loại bỏ):

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

Và giờ chúng ta có thể chạy ứng dụng của mình:

python run_app.py

Kết quả đầu ra dự kiến:

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)

Kết nối với Ứng dụng

Bạn có một số cách để kết nối với ứng dụng chạy trên máy ảo. Ví dụ: Bạn có thể mở cổng 8081 trên máy ảo bằng các quy tắc tường lửa trong VPC hoặc tạo một trình cân bằng tải với IP công khai. Ở đây, chúng ta sẽ sử dụng một đường hầm SSH sang máy ảo dịch cổng cục bộ 8080 sang cổng máy ảo 8081.

Đang kết nối từ máy cục bộ

Khi muốn kết nối từ một máy cục bộ, chúng ta cần chạy đường hầm SSH. Bạn có thể thực hiện việc này bằng gcloud Compute ssh:

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

Kết quả đầu ra dự kiến:

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

Bây giờ, chúng ta có thể mở trình duyệt và sử dụng http://localhost:8081 để kết nối với ứng dụng của chúng ta. Chúng ta sẽ thấy màn hình ứng dụng.

c667b9013afac3f9.png

Kết nối từ Cloud Shell

Hoặc chúng ta có thể dùng Cloud shell để kết nối. Mở một thẻ Cloud Shell khác bằng dấu "+" ở trên cùng.

4ca978f5142bb6ce.pngS

Trong thẻ Cloud shell mới, hãy khởi động đường hầm đến máy ảo của bạn bằng cách thực thi lệnh gcloud:

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

Thông báo sẽ hiển thị lỗi "Không thể chỉ định địa chỉ được yêu cầu" – vui lòng bỏ qua thông báo đó.

Sau đây là kết quả dự kiến:

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

Thao tác này sẽ mở cổng 8080 trên Cloud shell có thể dùng cho "Bản xem trước trên web".

Nhấp vào "Bản xem trước trên web" ở trên cùng bên phải của Cloud Shell và từ trình đơn thả xuống, rồi chọn "Xem trước trên cổng 8080".

444fbf54dcd4d160.pngs

Thao tác này sẽ mở một thẻ mới trong trình duyệt web có giao diện ứng dụng. Bạn sẽ có thể thấy "Trợ lý dịch vụ khách hàng của Cymbal Air" . Trong thanh địa chỉ của trang này, chúng ta thấy URI dẫn đến trang xem trước. Chúng tôi cần xóa phần "/?authuser=0&redirectMembers=true" ở cuối

389f0ae2945beed5.png.

Và sử dụng phần đầu tiên của URI như "https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/" phải để trong cửa sổ trình duyệt và cung cấp dưới dạng "Nguồn gốc JavaScript được cho phép" và "URI chuyển hướng được phép" cho thông tin đăng nhập của chúng tôi được tạo trong phần "Chuẩn bị mã ứng dụng khách" thay thế hoặc thêm chương vào các giá trị http://localhost:8080 được cung cấp ban đầu. Giá trị phía trên sẽ có dạng "https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev" và mã thấp hơn sẽ là "https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/login/google"

2c37eeda0a7e2f80.pngS

Đăng nhập vào Ứng dụng

Khi mọi thứ được thiết lập và đơn đăng ký của bạn đang mở, chúng tôi có thể sử dụng ở trên cùng bên phải màn hình đăng ký để cung cấp thông tin đăng nhập. Đây là tính năng không bắt buộc và chỉ bắt buộc nếu bạn muốn dùng thử chức năng đặt trước của ứng dụng.

a1f571371b957129.png

Một cửa sổ bật lên sẽ mở ra để chúng ta chọn thông tin đăng nhập.

Sau khi đăng nhập, ứng dụng đã sẵn sàng và bạn có thể bắt đầu đăng yêu cầu của mình vào trường ở cuối cửa sổ.

Bản minh hoạ này giới thiệu trợ lý dịch vụ khách hàng của Cymbal Air. Cymbal Air là một hãng hàng không chở khách hư cấu. Trợ lý này là một bot trò chuyện AI giúp khách lưu trú quản lý chuyến bay và tra cứu thông tin về trung tâm của Cymbal Air tại Sân bay Quốc tế San Francisco (SFO).

Nếu không đăng nhập (không có CLIENT_ID), tính năng này có thể giúp trả lời các câu hỏi của người dùng như:

Chuyến bay tiếp theo đến Denver là khi nào?

Có cửa hàng sang trọng nào quanh cổng C28 không?

Tôi có thể uống cà phê ở đâu gần cổng A6?

Tôi có thể mua quà tặng ở đâu?

Vui lòng đặt chuyến bay đến Denver khởi hành lúc 10:35 sáng

Khi đăng nhập vào ứng dụng, bạn có thể thử các tính năng khác như đặt vé máy bay hoặc kiểm tra xem ghế được chỉ định cho bạn có phải là ghế gần cửa sổ hay lối đi không.

6e7758f707c67c3e.png.

Ứng dụng này sử dụng các mô hình nền tảng mới nhất của Google để tạo câu trả lời và củng cố câu trả lời đó bằng thông tin về chuyến bay và tiện nghi từ cơ sở dữ liệu Cloud SQL đang hoạt động. Bạn có thể đọc thêm về ứng dụng minh hoạ này trên trang GitHub của dự án.

9. Dọn dẹp môi trường

Khi tất cả các tác vụ được hoàn thành, chúng ta có thể dọn dẹp môi trường của mình.

Xoá dịch vụ Cloud Run

Trong Cloud Shell, hãy thực thi:

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

Kết quả dự kiến trên bảng điều khiển:

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

Xoá Tài khoản dịch vụ của dịch vụ Cloud Run

Trong Cloud Shell, hãy thực thi:

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

Kết quả dự kiến trên bảng điều khiển:

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

Xoá phiên bản Cloud SQL

Huỷ bỏ thực thể Cloud SQL khi bạn hoàn tất phòng thí nghiệm

Trong Cloud shell, hãy xác định các biến dự án và môi trường nếu bạn đã bị ngắt kết nối và tất cả các chế độ cài đặt trước đó bị mất:

export INSTANCE_NAME=my-cloudsql-instance
export PROJECT_ID=$(gcloud config get-value project)

Xoá thực thể:

gcloud sql instances delete $INSTANCE_NAME --project=$PROJECT_ID

Kết quả dự kiến trên bảng điều khiển:

student@cloudshell:~$ gcloud sql instances delete $INSTANCE_NAME --project=$PROJECT_ID
All of the instance data will be lost when the instance is deleted.

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

Deleting Cloud SQL instance...done.                                                                                                                
Deleted [https://sandbox.googleapis.com/v1beta4/projects/test-project-001-402417/instances/my-cloudsql-instance].

Bây giờ, chúng ta có thể huỷ bỏ máy ảo

Xoá máy ảo GCE

Trong Cloud Shell, hãy thực thi:

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

Kết quả dự kiến trên bảng điều khiển:

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

Xoá Tài khoản dịch vụ của máy ảo GCE và dịch vụ Truy xuất

Trong Cloud Shell, hãy thực thi:

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

Kết quả dự kiến trên bảng điều khiển:

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. Xin chúc mừng

Chúc mừng bạn đã hoàn thành lớp học lập trình.

Nội dung đã đề cập

  • Cách tạo một phiên bản Cloud SQL
  • Cách kết nối với phiên bản Cloud SQL
  • Cách định cấu hình và triển khai Dịch vụ truy xuất cơ sở dữ liệu AI tạo sinh
  • Cách triển khai ứng dụng mẫu bằng dịch vụ đã triển khai

11. Khảo sát

Bạn sẽ sử dụng hướng dẫn này như thế nào?

Chỉ đọc qua Đọc và hoàn thành bài tập