ساخت یک برنامه چت مبتنی بر LLM و RAG با استفاده از پایگاه داده های Cloud SQL و LangChain

1. معرفی

در این کد لبه شما نحوه استقرار سرویس بازیابی پایگاه داده GenAI و ایجاد یک نمونه برنامه تعاملی با استفاده از محیط مستقر شده را خواهید آموخت.

8727a44c8c402834.png

می توانید اطلاعات بیشتری در مورد سرویس بازیابی GenAI و نمونه برنامه از اینجا دریافت کنید.

پیش نیازها

  • درک اولیه از Google Cloud Console
  • مهارت های اولیه در رابط خط فرمان و پوسته Google Cloud

چیزی که یاد خواهید گرفت

  • نحوه ایجاد یک نمونه Cloud SQL
  • نحوه اتصال به نمونه
  • نحوه پیکربندی و استقرار سرویس بازیابی پایگاه داده GenAI
  • نحوه استقرار یک برنامه نمونه با استفاده از سرویس مستقر شده

آنچه شما نیاز دارید

  • یک حساب Google Cloud و پروژه Google Cloud
  • یک مرورگر وب مانند کروم

2. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع/APIهای Cloud باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

55efc1aaa7a4d3ad.png

تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.

3. قبل از شروع

فعال کردن API

در داخل Cloud Shell، مطمئن شوید که ID پروژه شما تنظیم شده است:

معمولاً ID پروژه در داخل پرانتز در خط فرمان در پوسته ابری همانطور که در تصویر نشان داده شده است نشان داده می شود:

fa6ee779963405d5.png

gcloud config set project [YOUR-PROJECT-ID]

سپس متغیر محیطی PROJECT_ID را روی شناسه پروژه Google Cloud خود تنظیم کنید:

PROJECT_ID=$(gcloud config get-value project)

فعال کردن تمام خدمات لازم:

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

خروجی کنسول مورد انتظار:

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. یک نمونه Cloud SQL ایجاد کنید

با فعال بودن پشتیبانی برداری، یک نمونه Cloud SQL ایجاد کنید.

رمز عبور ایجاد کنید

تعریف رمز عبور برای کاربر پیش فرض پایگاه داده شما می توانید رمز عبور خود را تعریف کنید یا از یک تابع تصادفی برای ایجاد آن استفاده کنید

export CLOUDSQL_PASSWORD=`openssl rand -hex 12`

به مقدار ایجاد شده برای رمز عبور توجه کنید

echo $CLOUDSQL_PASSWORD

MySQL

شما می توانید پرچم cloudsql_vector را در ایجاد نمونه فعال کنید. در حال حاضر، پشتیبانی برداری در 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

خروجی کنسول مورد انتظار (آدرس IP ویرایش شده):

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

پسوند pgvector در نسخه های >= 11 ارائه شده است.

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

خروجی کنسول مورد انتظار (آدرس IP ویرایش شده):

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

پس از ایجاد نمونه، باید یک رمز عبور برای کاربر پیش فرض در نمونه تعریف کنیم و بررسی کنیم که آیا می توانیم با رمز عبور وصل شویم. پس از آماده شدن برای اتصال، رمز عبور خود را در اعلان قرار دهید.

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

خروجی کنسول مورد انتظار:

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=>

از جلسه psql خارج شوید:

exit

5. ماشین مجازی GCE را آماده کنید

ایجاد حساب سرویس

از آنجایی که ما از VM خود برای استقرار سرویس بازیابی پایگاه داده GenAI خود و میزبانی یک برنامه نمونه استفاده خواهیم کرد، اولین قدم ایجاد یک حساب سرویس Google (GSA) است. GSA توسط GCE VM استفاده خواهد شد و ما باید امتیازات لازم را برای کار با سایر سرویس ها به آن اعطا کنیم.

در 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/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"

GCE VM را مستقر کنید

یک GCE VM در همان منطقه و VPC به عنوان نمونه Cloud SQL ایجاد کنید.

در 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

اجازه دادن به VM برای اتصال به Cloud SQL

ما باید IP عمومی VM خود را به لیست شبکه های مجاز برای نمونه Cloud SQL خود اضافه کنیم. در پوسته ابری اجرا کنید:

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

خروجی کنسول مورد انتظار:

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

کلاینت پایگاه داده را نصب کنید

MySQL

نرم افزار مشتری MySQL را روی 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:~$ 

دستور اجرای نرم افزار را در داخل ماشین مجازی نصب کنید:

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

خروجی کنسول مورد انتظار:

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

نرم افزار مشتری PostgreSQL را روی ماشین مجازی مستقر شده نصب کنید.

اتصال به 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:~$ 

دستور اجرای نرم افزار را در داخل ماشین مجازی نصب کنید:

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

به Instance متصل شوید

MySQL

با استفاده از MySQL از VM به نمونه اولیه متصل شوید.

با جلسه SSH باز شده در VM خود ادامه دهید. اگر اتصال شما قطع شده است، با استفاده از همان دستور بالا دوباره وصل شوید.

برای اتصال به Cloud SQL از GCE VM از $CLOUDSQL_PASSWORD قبلاً ذکر شده و نام نمونه استفاده کنید:

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

خروجی کنسول مورد انتظار:

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

با حفظ اتصال SSH از جلسه MySQL خارج شوید:

exit

خروجی کنسول مورد انتظار:

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

PostgreSQL

با استفاده از psql از VM به نمونه اولیه متصل شوید.

با جلسه SSH باز شده در VM خود ادامه دهید. اگر اتصال شما قطع شده است، دوباره با استفاده از همان دستور بالا وصل شوید.

برای اتصال به PostgreSQL از GCE VM از $CLOUDSQL_PASSWORD قبلاً ذکر شده و نام نمونه استفاده کنید:

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"

خروجی کنسول مورد انتظار:

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=> 

با حفظ اتصال SSH از جلسه psql خارج شوید:

exit

خروجی کنسول مورد انتظار:

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

6- پایگاه داده را مقداردهی اولیه کنید

ما قصد داریم از VM مشتری خود به عنوان یک پلتفرم برای پر کردن پایگاه داده خود با داده ها و میزبانی برنامه خود استفاده کنیم. اولین قدم ایجاد یک پایگاه داده و پر کردن آن با داده است.

ایجاد پایگاه داده

MySQL

یک پایگاه داده با نام "assistantdemo" ایجاد کنید.

در جلسه GCE VM اجرا کنید:

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

خروجی کنسول مورد انتظار (بدون خروجی):

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

PostgreSQL

یک پایگاه داده با نام "assistantdemo" ایجاد کنید.

در جلسه GCE VM اجرا کنید:

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

محیط پایتون را آماده کنید

برای ادامه قصد داریم از اسکریپت های آماده پایتون از مخزن 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:~$

تایید نسخه پایتون

در 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.

MySQL

در GCE VM اجرا کنید:

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

خروجی کنسول مورد انتظار:

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

در GCE VM اجرا کنید:

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

خروجی کنسول مورد انتظار:

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

پر کردن پایگاه داده

پایگاه داده را با مجموعه داده نمونه پر کنید. دستور اول تمام بسته های مورد نیاز را به محیط مجازی پایتون اضافه می کند و فرمان دوم پایگاه داده ما را با داده ها پر می کند.

در GCE VM اجرا کنید:

cd ~/genai-databases-retrieval-app/retrieval_service
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 مستقر کنیم. این سرویس مسئول کار با پایگاه داده و استخراج اطلاعات لازم از پایگاه داده بر اساس درخواست یک برنامه هوش مصنوعی است.

ایجاد حساب سرویس

یک حساب سرویس برای سرویس بازیابی ایجاد کنید و امتیازات لازم را اعطا کنید.

یک برگه دیگر Cloud Shell را با استفاده از علامت "+" در بالا باز کنید.

4ca978f5142bb6ce.png

در تب جدید پوسته ابری اجرا کنید:

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"

خروجی کنسول مورد انتظار:

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

برگه را با یکی از دستورهای اجرایی "exit" در برگه ببندید:

exit

سرویس بازیابی را مستقر کنید

در تب اول که از طریق SSH به VM متصل شده اید، با استقرار سرویس، ادامه دهید.

در جلسه VM SSH اجرا کنید:

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 برای دریافت نقطه پایانی سرویس بازیابی استفاده می کنیم. یا می توانید آن را در کنسول ابری بررسی کنید و در دستور curl "$(gcloud run services list –filter="(retrieval-service)" را با مقدار موجود در آن جایگزین کنید.

در جلسه VM SSH اجرا کنید:

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 نشان دهیم.

محیط را آماده کنید

ما با استفاده از همان جلسه SSH به کار روی VM خود ادامه می دهیم. برای اجرای برنامه ما باید چند ماژول پایتون اضافه کنیم. این دستور از دایرکتوری برنامه در همان محیط مجازی پایتون اجرا خواهد شد.

در جلسه VM SSH اجرا کنید:

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 به APIs and Services بروید و روی «OAuth consent screen» کلیک کنید و «Internal» کاربر را انتخاب کنید.

2400e5dcdb93eab8.png

سپس «ایجاد» را فشار دهید و در صفحه بعدی دنبال کنید.

6c34d235156e571f.png

باید فیلدهای الزامی مانند «نام برنامه» و «ایمیل پشتیبانی کاربر» را پر کنید. همچنین می‌توانید دامنه‌ای را که می‌خواهید در صفحه رضایت نمایش داده شود و در نهایت «اطلاعات تماس برنامه‌نویس» را اضافه کنید.

2b7cd51aff915072.png

سپس دکمه "ذخیره و ادامه" را در پایین صفحه فشار دهید و به صفحه بعدی هدایت خواهید شد.

d90c10c88fd347f9.png

نیازی نیست چیزی را در آنجا تغییر دهید مگر اینکه بخواهید دامنه را مشخص کنید. در نهایت با فشار دادن مجدد دکمه "ذخیره و ادامه" آن را تأیید می کنید. که صفحه رضایت برنامه را تنظیم می کند.

مرحله بعدی ایجاد شناسه مشتری است. در پانل سمت چپ روی «Credentials» کلیک می‌کنید که شما را به اعتبارنامه OAuth2 هدایت می‌کند.

7ad97432390f224c.png

در اینجا روی «Create Credentials» در بالا کلیک کنید و «OAuth ClientID» را انتخاب کنید. سپس صفحه دیگری باز می‌شود.

325a926431c8f16d.png

"برنامه وب" را از لیست کشویی برای نوع برنامه انتخاب کنید و URI برنامه خود را (و پورت - به صورت اختیاری) را به عنوان "منشاهای مجاز جاوا اسکریپت" قرار دهید. و باید میزبان برنامه خود را با "/login/google" در پایان به "URI های تغییر مسیر مجاز" اضافه کنید تا بتوانید از صفحه بازشو مجوز استفاده کنید. در تصویر بالا می بینید که من از http://localhost به عنوان URI برنامه پایه خود استفاده کرده ام.

پس از فشار دادن دکمه "ایجاد"، یک پنجره بازشو با اعتبار مشتریان خود دریافت می کنید.

e91adf03ec31cd15.png

ما بعداً به شناسه مشتری (و در صورت تمایل Client Secret) برای استفاده در برنامه خود نیاز خواهیم داشت

برنامه دستیار را اجرا کنید

قبل از شروع برنامه باید چند متغیر محیطی را تنظیم کنیم. عملکرد اصلی برنامه مانند پروازهای پرس و جو و امکانات فرودگاهی فقط به BASE_URL نیاز دارد که برنامه را به خدمات بازیابی اشاره می کند. ما می توانیم آن را با استفاده از دستور gcloud دریافت کنیم.

در جلسه VM SSH اجرا کنید:

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 باز کنید یا یک load balancer با IP عمومی ایجاد کنید. در اینجا می خواهیم از یک تونل SSH به VM استفاده کنیم که پورت محلی 8080 را به پورت VM 8081 ترجمه می کند.

اتصال از ماشین محلی

هنگامی که می خواهیم از یک ماشین محلی متصل شویم، باید یک تونل 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 را با استفاده از علامت "+" در بالا باز کنید.

4ca978f5142bb6ce.png

در تب جدید پوسته ابری، با اجرای دستور gcloud، تونل را به VM خود راه اندازی کنید:

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 و از منوی کشویی کلیک کنید و «Preview on port 8080» را انتخاب کنید.

444fbf54dcd4d160.png

یک تب جدید در مرورگر وب شما با رابط برنامه باز می شود. شما باید بتوانید صفحه «دستیار خدمات مشتریان سیمبال ایر» را ببینید. در نوار آدرس صفحه، URI به صفحه پیش نمایش را می بینیم. ما باید قسمت "/?authuser=0&redirectedPreviously=true" را در پایان حذف کنیم

389f0ae2945beed5.png

و استفاده از اولین قسمت URI مانند "https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/" در پنجره مرورگر باقی بماند و به عنوان " جاوا اسکریپت مجاز" ارائه شود. origins " و "Authorized Redirect URIs " برای اعتبارنامه های ما ایجاد شده در فصل "Prepare Client ID" جایگزین یا افزودن به مقادیر http://localhost:8080 ارائه شده اولیه. مقدار بالایی شبیه " https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev " و مقدار پایین تر " https://8080-cs-35704030349-default" خواهد بود. cs-us-east1-vpcf.cloudshell.dev/login/google "

2c37eeda0a7e2f80.png

وارد اپلیکیشن شوید

وقتی همه چیز راه‌اندازی شد و برنامه شما باز است، می‌توانیم از دکمه "ورود به سیستم" در سمت راست بالای صفحه برنامه خود برای ارائه اطلاعات کاربری خود استفاده کنیم. این اختیاری است و فقط در صورتی لازم است که بخواهید عملکرد رزرو برنامه را امتحان کنید.

a1f571371b957129.png

یک پنجره پاپ آپ باز می شود که در آن می توانیم اعتبار خود را انتخاب کنیم.

پس از ثبت نام، برنامه آماده است و می توانید درخواست های خود را در قسمت پایین پنجره ارسال کنید.

این نسخه ی نمایشی دستیار خدمات مشتری Cymbal Air را به نمایش می گذارد. Cymbal Air یک شرکت هواپیمایی خیالی مسافربری است. دستیار یک ربات چت هوش مصنوعی است که به مسافران کمک می کند تا پروازها را مدیریت کنند و اطلاعاتی درباره مرکز Cymbal Air در فرودگاه بین المللی سانفرانسیسکو (SFO) جستجو کنند.

بدون ورود به سیستم (بدون CLIENT_ID) می‌تواند به کاربران در پاسخ به سوالاتی مانند:

پرواز بعدی به دنور کی است؟

آیا مغازه های لوکسی در اطراف دروازه C28 وجود دارد؟

نزدیک دروازه A6 از کجا می توانم قهوه تهیه کنم؟

از کجا می توانم هدیه بخرم؟

لطفاً پرواز به مقصد دنور را رزرو کنید که ساعت 10:35 صبح حرکت می کند

وقتی وارد برنامه می‌شوید، می‌توانید قابلیت‌های دیگری مانند رزرو پرواز یا بررسی اینکه آیا صندلی اختصاص داده شده به شما یک صندلی در پنجره یا راهرو است را امتحان کنید.

6e7758f707c67c3e.png

این برنامه از جدیدترین مدل‌های پایه Google برای تولید پاسخ‌ها و تقویت آن با اطلاعات مربوط به پروازها و امکانات از پایگاه داده عملیاتی Cloud SQL استفاده می‌کند. اطلاعات بیشتر در مورد این اپلیکیشن دمو را می توانید در صفحه 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 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)$

نمونه Cloud SQL را حذف کنید

پس از اتمام کار با آزمایشگاه، نمونه Cloud SQL را نابود کنید

در پوسته ابری، متغیرهای پروژه و محیط را تعریف کنید، اگر اتصال شما قطع شده و تمام تنظیمات قبلی از بین رفته است:

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

نمونه را حذف کنید:

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

خروجی کنسول مورد انتظار:

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

حالا می توانیم VM خود را نابود کنیم

GCE VM را حذف کنید

در 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 و The Retrieval Service را حذف کنید

در 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. تبریک می گویم

برای تکمیل کد لبه تبریک می گویم.

آنچه را پوشش داده ایم

  • نحوه ایجاد یک نمونه Cloud SQL
  • نحوه اتصال به نمونه Cloud SQL
  • نحوه پیکربندی و استقرار سرویس بازیابی پایگاه داده GenAI
  • نحوه استقرار یک برنامه نمونه با استفاده از سرویس مستقر شده

11. نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

فقط آن را بخوانید آن را بخوانید و تمرینات را کامل کنید