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

1. Wprowadzenie

Z tego ćwiczenia dowiesz się, jak wdrożyć usługę pobierania danych z baz danych GenAI i utworzyć przykładową aplikację interaktywną przy użyciu wdrożonego środowiska.

8727a44c8c402834.png

Więcej informacji o usłudze pobierania informacji z generatywnej AI i przykładowej aplikacji znajdziesz tutaj.

Wymagania wstępne

  • Podstawowa znajomość konsoli Google Cloud
  • Podstawowe umiejętności w zakresie interfejsu wiersza poleceń i Cloud Shell w Google Cloud

Czego się nauczysz

  • Jak utworzyć instancję Cloud SQL
  • Łączenie się z instancją
  • Konfigurowanie i wdrażanie usługi pobierania danych z baz danych GenAI
  • Jak wdrożyć przykładową aplikację za pomocą wdrożonej usługi

Czego potrzebujesz

  • Konto Google Cloud i projekt Google Cloud
  • przeglądarka, np. Chrome;

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu.
  • Warto wiedzieć, że istnieje też trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego laboratorium nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchamianie Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce. Nie musisz niczego instalować.

3. Zanim zaczniesz

Włącz API

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

Identyfikator projektu jest zwykle wyświetlany w nawiasach w wierszu poleceń w Cloud Shell, jak pokazano na ilustracji:

fa6ee779963405d5.png

gcloud config set project [YOUR-PROJECT-ID]

Następnie ustaw zmienną środowiskową PROJECT_ID na identyfikator 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

utworzyć instancję Cloud SQL z włączoną obsługą wektorów;

Utwórz hasło

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

export CLOUDSQL_PASSWORD=`openssl rand -hex 12`

Zanotuj wygenerowaną wartość hasła.

echo $CLOUDSQL_PASSWORD

MySQL

Możesz włączyć flagę cloudsql_vector podczas tworzenia instancji. Obecnie obsługujemy wektory w MySQL w wersjach 8.0.36 i 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ł zamazany):

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 oferowane w wersjach >= 11.

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ł zamazany):

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 dla domyślnego użytkownika w instancji i sprawdzić, czy możemy się połączyć za pomocą tego hasła. Gdy pojawi się prośba o połączenie, wpisz hasło.

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. Przygotowywanie maszyny wirtualnej GCE

Utwórz konto usługi

Ponieważ będziemy używać maszyny wirtualnej do wdrażania usługi GenAI Databases Retrieval i hostowania przykładowej aplikacji, pierwszym krokiem jest utworzenie konta usługi Google (GSA). Konto usługi Google będzie używane przez maszynę wirtualną GCE i musimy przyznać mu uprawnienia niezbędne do pracy z innymi usługami.

W Cloud Shell wykonaj to polecenie:

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.

W Cloud Shell wykonaj to polecenie:

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

Autoryzowanie maszyny wirtualnej do nawiązywania połączenia z Cloud SQL

Musimy dodać publiczny adres IP maszyny wirtualnej do listy autoryzowanych sieci instancji Cloud SQL. W Cloud Shell wykonaj to polecenie:

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 klienta MySQL 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ąc w maszynie wirtualnej to polecenie:

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 klienta 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ąc w maszynie wirtualnej to polecenie:

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 się z instancją

MySQL

Połącz się z instancją podstawową z maszyny wirtualnej za pomocą MySQL.

Kontynuuj otwartą sesję SSH na maszynie wirtualnej. Jeśli połączenie zostało przerwane, nawiąż je ponownie za pomocą tego samego polecenia co powyżej.

Użyj wcześniej zanotowanego hasła $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, zachowując połączenie SSH:

exit

Oczekiwane dane wyjściowe konsoli:

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

PostgreSQL

Połącz się z instancją podstawową z maszyny wirtualnej za pomocą psql.

Kontynuuj otwartą sesję SSH na maszynie wirtualnej. Jeśli połączenie zostało przerwane, nawiąż je ponownie za pomocą tego samego polecenia co powyżej.

Użyj zapisanego wcześniej hasła $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, zachowując połączenie SSH:

exit

Oczekiwane dane wyjściowe konsoli:

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

6. Inicjowanie bazy danych

Użyjemy naszej maszyny wirtualnej klienta jako platformy do wypełnienia bazy danych danymi i hostowania aplikacji. Pierwszym krokiem jest utworzenie bazy danych i wypełnienie jej danymi.

Utwórz bazę danych

MySQL

Utwórz bazę danych o nazwie „assistantdemo”.

W sesji maszyny wirtualnej GCE wykonaj to polecenie:

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

Utwórz bazę danych o nazwie „assistantdemo”.

W sesji maszyny wirtualnej GCE wykonaj to polecenie:

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

Przygotuj środowisko Pythona

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

Na maszynie wirtualnej GCE wykonaj te czynności:

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

Sprawdź wersję Pythona.

Na maszynie wirtualnej GCE wykonaj te czynności:

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 z GitHuba repozytorium z kodem usługi pobierania i przykładowej aplikacji.

Na maszynie wirtualnej GCE wykonaj te czynności:

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

Na maszynie wirtualnej GCE wykonaj te czynności:

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

Na maszynie wirtualnej GCE wykonaj te czynności:

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ę danych przykładowym zbiorem danych. Pierwsze polecenie dodaje wszystkie wymagane pakiety do naszego wirtualnego środowiska Pythona, a drugie polecenie wypełnia naszą bazę danych danymi.

Na maszynie wirtualnej GCE wykonaj te czynności:

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

Oczekiwane dane wyjściowe konsoli (z redakcją):

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 pobierania w Cloud Run

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

Utwórz konto usługi

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

Otwórz kolejną kartę Cloud Shell, klikając znak „+” u góry.

4ca978f5142bb6ce.png

Na nowej karcie Cloud Shell wykonaj to polecenie:

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ę, wpisując na niej polecenie „exit”:

exit

Wdrażanie usługi pobierania

Na pierwszej karcie, na której masz połączenie z maszyną wirtualną przez SSH, wdróż usługę.

W sesji SSH maszyny wirtualnej wykonaj to polecenie:

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$

Weryfikacja usługi

Teraz możemy sprawdzić, czy usługa działa prawidłowo, a 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ć tę wartość w konsoli Cloud i zastąpić nią w poleceniu curl ciąg "$(gcloud run services list –filter="(retrieval-service)".

W sesji SSH maszyny wirtualnej wykonaj to polecenie:

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 zobaczymy komunikat „Hello World”, oznacza to, że nasza usługa działa i obsługuje żądania.

8. Wdrażanie przykładowej aplikacji

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

Przygotuj środowisko

Nadal pracujemy na maszynie wirtualnej w ramach tej samej sesji SSH. Aby uruchomić aplikację, musimy dodać kilka modułów Pythona. Polecenie zostanie wykonane w katalogu aplikacji w tym samym wirtualnym środowisku Pythona.

W sesji SSH maszyny wirtualnej wykonaj to polecenie:

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

Oczekiwane dane wyjściowe (z redakcją):

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. Dzieje się to podczas logowania się w aplikacji, ponieważ rezerwacja wykorzystuje dane logowania klientów do zapisywania danych rezerwacji w bazie danych.

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

2400e5dcdb93eab8.png

Następnie kliknij „Utwórz” i postępuj zgodnie z instrukcjami na następnym ekranie.

6c34d235156e571f.png

Musisz wypełnić wymagane pola, takie jak „Nazwa aplikacji” i „Adres e-mail pomocy dla użytkowników”. Możesz też dodać domenę, która ma się wyświetlać na ekranie zgody, oraz „Informacje kontaktowe dewelopera”.

2b7cd51aff915072.png

Następnie kliknij przycisk „Zapisz i kontynuuj” u dołu strony, aby przejść do następnej strony.

d90c10c88fd347f9.png

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

Następnym krokiem jest utworzenie identyfikatora klienta. W panelu po lewej stronie kliknij „Dane logowania”, aby przejść do danych logowania OAuth2.

7ad97432390f224c.png

U góry kliknij „Utwórz dane logowania” i wybierz „Identyfikator klienta OAuth”. Następnie otworzy się kolejny ekran.

325a926431c8f16d.png

Z menu typu aplikacji wybierz „Aplikacja internetowa” i wpisz identyfikator URI aplikacji (oraz opcjonalnie port) jako „Autoryzowane źródła JavaScript”. Aby móc korzystać z wyskakującego okienka autoryzacji, musisz dodać do sekcji „Autoryzowane identyfikatory URI przekierowania” hosta aplikacji z dodanym na końcu ciągiem „/login/google”. Na powyższym obrazie widać, że jako podstawowy identyfikator URI aplikacji użyłem adresu http://localhost.

Po kliknięciu przycisku „Utwórz” pojawi się wyskakujące okienko z danymi logowania klienta.

e91adf03ec31cd15.png

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

Uruchom aplikację Asystent

Zanim uruchomisz aplikację, musisz skonfigurować zmienne środowiskowe. Podstawowe funkcje aplikacji, takie jak wyszukiwanie lotów i udogodnień na lotnisku, wymagają tylko zmiennej BASE_URL, która kieruje aplikację do usługi pobierania. Możemy go uzyskać za pomocą polecenia gcloud .

W sesji SSH maszyny wirtualnej wykonaj to polecenie:

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

Oczekiwane dane wyjściowe (z redakcją):

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 i zmienianie lotów, musimy zalogować się w niej za pomocą konta Google. W tym celu musimy podać zmienną środowiskową CLIENT_ID, używając identyfikatora klienta OAuth z rozdziału Przygotowywanie identyfikatora klienta:

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

Oczekiwane dane wyjściowe (z redakcją):

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)

Połącz się z aplikacją

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

Nawiązywanie połączenia z urządzenia lokalnego

Jeśli chcemy połączyć się z maszyny lokalnej, musimy uruchomić tunel SSH. Możesz to zrobić za pomocą polecenia 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 aplikacją. Powinien pojawić się ekran aplikacji.

c667b9013afac3f9.png

Nawiązywanie połączenia z Cloud Shell

Możemy też użyć Cloud Shell do połączenia. Otwórz kolejną kartę Cloud Shell, klikając znak „+” u góry.

4ca978f5142bb6ce.png

Na nowej karcie Cloud Shell uruchom tunel do maszyny wirtualnej, wykonując to 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 port 8080 w Cloud Shell, który można wykorzystać w przypadku „Podglądu w przeglądarce”.

W prawym górnym rogu Cloud Shell kliknij przycisk „Podgląd w przeglądarce”, a następnie z menu wybierz „Podejrzyj na porcie 8080”.

444fbf54dcd4d160.png

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

389f0ae2945beed5.png

Pierwszą część identyfikatora URI, np. „https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/”, pozostaw w oknie przeglądarki i podaj jako „Autoryzowane źródła JavaScript” i „Autoryzowane identyfikatory URI przekierowania” w przypadku danych logowania utworzonych w rozdziale „Przygotowywanie identyfikatora klienta”, zastępując lub dodając pierwotnie podane wartości http://localhost:8080. Górna wartość będzie wyglądać tak: „https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev”, a dolna tak: „https://8080-cs-35704030349-default.cs-us-east1-vpcf.cloudshell.dev/login/google”.

2c37eeda0a7e2f80.png

Logowanie w aplikacji

Gdy wszystko będzie skonfigurowane i aplikacja będzie otwarta, możemy użyć przycisku „Zaloguj się” w prawym górnym rogu ekranu aplikacji, aby podać dane 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żemy wybrać dane logowania.

Po zalogowaniu aplikacja jest gotowa do użycia. Możesz zacząć wpisywać prośby w polu u dołu okna.

Prezentacja asystenta obsługi klienta Cymbal Air. Cymbal Air to fikcyjne linie lotnicze. Asystent to chatbot AI, który pomaga podróżnym zarządzać lotami i wyszukiwać informacje o węźle Cymbal Air na międzynarodowym lotnisku w San Francisco (SFO).

Bez logowania (bez CLIENT_ID) może pomóc w odpowiedzi na pytania użytkowników, takie jak:

Kiedy jest następny lot do Denver?

Czy w pobliżu bramy C28 znajdują się jakieś luksusowe sklepy?

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

Gdzie mogę kupić prezent?

Zarezerwuj lot do Denver z wylotem o 10:35

Po zalogowaniu się w aplikacji możesz wypróbować inne funkcje, takie jak rezerwowanie lotów czy sprawdzanie, czy przypisane Ci miejsce jest przy oknie czy przy przejściu.

6e7758f707c67c3e.png

Aplikacja korzysta z najnowszych modeli podstawowych Google do generowania odpowiedzi i wzbogaca je o informacje o lotach i udogodnieniach z operacyjnej bazy danych Cloud SQL. Więcej informacji o tej aplikacji demonstracyjnej znajdziesz na stronie projektu w GitHubie.

9. Zwalnianie miejsca w środowisku

Gdy wszystkie zadania zostaną wykonane, możemy zwolnić miejsce w naszym środowisku.

Usuwanie usługi Cloud Run

W Cloud Shell wykonaj to polecenie:

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 dla usługi Cloud Run

W Cloud Shell wykonaj to polecenie:

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 ćwiczenia usuń instancję Cloud SQL.

W Cloud Shell zdefiniuj projekt i zmienne środowiskowe, jeśli połączenie zostało przerwane i wszystkie poprzednie ustawienia zostały utracone:

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 usunąć maszynę wirtualną.

Usuwanie maszyny wirtualnej GCE

W Cloud Shell wykonaj to polecenie:

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 

Usuń konto usługi dla maszyny wirtualnej GCE i usługi pobierania.

W Cloud Shell wykonaj to polecenie:

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 ćwiczenia.

Omówione zagadnienia

  • Jak utworzyć instancję Cloud SQL
  • Jak połączyć się z instancją Cloud SQL
  • Konfigurowanie i wdrażanie usługi pobierania danych z baz danych GenAI
  • Jak wdrożyć przykładową aplikację za pomocą wdrożonej usługi

11. Ankieta

Jak zamierzasz korzystać z tego samouczka?

Tylko przeczytaj Przeczytaj i wykonaj ćwiczenia