Tworzenie aplikacji czatu opartej na LLM i RAG przy użyciu baz danych Cloud SQL i LangChain

1. Wprowadzenie

Z tego ćwiczenia w Codelabs dowiesz się, jak wdrożyć usługę GenAI Databases Retrieval Service i utworzyć przykładową interaktywną aplikację przy użyciu wdrożonego środowiska.

8727a44c8c402834.png

Więcej informacji o usłudze GenAI Retrieval Service i przykładowej aplikacji znajdziesz tutaj.

Wymagania wstępne

  • Podstawowa znajomość usługi Google Cloud Console
  • podstawowe umiejętności w zakresie interfejsu wiersza poleceń i Google Cloud Shell;

Czego się nauczysz

  • Jak utworzyć instancję Cloud SQL
  • Jak nawiązać połączenie z instancją
  • Jak skonfigurować i wdrożyć usługę GenAI Databases Retrieval Service
  • Jak wdrożyć przykładową aplikację przy użyciu wdrożonej usługi

Czego potrzebujesz

  • konto Google Cloud i projekt Google Cloud;
  • przeglądarki, np. Chrome;

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google. W każdej chwili możesz ją zaktualizować.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz podać swój identyfikator projektu (zwykle identyfikowany jako PROJECT_ID). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować kolejny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Po wykonaniu tej czynności nie można jej już zmienić. Pozostanie ona przez cały czas trwania projektu.
  • Jest jeszcze trzecia wartość, numer projektu, z którego korzystają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Cloud/interfejsów API. Ukończenie tego ćwiczenia z programowania nic nie kosztuje. Aby wyłączyć zasoby w celu uniknięcia naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Uruchamianie Cloud Shell

Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w chmurze.

W konsoli Google Cloud kliknij ikonę Cloud Shell na górnym pasku narzędzi:

55efc1aaa7a4d3ad.png

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:

7ffe5cbb04455448.png

Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. Wszystkie zadania w ramach tego ćwiczenia z programowania można wykonywać w przeglądarce. Nie musisz niczego instalować.

3. Zanim zaczniesz

Włącz API

W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:

Zwykle identyfikator projektu jest podany w nawiasach w wierszu poleceń w Cloud Shell, tak jak na ilustracji:

fa6ee779963405d5.png

gcloud config set project [YOUR-PROJECT-ID]

Następnie ustaw zmienną środowiskową PROJECT_ID na identyfikator Twojego projektu Google Cloud:

PROJECT_ID=$(gcloud config get-value project)

Włącz wszystkie niezbędne usługi:

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

Oczekiwane dane wyjściowe konsoli:

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. Tworzenie instancji Cloud SQL

Utwórz instancję Cloud SQL z włączoną obsługą wektorów.

Tworzenie hasła

Określ hasło domyślnego użytkownika bazy danych. Możesz zdefiniować własne hasło lub wygenerować je przy użyciu funkcji losowej.

export CLOUDSQL_PASSWORD=`openssl rand -hex 12`

Zanotuj wygenerowaną wartość hasła

echo $CLOUDSQL_PASSWORD

MySQL

Flagę cloudsql_vector możesz włączyć podczas tworzenia instancji. Obecnie obsługa wektorowa jest dostępna w 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

Oczekiwane dane wyjściowe konsoli (adres IP został usunięty):

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

Rozszerzenie pgvector jest dostępne w wersjach 11 lub nowszej.

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

Oczekiwane dane wyjściowe konsoli (adres IP został usunięty):

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

Po utworzeniu instancji musimy zdefiniować hasło domyślnego użytkownika instancji i sprawdzić, czy można się za jego pomocą połączyć. Gdy urządzenie będzie gotowe do połączenia, wpisz hasło w prośbie.

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

Oczekiwane dane wyjściowe konsoli:

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

Zakończ sesję psql:

exit

5. Przygotuj maszynę wirtualną GCE

Utwórz konto usługi

Ponieważ do wdrożenia usługi GenAI Databases Retrieval i hostowania przykładowej aplikacji użyjemy naszej maszyny wirtualnej, pierwszym krokiem będzie utworzenie konta usługi Google (GSA). Moduł Wyszukiwania Google będzie używany przez maszynę wirtualną GCE i będziemy musieli przyznać jej uprawnienia niezbędne do pracy z innymi usługami.

W wykonaniu 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"

Wdrażanie maszyny wirtualnej GCE

Utwórz maszynę wirtualną GCE w tym samym regionie i sieci VPC co instancja Cloud SQL.

Wykonaj w 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

Oczekiwane dane wyjściowe konsoli:

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

Autoryzuj maszynę wirtualną do nawiązywania połączenia z Cloud SQL

Musimy dodać publiczny adres IP naszej maszyny wirtualnej do listy autoryzowanych sieci naszej instancji Cloud SQL. W Cloud Shell wykonaj te czynności:

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

Oczekiwane dane wyjściowe konsoli:

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

Instalowanie klienta bazy danych

MySQL

Zainstaluj oprogramowanie klienckie MySQL we wdrożonej maszynie wirtualnej.

Połącz się z maszyną wirtualną:

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

Oczekiwane dane wyjściowe konsoli:

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

Zainstaluj oprogramowanie uruchamiające polecenie w maszynie wirtualnej:

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

Oczekiwane dane wyjściowe konsoli:

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

Zainstaluj oprogramowanie klienckie PostgreSQL na wdrożonej maszynie wirtualnej.

Połącz się z maszyną wirtualną:

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

Oczekiwane dane wyjściowe konsoli:

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

Zainstaluj oprogramowanie uruchamiające polecenie w maszynie wirtualnej:

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

Oczekiwane dane wyjściowe konsoli:

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

Łączenie z instancją

MySQL

Nawiąż połączenie z instancją główną z maszyny wirtualnej za pomocą MySQL.

Kontynuuj z otwartą sesją SSH do maszyny wirtualnej. Jeśli połączenie zostało rozłączone, połącz je ponownie, używając tego samego polecenia co powyżej.

Użyj wspomnianych wcześniej wartości $CLOUDSQL_PASSWORD i nazwy instancji, aby połączyć się z Cloud SQL z maszyny wirtualnej 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

Oczekiwane dane wyjściowe konsoli:

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

Wyjdź z sesji MySQL utrzymującej połączenie SSH:

exit

Oczekiwane dane wyjściowe konsoli:

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

PostgreSQL

połączyć się z instancją główną z maszyny wirtualnej za pomocą psql;

Kontynuuj z otwartą sesją SSH do maszyny wirtualnej. Jeśli połączenie zostało rozłączone, połącz się ponownie, używając tego samego polecenia co powyżej.

Użyj wspomnianych wcześniej wartości $CLOUDSQL_PASSWORD i nazwy instancji, aby połączyć się z PostgreSQL z maszyny wirtualnej 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"

Oczekiwane dane wyjściowe konsoli:

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

Wyjdź z sesji psql utrzymujące połączenie SSH:

exit

Oczekiwane dane wyjściowe konsoli:

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

6. Inicjowanie bazy danych

Wykorzystamy naszą kliencką maszynę wirtualną jako platformę do zapełnienia naszej bazy danych danymi i hostowania aplikacji. Pierwszym krokiem jest utworzenie bazy danych i wypełnienie jej danymi.

Utwórz bazę danych

MySQL

Utworzyć bazę danych o nazwie „assistantdemo”.

W sesji maszyny wirtualnej GCE wykonaj:

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

Oczekiwane dane wyjściowe konsoli (brak danych wyjściowych):

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

PostgreSQL

Utworzyć bazę danych o nazwie „assistantdemo”.

W sesji maszyny wirtualnej GCE wykonaj:

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

Oczekiwane dane wyjściowe konsoli:

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

Włącz rozszerzenie pgvector.

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

Oczekiwane dane wyjściowe konsoli (brak danych wyjściowych):

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

Przygotowywanie środowiska Pythona

Aby kontynuować, użyjemy przygotowanych skryptów Pythona z repozytorium GitHuba, ale zanim to zrobimy, musimy zainstalować wymagane oprogramowanie.

Wykonaj w maszynie wirtualnej GCE:

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

Oczekiwane dane wyjściowe konsoli:

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

Zweryfikuj wersję Pythona.

Wykonaj w maszynie wirtualnej GCE:

python -V

Oczekiwane dane wyjściowe konsoli:

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

Przygotowywanie pliku konfiguracji

Sklonuj repozytorium GitHub z kodem usługi pobierania i przykładowej aplikacji.

Wykonaj w maszynie wirtualnej GCE:

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

Oczekiwane dane wyjściowe konsoli:

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

Wykonaj w maszynie wirtualnej GCE:

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

Oczekiwane dane wyjściowe konsoli:

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

Wykonaj w maszynie wirtualnej GCE:

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

Oczekiwane dane wyjściowe konsoli:

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

Wypełnianie bazy danych

Wypełnij bazę przykładowym zbiorem danych. Pierwsze polecenie to dodanie wszystkich wymaganych pakietów do naszego wirtualnego środowiska Pythona, a drugie wypełnianie bazy danych danymi.

Wykonaj w maszynie wirtualnej GCE:

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

Oczekiwane dane wyjściowe konsoli (usunięto):

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. Wdrażanie usługi wyszukiwania w Cloud Run

Możemy teraz wdrożyć usługę pobierania w Cloud Run. Usługa odpowiada za pracę z bazą danych i wyodrębnianie z niej niezbędnych informacji na podstawie żądania z aplikacji AI.

Utwórz konto usługi

Utwórz konto usługi pobierania i przyznaj niezbędne uprawnienia.

Otwórz inną kartę Cloud Shell ze znakiem „+” na górze ekranu.

4ca978f5142bb6ce.png

Na nowej karcie Cloud Shell wykonaj te czynności:

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"

Oczekiwane dane wyjściowe konsoli:

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

Zamknij kartę przez wykonanie polecenia „exit” na karcie:

exit

Wdrażanie usługi wyszukiwania

Przejdź dalej w pierwszej karcie, w której łączysz usługę z maszyną wirtualną przez SSH, wdrażając usługę.

W sesji SSH maszyny wirtualnej wykonaj:

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

Oczekiwane dane wyjściowe konsoli:

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$

Weryfikowanie usługi

Teraz możemy sprawdzić, czy usługa działa prawidłowo i maszyna wirtualna ma dostęp do punktu końcowego. Do pobierania punktu końcowego usługi pobierania używamy narzędzia gcloud. Możesz też sprawdzić to ustawienie w konsoli Cloud i zastąpić w poleceniu curl ciąg "$(gcloud run services list –filter="(retrieval-service)") wartością, która się tam znajduje.

W sesji SSH maszyny wirtualnej wykonaj:

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

Oczekiwane dane wyjściowe konsoli:

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$

Jeśli widzisz komunikat „Hello World” oznacza to, że usługa działa i obsługuje żądania.

8. Wdrażanie przykładowej aplikacji

Po uruchomieniu usługi pobierania możemy wdrożyć przykładową aplikację, która będzie z niej korzystać. Aplikację można wdrożyć w maszynie wirtualnej lub w dowolnej innej usłudze, takiej jak Cloud Run czy Kubernetes, a nawet lokalnie na laptopie. Teraz pokażemy, jak wdrożyć go w maszynie wirtualnej.

Przygotowywanie środowiska

Nadal pracujemy nad naszą maszyną wirtualną przy użyciu tej samej sesji SSH. Aby uruchomić aplikację, musimy dodać moduły Pythona. Polecenie zostanie wykonane z katalogu aplikacji w tym samym środowisku wirtualnym Pythona.

W sesji SSH maszyny wirtualnej wykonaj:

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

Oczekiwane dane wyjściowe (usunięte):

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

Przygotuj identyfikator klienta

Aby korzystać z funkcji rezerwacji w aplikacji, musimy przygotować identyfikator klienta OAuth 2.0 za pomocą konsoli Cloud. Będzie to miało miejsce, gdy zalogujemy się w aplikacji, ponieważ funkcja rezerwacji używa danych logowania klienta do rejestrowania danych rezerwacji w bazie danych.

W konsoli Google Cloud otwórz Interfejsy API i usługi, a następnie kliknij „Ekran zgody OAuth”. i wybierz „Wewnętrzna”, użytkownika.

2400e5dcdb93eab8.png

Następnie naciśnij „Utwórz” i wykonaj instrukcje na następnym ekranie.

6c34d235156e571f.png

Musisz wypełnić wymagane pola, np. „Nazwa aplikacji”. i „Adres e-mail pomocy technicznej dla użytkowników”. Możesz też dodać domenę, która ma być widoczna na ekranie zgody, oraz w sekcji „Informacje kontaktowe dewelopera”

2b7cd51aff915072.png

Następnie naciskasz przycisk „Zapisz i kontynuuj” na dole strony.

d90c10c88fd347f9.png

Nie musisz tam niczego zmieniać, chyba że chcesz określić zakresy. Na koniec potwierdź, naciskając przycisk „Zapisz i kontynuuj”. ponownie. Spowoduje to skonfigurowanie ekranu zgody aplikacji.

Następnym krokiem jest utworzenie identyfikatora klienta. W panelu po lewej stronie kliknij „Dane logowania”. które prowadzą do danych logowania OAuth2.

7ad97432390f224c.png

W tym miejscu kliknij „Create Credentials” (Utwórz dane logowania). u góry i wybierz „Identyfikator klienta OAuth”. Następnie otworzy się kolejny ekran.

325a926431c8f16d.png

Wybierz „Aplikacja internetowa” i wpisz identyfikator URI aplikacji (oraz port – opcjonalnie) w polu „Autoryzowane źródła JavaScript”. Do pola „Autoryzowane identyfikatory URI przekierowania” musisz też dodać hosta aplikacji z „/login/google” aby móc użyć wyskakującego okienka autoryzacji. Na ilustracji powyżej widać, że moim podstawowym identyfikatorem URI aplikacji jest http://localhost.

Po naciśnięciu przycisku „Create” pojawi się wyskakujące okienko z danymi logowania klienta.

e91adf03ec31cd15.png

Identyfikator klienta (i opcjonalnie tajny klucz klienta) będzie później potrzebny do użycia w naszej aplikacji.

Uruchamianie aplikacji Asystenta

Przed uruchomieniem aplikacji musimy skonfigurować pewne zmienne środowiskowe. Podstawowe funkcje aplikacji, takie jak zapytanie o loty czy informacje o udogodnieniach na lotnisku, wymagają jedynie parametru BASE_URL, który kieruje aplikację do usługi pobierania. Można go pobrać za pomocą polecenia gcloud .

W sesji SSH maszyny wirtualnej wykonaj:

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

Oczekiwane dane wyjściowe (usunięte):

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

Aby korzystać z bardziej zaawansowanych funkcji aplikacji, takich jak rezerwowanie czy zmiana lotów, musimy zalogować się w aplikacji za pomocą naszego konta Google. W tym celu musimy udostępnić zmienną środowiskową CLIENT_ID za pomocą identyfikatora klienta OAuth z rozdziału Prepare Client ID:

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

Oczekiwane dane wyjściowe (usunięte):

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

Teraz możemy uruchomić aplikację:

python run_app.py

Oczekiwane dane wyjściowe:

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)

Łączenie z aplikacją

Z aplikacją działającą w maszynie wirtualnej możesz połączyć się na kilka sposobów. Możesz na przykład otworzyć port 8081 w maszynie wirtualnej, korzystając z reguł zapory sieciowej w VPC, lub utworzyć system równoważenia obciążenia z publicznym adresem IP. Użyjemy tunelu SSH do połączenia z maszyną wirtualną, które przetłumaczą lokalny port 8080 na port 8081 maszyny wirtualnej.

Łączę z komputera lokalnego

Aby połączyć się z komputera lokalnego, musimy uruchomić tunel SSH. Możesz to zrobić za pomocą gcloud compute ssh:

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

Oczekiwane dane wyjściowe:

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

Teraz możemy otworzyć przeglądarkę i użyć adresu http://localhost:8081, aby połączyć się z naszą aplikacją. Powinien wyświetlić się ekran aplikacji.

c667b9013afac3f9.png

Łączę z Cloud Shell

Do połączenia możemy też użyć Cloud Shell. Otwórz inną kartę Cloud Shell ze znakiem „+” na górze ekranu.

4ca978f5142bb6ce.png

Na nowej karcie Cloud Shell uruchom tunel do maszyny wirtualnej, wykonując polecenie gcloud:

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

Wyświetli się błąd „Nie można przypisać żądanego adresu”. – zignoruj go.

Oto oczekiwane dane wyjściowe:

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

Otwiera on port 8080 w Cloud Shell, którego można użyć do „podglądu w przeglądarce”.

Kliknij „Podgląd w przeglądarce”. w prawym górnym rogu Cloud Shell i z menu wybierz „Podejrzyj na porcie 8080”.

444fbf54dcd4d160.png

W przeglądarce otworzy się nowa karta z interfejsem aplikacji. Powinien wyświetlić się „Asystent obsługi klienta Cymbal Air”. stronę. Na pasku adresu strony widoczny jest identyfikator URI strony podglądu. Musimy usunąć część "/?authuser=0&redirectedPreviously=true" na końcu

389f0ae2945beed5.png

Użyj pierwszej części identyfikatora URI, np. „https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/”. należy zostawić w oknie przeglądarki i wpisać w polu „Autoryzowane źródła JavaScript”. i „Autoryzowane identyfikatory URI przekierowania” dla danych logowania utworzonych w polu „Prepare Client ID” (przygotowywanie identyfikatora klienta) zastępowanie lub dodanie rozdziałów do pierwotnie podanych wartości http://localhost:8080. Górna wartość wygląda tak: „https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev”. a niższy to „https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/login/google”.

2c37eeda0a7e2f80.png

Zaloguj się w aplikacji

Gdy wszystko jest skonfigurowane i aplikacja jest otwarta, możemy użyć przycisku „Zaloguj się” w prawym górnym rogu ekranu aplikacji w celu podania danych logowania. Jest to opcjonalne i wymagane tylko wtedy, gdy chcesz wypróbować funkcję rezerwacji w aplikacji.

a1f571371b957129.png

Otworzy się wyskakujące okienko, w którym można wybrać dane logowania.

Po zalogowaniu się aplikacja jest gotowa i możesz zacząć wysyłać żądania w polu u dołu okna.

Ta prezentacja przedstawia asystenta obsługi klienta Cymbal Air. Cymbal Air to fikcyjna linia lotnicza dla pasażerów. Asystent to czatbot AI, który pomaga podróżnym zarządzać lotami i wyszukiwać informacje o centrum Cymbal Air na międzynarodowym lotnisku San Francisco (SFO).

Bez logowania się (bez CLIENT_ID) możesz odpowiadać na pytania użytkowników, takie jak:

Kiedy jest następny lot do Denver?

Czy przy bramie C28 są jakieś luksusowe sklepy?

Gdzie kupię kawę w pobliżu bramki A6?

Gdzie mogę kupić prezent?

Zarezerwuj lot do Denver – odlot o 10:35

Po zalogowaniu się w aplikacji możesz wypróbować inne funkcje, takie jak rezerwowanie lotów lub sprawdzanie, czy przypisane do Ciebie miejsce to okno lub miejsce przy przejściu.

6e7758f707c67c3e.png

Aplikacja wykorzystuje najnowsze modele podstawowe Google do generowania odpowiedzi i rozszerzania ich o informacje o lotach i udogodnieniach z działającej bazy danych Cloud SQL. Więcej informacji o tej aplikacji demonstracyjnej znajdziesz na stronie projektu w GitHubie.

9. Wyczyść środowisko

Po wykonaniu wszystkich zadań możemy oczyścić środowisko.

Usuń usługę Cloud Run

Wykonaj w Cloud Shell:

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

Oczekiwane dane wyjściowe konsoli:

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

Usuwanie konta usługi Cloud Run

Wykonaj w Cloud Shell:

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

Oczekiwane dane wyjściowe konsoli:

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

Usuwanie instancji Cloud SQL

Po zakończeniu modułu zniszcz instancję Cloud SQL

W Cloud Shell zdefiniuj zmienne projektu i środowiskowego, jeśli konto jest odłączone i stracone są wszystkie poprzednie ustawienia:

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

Usuń instancję:

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

Oczekiwane dane wyjściowe konsoli:

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

Teraz możemy zniszczyć naszą maszynę wirtualną

Usuwanie maszyny wirtualnej GCE

Wykonaj w Cloud Shell:

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

Oczekiwane dane wyjściowe konsoli:

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

Usuwanie konta usługi maszyny wirtualnej GCE i usługi pobierania

Wykonaj w Cloud Shell:

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

Oczekiwane dane wyjściowe konsoli:

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

Gratulujemy ukończenia ćwiczeń z programowania.

Omówione zagadnienia

  • Jak utworzyć instancję Cloud SQL
  • Nawiązywanie połączenia z instancją Cloud SQL
  • Jak skonfigurować i wdrożyć usługę GenAI Databases Retrieval Service
  • Jak wdrożyć przykładową aplikację przy użyciu wdrożonej usługi

11. Ankieta

Jak wykorzystasz ten samouczek?

tylko do przeczytania. Przeczytaj go i wykonaj ćwiczenia