Cloud SQL veritabanlarını ve LangChain'i kullanarak LLM ve RAG tabanlı sohbet uygulaması oluşturma

1. Giriş

Bu codelab'de, GenAI Databases Retrieval Service'i nasıl dağıtacağınızı ve dağıtılan ortamı kullanarak örnek bir etkileşimli uygulama oluşturmayı öğreneceksiniz.

8727a44c8c402834.png

Üretken Yapay Zeka Alma Hizmeti ve örnek uygulama hakkında daha fazla bilgiyi burada bulabilirsiniz.

Ön koşullar

  • Google Cloud Console hakkında temel düzeyde bilgi sahibi olmak
  • Komut satırı arayüzü ve Google Cloud Shell'deki temel beceriler

Neler öğreneceksiniz?

  • Cloud SQL örneği oluşturma
  • Örneğe bağlanma
  • Üretken yapay zeka veritabanları alma hizmetini yapılandırma ve dağıtma
  • Dağıtılan hizmeti kullanarak örnek uygulama dağıtma

Gerekenler

  • Google Cloud hesabı ve Google Cloud projesi
  • Chrome gibi bir web tarayıcısı

2. Kurulum ve Gereksinimler

Yönlendirmesiz ortam kurulumu

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Google Cloud Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

55efc1aaa7a4d3ad.png

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

7ffe5cbb04455448.png

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.

3. Başlamadan önce

API'yi etkinleştirme

Cloud Shell'de proje kimliğinizin ayarlandığından emin olun:

Genellikle proje kimliği, resimde gösterildiği gibi Cloud Shell'deki komut isteminde parantez içinde gösterilir:

fa6ee779963405d5.png

gcloud config set project [YOUR-PROJECT-ID]

Ardından PROJECT_ID ortam değişkenini Google Cloud proje kimliğiniz olarak ayarlayın:

PROJECT_ID=$(gcloud config get-value project)

Gerekli tüm hizmetleri etkinleştirin:

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

Beklenen konsol çıkışı:

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 örneği oluşturma

Vektör desteği etkinleştirilmiş bir Cloud SQL örneği oluşturun.

Şifre oluşturma

Varsayılan veritabanı kullanıcısı için şifre tanımlayın. Kendi şifrenizi tanımlayabilir veya rastgele bir işlev kullanarak şifre oluşturabilirsiniz.

export CLOUDSQL_PASSWORD=`openssl rand -hex 12`

Şifre için oluşturulan değeri not edin.

echo $CLOUDSQL_PASSWORD

MySQL

Örnek oluşturma sırasında cloudsql_vector işaretini etkinleştirebilirsiniz. Şu anda vektör desteği MySQL 8.0.36 ve 8.0.37'de sunulmaktadır.

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

Beklenen konsol çıkışı (IP adresi çıkarıldı):

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 uzantısı, 11 ve sonraki sürümlerde sunulur.

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

Beklenen konsol çıkışı (IP adresi çıkarıldı):

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

Örneği oluşturduktan sonra, örnekteki varsayılan kullanıcı için bir şifre tanımlamamız ve bu şifreyle bağlanıp bağlanamayacağımızı kontrol etmemiz gerekir. Bağlanmaya hazır olduğunda şifrenizi isteme girin.

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

Beklenen konsol çıkışı:

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 oturumundan çıkın:

exit

5. GCE sanal makinesini hazırlama

Hizmet Hesabı Oluşturma

Üretken yapay zeka veritabanları alma hizmetimizi dağıtmak ve örnek bir uygulamaya ev sahipliği yapmak için sanal makinemizi kullanacağımızdan ilk adım, bir Google hizmet hesabı (GSA) oluşturmaktır. GSA, GCE VM tarafından kullanılır ve diğer hizmetlerle çalışabilmesi için gerekli ayrıcalıkların verilmesi gerekir.

Cloud Shell'de şunu çalıştırın:

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 sanal makinesi dağıtma

Cloud SQL örneğiyle aynı bölgede ve VPC'de bir GCE VM oluşturun.

Cloud Shell'de şunu çalıştırın:

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

Beklenen konsol çıkışı:

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

Sanal makinenin Cloud SQL'e bağlanmasına izin verme

Sanal makinemizin herkese açık IP'sini, Cloud SQL örneğimizin yetkili ağlar listesine eklememiz gerekiyor. Cloud Shell'de şunu çalıştırın:

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

Beklenen konsol çıkışı:

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

Veritabanı istemcisini yükleme

MySQL

Dağıtılan sanal makineye MySQL istemci yazılımını yükleyin.

Sanal makineye bağlanın:

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

Beklenen konsol çıkışı:

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

Sanal makinenin içinde yazılım çalıştırma komutunu yükleyin:

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

Beklenen konsol çıkışı:

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

Dağıtılan sanal makineye PostgreSQL istemci yazılımını yükleyin.

Sanal makineye bağlanın:

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

Beklenen konsol çıkışı:

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

Sanal makinenin içinde yazılım çalıştırma komutunu yükleyin:

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

Beklenen konsol çıkışı:

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

Örneğe bağlanma

MySQL

MySQL kullanarak sanal makineden birincil örneğe bağlanın.

Sanal makinenize açılan SSH oturumuna devam edin. Bağlantınız kesildiyse yukarıdaki komutu kullanarak tekrar bağlanın.

GCE sanal makinesinden Cloud SQL'e bağlanmak için daha önce belirtilen $CLOUDSQL_PASSWORD ve örnek adını kullanın:

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

Beklenen konsol çıkışı:

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 bağlantısını açık tutarak MySQL oturumundan çıkın:

exit

Beklenen konsol çıkışı:

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

PostgreSQL

psql kullanarak sanal makineden birincil örneğe bağlanın.

Sanal makinenize açılan SSH oturumuna devam edin. Bağlantınız kesildiyse yukarıdaki komutu kullanarak tekrar bağlanın.

GCE sanal makineden PostgreSQL'e bağlanmak için daha önce not ettiğiniz $CLOUDSQL_PASSWORD ve örnek adını kullanın:

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"

Beklenen konsol çıkışı:

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 bağlantısını açık tutarak psql oturumundan çıkın:

exit

Beklenen konsol çıkışı:

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

6. Veritabanını başlatma

Veritabanımızı verilerle doldurmak ve uygulamamızı barındırmak için istemci VM'mizi platform olarak kullanacağız. İlk adım, bir veritabanı oluşturup bu veritabanını verilerle doldurmaktır.

Veritabanı Oluşturma

MySQL

"assistantdemo" adlı bir veritabanı oluşturun.

GCE sanal makine oturumunda şunu yürütün:

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

Beklenen konsol çıkışı (çıkış yok):

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

PostgreSQL

"assistantdemo" adlı bir veritabanı oluşturun.

GCE sanal makine oturumunda şunu yürütün:

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

Beklenen konsol çıkışı:

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

pgvector uzantısını etkinleştirin.

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

Beklenen konsol çıkışı (çıkış yok):

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

Python Ortamını Hazırlama

Devam etmek için GitHub deposundaki hazır Python komut dosyalarını kullanacağız ancak bunu yapmadan önce gerekli yazılımları yüklememiz gerekiyor.

GCE sanal makinesinde şunu çalıştırın:

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

Beklenen konsol çıkışı:

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 sürümünü doğrulayın.

GCE sanal makinesinde şunu çalıştırın:

python -V

Beklenen konsol çıkışı:

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

Yapılandırma dosyasını hazırlama

Alma hizmeti ve örnek uygulama kodunu içeren GitHub deposunu klonlayın.

GCE sanal makinesinde şunu çalıştırın:

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

Beklenen konsol çıkışı:

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 sanal makinesinde şunu çalıştırın:

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

Beklenen konsol çıkışı:

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 sanal makinesinde şunu çalıştırın:

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

Beklenen konsol çıkışı:

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

Veritabanını doldurma

Veritabanını örnek veri kümesiyle doldurun. İlk komut, gerekli tüm paketleri Python sanal ortamımıza ekler. İkinci komut ise veritabanımızı verilerle doldurur.

GCE sanal makinesinde şunu çalıştırın:

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

Beklenen konsol çıkışı (sansürlenmiş):

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. Alma hizmetini Cloud Run'a dağıtma

Artık alma hizmetini Cloud Run'a dağıtabiliriz. Hizmet, veri tabanıyla çalışmaktan ve bir yapay zeka uygulamasının isteğine göre veri tabanından gerekli bilgileri ayıklamaktan sorumludur.

Hizmet Hesabı Oluşturma

Alma hizmeti için bir hizmet hesabı oluşturun ve gerekli ayrıcalıkları verin.

En üstteki "+" işaretini kullanarak başka bir Cloud Shell sekmesi açın.

4ca978f5142bb6ce.png

Yeni Cloud Shell sekmesinde şunu çalıştırın:

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"

Beklenen konsol çıkışı:

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

Sekmede "exit" komutunu çalıştırarak sekmeyi kapatın:

exit

Alma hizmetini dağıtma

Hizmeti dağıtarak SSH üzerinden sanal makineye bağlandığınız ilk sekmede devam edin.

Sanal makine SSH oturumunda şunu çalıştırın:

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

Beklenen konsol çıkışı:

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$

Hizmeti Doğrulama

Artık hizmetin doğru şekilde çalışıp çalışmadığını ve sanal makinenin uç noktaya erişip erişemediğini kontrol edebiliriz. Alma hizmeti uç noktasını almak için gcloud yardımcı programını kullanırız. Alternatif olarak, bunu Cloud Console'da kontrol edebilir ve curl komutunda "$(gcloud run services list –filter="(retrieval-service)" kısmını oradaki değerle değiştirebilirsiniz.

Sanal makine SSH oturumunda şunu çalıştırın:

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

Beklenen konsol çıkışı:

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" mesajını görüyorsak hizmetimiz çalışıyor ve istekleri karşılıyor demektir.

8. Örnek Uygulama Dağıtma

Şimdi, alma hizmeti çalışır duruma geldiğine göre hizmeti kullanacak örnek bir uygulama dağıtabiliriz. Uygulama, sanal makineye veya Cloud Run, Kubernetes gibi başka bir hizmete, hatta yerel olarak bir dizüstü bilgisayara dağıtılabilir. Burada, sanal makineye nasıl dağıtılacağını göstereceğiz.

Ortamı hazırlama

Aynı SSH oturumunu kullanarak sanal makinemizde çalışmaya devam ediyoruz. Uygulamamızı çalıştırmak için bazı Python modülleri eklememiz gerekiyor. Komut, aynı Python sanal ortamındaki uygulama dizininden yürütülür.

Sanal makine SSH oturumunda şunu çalıştırın:

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

Beklenen çıktı (redaksiyonlu):

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

İstemci kimliğini hazırlama

Uygulamanın rezervasyon işlevini kullanmak için Cloud Console'u kullanarak OAuth 2.0 istemci kimliği hazırlamamız gerekir. Rezervasyon, rezervasyon verilerini veritabanına kaydetmek için istemci kimlik bilgilerini kullandığından, uygulamada oturum açtığımızda gerçekleşir.

Cloud Console'da API'ler ve Hizmetler'e gidip "OAuth kullanıcı rızası ekranı"nı tıklayın ve "Dahili" kullanıcıyı seçin.

2400e5dcdb93eab8.png

Ardından "Oluştur"u tıklayın ve sonraki ekrandaki talimatları uygulayın.

6c34d235156e571f.png

"Uygulama adı" ve "Kullanıcı desteği e-posta adresi" gibi zorunlu alanları doldurmanız gerekir. Ayrıca, kullanıcı rızası ekranında göstermek istediğiniz bir alan adı ve son olarak "Geliştirici iletişim bilgileri" ekleyebilirsiniz.

2b7cd51aff915072.png

Ardından sayfanın alt kısmındaki "Kaydet ve Devam Et" düğmesini tıkladığınızda bir sonraki sayfaya yönlendirilirsiniz.

d90c10c88fd347f9.png

Kapsamları belirtmek istemiyorsanız burada herhangi bir değişiklik yapmanız gerekmez. Son olarak, "Kaydet ve Devam Et" düğmesine tekrar basarak onaylayın. Bu işlem, uygulama kullanıcı rızası ekranını ayarlar.

Bir sonraki adım, istemci kimliğini oluşturmaktır. Sol panelde "Kimlik bilgileri"ni tıkladığınızda OAuth2 kimlik bilgilerine yönlendirilirsiniz.

7ad97432390f224c.png

Burada üst kısımdaki "Kimlik Bilgileri Oluştur"u tıklayıp "OAuth İstemci Kimliği"ni seçin. Ardından başka bir ekran açılır.

325a926431c8f16d.png

Uygulama türü için açılır listeden "Web uygulaması"nı seçin ve uygulama URI'nizi ("Yetkili JavaScript kaynakları" olarak bağlantı noktası da ekleyebilirsiniz) girin. Yetkilendirme pop-up ekranını kullanabilmek için "Yetkili yönlendirme URI'leri" bölümüne uygulamanızın ana makinesini sonunda "/login/google" ile birlikte eklemeniz gerekir. Yukarıdaki resimde, temel uygulama URI'm olarak http://localhost'u kullandığım görülmektedir.

"Oluştur" düğmesine bastıktan sonra, müşterilerinizin kimlik bilgilerini içeren bir pop-up pencere gösterilir.

e91adf03ec31cd15.png

Uygulamamızla kullanmak için daha sonra istemci kimliğine (ve isteğe bağlı olarak istemci gizli anahtarına) ihtiyacımız olacak.

Asistan uygulamasını çalıştırma

Uygulamayı başlatmadan önce bazı ortam değişkenlerini ayarlamamız gerekir. Uygulamanın temel işlevleri (ör. uçuş ve havalimanı olanakları sorgulama) için yalnızca uygulamayı alma hizmetine yönlendiren BASE_URL gerekir. Bu bilgiyi gcloud komutunu kullanarak alabiliriz .

Sanal makine SSH oturumunda şunu çalıştırın:

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

Beklenen çıktı (redaksiyonlu):

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

Uygulamanın daha gelişmiş özelliklerini (ör. uçuş rezervasyonu yapma ve uçuş değiştirme) kullanmak için Google Hesabımızla uygulamada oturum açmamız gerekir. Bu amaçla, İstemci Kimliğini Hazırlama bölümündeki OAuth istemci kimliğini kullanarak CLIENT_ID ortam değişkenini sağlamamız gerekir:

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

Beklenen çıktı (redaksiyonlu):

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

Artık uygulamamızı çalıştırabiliriz:

python run_app.py

Beklenen çıktı:

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)

Uygulamaya bağlanma

Sanal makinede çalışan uygulamaya bağlanmanın çeşitli yolları vardır. Örneğin, VPC'deki güvenlik duvarı kurallarını kullanarak sanal makinede 8081 numaralı bağlantı noktasını açabilir veya genel IP'ye sahip bir yük dengeleyici oluşturabilirsiniz. Burada, yerel bağlantı noktası 8080'i sanal makine bağlantı noktası 8081'e çeviren bir SSH tüneli kullanacağız.

Yerel makineden bağlanma

Yerel bir makineden bağlanmak istediğimizde SSH tüneli çalıştırmamız gerekir. Bu işlem gcloud compute ssh kullanılarak yapılabilir:

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

Beklenen çıktı:

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

Artık tarayıcıyı açıp http://localhost:8081 adresini kullanarak uygulamamıza bağlanabiliriz. Uygulama ekranını görmemiz gerekir.

c667b9013afac3f9.png

Cloud Shell'den bağlanma

Alternatif olarak, bağlanmak için Cloud Shell'i de kullanabiliriz. En üstteki "+" işaretini kullanarak başka bir Cloud Shell sekmesi açın.

4ca978f5142bb6ce.png

Yeni Cloud Shell sekmesinde, gcloud komutunu çalıştırarak sanal makinenize tünel oluşturmaya başlayın:

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

"Cannot assign requested address" (İstenen adres atanamıyor) hatası gösterilir. Lütfen bu hatayı dikkate almayın.

Beklenen çıktı:

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

Bu komut, Cloud Shell'inizde 8080 bağlantı noktasını açar. Bu bağlantı noktası, "Web önizlemesi" için kullanılabilir.

Cloud Shell'inizin sağ üst kısmındaki "Web önizlemesi" düğmesini tıklayın ve açılır menüden "8080 numaralı bağlantı noktasında önizle"yi seçin.

444fbf54dcd4d160.png

Uygulama arayüzü, web tarayıcınızda yeni bir sekmede açılır. "Cymbal Air Müşteri Hizmetleri Asistanı" sayfasını görebilirsiniz. Sayfanın adres çubuğunda, önizleme sayfasının URI'sini görüyoruz. Sondaki "/?authuser=0&redirectedPreviously=true" kısmını kaldırmamız gerekiyor.

389f0ae2945beed5.png

Ayrıca, URI'nin ilk bölümü ("https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/") tarayıcı penceresinde bırakılmalı ve "Yetkili JavaScript kaynakları" ile "Yetkili yönlendirme URI'leri" olarak sağlanmalıdır. Bu değerler, "İstemci Kimliğini Hazırlama" bölümünde oluşturulan kimlik bilgilerimiz için başlangıçta sağlanan http://localhost:8080 değerlerinin yerine veya bu değerlere ek olarak kullanılacaktır. Üstteki değer "https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev", alttaki değer ise "https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/login/google" şeklinde görünür.

2c37eeda0a7e2f80.png

Uygulamada oturum açma

Her şey ayarlandıktan ve uygulamanız açıldıktan sonra, kimlik bilgilerimizi sağlamak için uygulama ekranımızın sağ üst kısmındaki "Oturum aç" düğmesini kullanabiliriz. Bu isteğe bağlıdır ve yalnızca uygulamanın rezervasyon işlevini denemek istiyorsanız gereklidir.

a1f571371b957129.png

Kimlik bilgilerimizi seçebileceğimiz bir pop-up pencere açılır.

Uygulamada oturum açtıktan sonra uygulama hazır olur ve isteklerinizi pencerenin alt kısmındaki alana göndermeye başlayabilirsiniz.

Bu demoda, Cymbal Air müşteri hizmetleri asistanı tanıtılmaktadır. Cymbal Air, kurgusal bir yolcu havayoludur. Bu asistan, yolcuların uçuşlarını yönetmesine ve Cymbal Air'in San Francisco Uluslararası Havaalanı'ndaki (SFO) merkezi hakkında bilgi edinmesine yardımcı olan bir yapay zeka destekli chatbotdur.

Oturum açmadan (CLIENT_ID olmadan) aşağıdaki gibi kullanıcı sorularını yanıtlamaya yardımcı olabilir:

Denver'a bir sonraki uçuş ne zaman?

C28 kapısının çevresinde lüks mağazalar var mı?

A6 kapısının yakınında nereden kahve alabilirim?

Nereden hediye alabilirim?

Lütfen Denver'a 10:35'te kalkacak uçuş rezervasyonu yapın.

Uygulamada oturum açtığınızda uçuş rezervasyonu yapma veya size atanan koltuğun pencere kenarı mı yoksa koridor tarafı mı olduğunu kontrol etme gibi diğer özellikleri deneyebilirsiniz.

6e7758f707c67c3e.png

Uygulama, yanıt oluşturmak için en yeni Google temel modellerini kullanır ve operasyonel Cloud SQL veritabanındaki uçuşlar ve olanaklarla ilgili bilgilerle yanıtı zenginleştirir. Bu demo uygulaması hakkında daha fazla bilgiyi projenin GitHub sayfasında bulabilirsiniz.

9. Ortamı temizleme

Tüm görevler tamamlandığında ortamımızı temizleyebiliriz.

Cloud Run hizmetini silme

Cloud Shell'de şunu çalıştırın:

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

Beklenen konsol çıkışı:

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 hizmeti için hizmet hesabını silme

Cloud Shell'de şunu çalıştırın:

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

Beklenen konsol çıkışı:

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 örneğini silme

Laboratuvarı tamamladığınızda Cloud SQL örneğini silin.

Bağlantınız kesildiyse ve önceki tüm ayarlar kaybolduysa Cloud Shell'de proje ve ortam değişkenlerini tanımlayın:

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

Örneği silin:

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

Beklenen konsol çıkışı:

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

Artık sanal makinemizi kaldırabiliriz.

GCE sanal makinesini silme

Cloud Shell'de şunu çalıştırın:

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

Beklenen konsol çıkışı:

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 ve alma hizmeti için hizmet hesabını silin

Cloud Shell'de şunu çalıştırın:

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

Beklenen konsol çıkışı:

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

Codelab'i tamamladığınız için tebrik ederiz.

İşlediğimiz konular

  • Cloud SQL örneği oluşturma
  • Cloud SQL örneğine bağlanma
  • Üretken yapay zeka veritabanları alma hizmetini yapılandırma ve dağıtma
  • Dağıtılan hizmeti kullanarak örnek uygulama dağıtma

11. Anket

Bu eğitimi nasıl kullanacaksınız?

Sadece okuyun Okuyun ve alıştırmaları tamamlayın