1. はじめに
この Codelab では、GenAI Databases Retrieval Service をデプロイし、デプロイされた環境を使用してインタラクティブなサンプル アプリケーションを作成する方法を学びます。
GenAI Retrieval Service とサンプル アプリケーションについて詳しくは、こちらをご覧ください。
前提条件
- Google Cloud コンソールの基本的な知識
- コマンドライン インターフェースと Google Cloud Shell の基本的なスキル
学習内容
- AlloyDB クラスタをデプロイする方法
- AlloyDB に接続する方法
- GenAI Databases Retrieval Service の構成とデプロイ方法
- デプロイされたサービスを使用してサンプル アプリケーションをデプロイする方法
必要なもの
- Google Cloud アカウントと Google Cloud プロジェクト
- ウェブブラウザ(Chrome など)
2. 設定と要件
セルフペース型の環境設定
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。
- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_ID
と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
Cloud Shell を起動する
Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。
Google Cloud Console で、右上のツールバーにある Cloud Shell アイコンをクリックします。
プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。
この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働します。そのため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。この Codelab での作業はすべて、ブラウザ内から実行できます。インストールは不要です。
3. はじめに
API を有効にする
出力:
Cloud Shell で、プロジェクト ID が設定されていることを確認します。
通常、プロジェクト ID は、次の図に示すように、Cloud Shell のコマンド プロンプトのかっこ内に表示されます。
gcloud config set project [YOUR-PROJECT-ID]
次に、PROJECT_ID 環境変数を Google Cloud プロジェクト ID に設定します。
PROJECT_ID=$(gcloud config get-value project)
必要なサービスをすべて有効にします。
gcloud services enable alloydb.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
vpcaccess.googleapis.com \
aiplatform.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
run.googleapis.com \
iam.googleapis.com
想定される出力
student@cloudshell:~ (gleb-test-short-004)$ gcloud services enable alloydb.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.
Vertex AI モデルを使用するには、デフォルトのリージョンを us-central1 に設定します。詳しくは、地域別の制限事項をご覧ください。
gcloud config set compute/region us-central1
4. AlloyDB クラスタをデプロイする
AlloyDB クラスタを作成する前に、VPC でプライベート IP 範囲を割り振り、将来の AlloyDB インスタンスで使用できるようにする必要があります。その後、クラスタとインスタンスを作成できます。
プライベート IP 範囲を作成する
AlloyDB の VPC でプライベート サービス アクセスを構成する必要があります。ここでは、プロジェクトに「デフォルト」の VPC ネットワークがあり、すべてのアクションで使用されることを前提としています。
プライベート IP 範囲を作成します。
gcloud compute addresses create psa-range \
--global \
--purpose=VPC_PEERING \
--prefix-length=16 \
--description="VPC private service access" \
--network=default
割り振られた IP 範囲を使用してプライベート接続を作成します。
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range \
--network=default
想定されるコンソール出力:
student@cloudshell:~ (test-project-402417)$ gcloud compute addresses create psa-range \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --description="VPC private service access" \ --network=default Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/global/addresses/psa-range]. student@cloudshell:~ (test-project-402417)$ gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=psa-range \ --network=default Operation "operations/pssn.p24-4470404856-595e209f-19b7-4669-8a71-cbd45de8ba66" finished successfully. student@cloudshell:~ (test-project-402417)$
AlloyDB クラスタを作成する
デフォルト リージョンに AlloyDB クラスタを作成します。
export PGPASSWORD=`openssl rand -hex 12`
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION
想定されるコンソール出力:
student@cloudshell:~ (test-project-402417)$ export PGPASSWORD=`openssl rand -base64 12` export REGION=us-central1 export ADBCLUSTER=alloydb-aip-01 gcloud alloydb clusters create $ADBCLUSTER \ --password=$PGPASSWORD \ --network=default \ --region=$REGION Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4 Creating cluster...done.
後で使用できるように PostgreSQL のパスワードをメモしておきます。
echo $PGPASSWORD
想定されるコンソール出力:
student@cloudshell:~ (test-project-402417)$ echo $PGPASSWORD bbefbfde7601985b0dee5723
AlloyDB プライマリ インスタンスを作成する
クラスタの AlloyDB プライマリ インスタンスを作成します。
export REGION=us-central1
gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=2 \
--region=$REGION \
--cluster=$ADBCLUSTER
想定されるコンソール出力:
student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \ --instance-type=PRIMARY \ --cpu-count=2 \ --region=$REGION \ --availability-type ZONAL \ --cluster=$ADBCLUSTER Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721 Creating instance...done.
5. GCE 仮想マシンを準備する
サービス アカウントを作成する
VM を使用して GenAI Databases Retrieval サービスをデプロイし、サンプル アプリケーションをホストするため、最初のステップとして Google サービス アカウント(GSA)を作成します。GSA は GCE VM で使用されます。他のサービスと連携するために必要な権限を GSA に付与する必要があります。
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/alloydb.viewer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
GCE VM をデプロイする
AlloyDB クラスタと同じリージョンと VPC に GCE VM を作成します。
Cloud Shell で、次のコマンドを実行します。
export ZONE=us-central1-a
gcloud compute instances create instance-1 \
--zone=$ZONE \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com
想定されるコンソール出力:
student@cloudshell:~ (test-project-402417)$ export ZONE=us-central1-a student@cloudshell:~ (test-project-402417)$ gcloud compute instances create instance-1 \ --zone=$ZONE \ --scopes=https://www.googleapis.com/auth/cloud-platform --service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com 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
Postgres クライアントをインストールする
デプロイされた VM に PostgreSQL クライアント ソフトウェアをインストールします。
VM に接続します。
gcloud compute ssh instance-1 --zone=us-central1-a
想定されるコンソール出力:
student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a Updating project ssh metadata...working..Updated [https://www.googleapis.com/compute/v1/projects/test-project-402417]. Updating project ssh metadata...done. Waiting for SSH key to propagate. Warning: Permanently added 'compute.5110295539541121102' (ECDSA) to the list of known hosts. Linux instance-1 5.10.0-26-cloud-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. student@instance-1:~$
VM 内でソフトウェア実行コマンドをインストールします。
sudo apt-get update
sudo apt-get install --yes postgresql-client
想定されるコンソール出力:
student@instance-1:~$ sudo apt-get update sudo apt-get install --yes postgresql-client Get:1 https://packages.cloud.google.com/apt google-compute-engine-bullseye-stable InRelease [5146 B] Get:2 https://packages.cloud.google.com/apt cloud-sdk-bullseye InRelease [6406 B] Hit:3 https://deb.debian.org/debian bullseye InRelease Get:4 https://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB] Get:5 https://packages.cloud.google.com/apt google-compute-engine-bullseye-stable/main amd64 Packages [1930 B] Get:6 https://deb.debian.org/debian bullseye-updates InRelease [44.1 kB] Get:7 https://deb.debian.org/debian bullseye-backports InRelease [49.0 kB] ...redacted... update-alternatives: using /usr/share/postgresql/13/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode Setting up postgresql-client (13+225) ... Processing triggers for man-db (2.9.4-2) ... Processing triggers for libc-bin (2.31-13+deb11u7) ...
インスタンスに接続する
psql を使用して VM からプライマリ インスタンスに接続します。
VM への SSH セッションは開いたままにします。接続が切断された場合は、上記と同じコマンドを使用して再度接続します。
先ほどメモした $PGASSWORD とクラスタ名を使用して、GCE VM から AlloyDB に接続します。
export PGPASSWORD=<Noted password>
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"
想定されるコンソール出力:
student@instance-1:~$ export PGPASSWORD=P9... student@instance-1:~$ export REGION=us-central1 student@instance-1:~$ export ADBCLUSTER=alloydb-aip-01 student@instance-1:~$ export INSTANCE_IP=export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)") student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres sslmode=require" psql (13.11 (Debian 13.11-0+deb11u1), server 14.7) WARNING: psql major version 13, server major version 14. Some psql features might not work. SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. postgres=>
SSH 接続を維持したまま psql セッションを終了します。
exit
想定されるコンソール出力:
postgres=> exit student@instance-1:~$
6. データベースを初期化する
クライアント VM をプラットフォームとして使用し、データベースにデータを入力してアプリケーションをホストします。最初のステップは、データベースを作成してデータを入力することです。
データベースを作成する
「assistantdemo」という名前のデータベースを作成します。
GCE VM セッションで、次のコマンドを実行します。
psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo"
想定されるコンソール出力:
student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo" CREATE DATABASE student@instance-1:~$
pgVector 拡張機能を有効にします。
psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "CREATE EXTENSION vector"
想定されるコンソール出力:
student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "CREATE EXTENSION vector" CREATE EXTENSION student@instance-1:~$
Python をインストールする
次は GitHub リポジトリから準備した Python スクリプトを使用しますが、その前に必要なソフトウェアをインストールする必要があります。
GCE VM で次のコマンドを実行します。
sudo apt install -y git build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
curl https://pyenv.run | bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
exec "$SHELL"
想定されるコンソール出力:
student@instance-1:~$ sudo apt install -y git build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev curl \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev curl https://pyenv.run | bash echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc exec "$SHELL" Reading package lists... Done Building dependency tree... Done Reading state information... Done xz-utils is already the newest version (5.2.5-2.1~deb11u1). The following additional packages will be installed: ...
Python 3.11.x をインストールします。
GCE VM で次のコマンドを実行します。
pyenv install 3.11.6
pyenv global 3.11.6
python -V
想定されるコンソール出力:
student@instance-1:~$ pyenv install 3.11.6 pyenv global 3.11.6 python -V Downloading Python-3.11.6.tar.xz... -> https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tar.xz Installing Python-3.11.6... Installed Python-3.11.6 to /home/student/.pyenv/versions/3.11.6 Python 3.11.6 student@instance-1:~$
データベースにデータを入力する
Retrieval サービスとサンプル アプリケーションのコードを含む GitHub リポジトリのクローンを作成します。
GCE VM で次のコマンドを実行します。
git clone https://github.com/GoogleCloudPlatform/genai-databases-retrieval-app.git
想定されるコンソール出力:
student@instance-1:~$ git clone https://github.com/GoogleCloudPlatform/genai-databases-retrieval-app.git Cloning into 'genai-databases-retrieval-app'... remote: Enumerating objects: 525, done. remote: Counting objects: 100% (336/336), done. remote: Compressing objects: 100% (201/201), done. remote: Total 525 (delta 224), reused 179 (delta 135), pack-reused 189 Receiving objects: 100% (525/525), 46.58 MiB | 16.16 MiB/s, done. Resolving deltas: 100% (289/289), done.
構成ファイルを準備します。
GCE VM で次のコマンドを実行します。
cd genai-databases-retrieval-app/retrieval_service
cp example-config.yml config.yml
sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml
sed -i s/my-password/$PGPASSWORD/g config.yml
sed -i s/my_database/assistantdemo/g config.yml
sed -i s/my-user/postgres/g config.yml
cat config.yml
想定されるコンソール出力:
student@instance-1:~$ cd genai-databases-retrieval-app/retrieval_service cp example-config.yml config.yml sed -i s/127.0.0.1/$INSTANCE_IP/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 host: 0.0.0.0 # port: 8080 datastore: # Example for AlloyDB kind: "postgres" host: 10.65.0.2 # port: 5432 database: "assistantdemo" user: "postgres" password: "P9..."
サンプル データセットをデータベースに入力します。
GCE VM で次のコマンドを実行します。
pip install -r requirements.txt
python run_database_init.py
想定されるコンソール出力(秘匿化済み):
student@instance-1:~/genai-databases-retrieval-app/retrieval_service$ pip install -r requirements.txt python run_database_init.py Collecting asyncpg==0.28.0 (from -r requirements.txt (line 1)) Obtaining dependency information for asyncpg==0.28.0 from https://files.pythonhosted.org/packages/77/a4/88069f7935b14c58534442a57be3299179eb46aace2d3c8716be199ff6a6/asyncpg-0.28.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata Downloading asyncpg-0.28.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.3 kB) Collecting fastapi==0.101.1 (from -r requirements.txt (line 2)) ... database init done. student@instance-1:~/genai-databases-retrieval-app/retrieval_service$
7. 拡張機能サービスを Cloud Run にデプロイする
これで、拡張機能サービスを Cloud Run にデプロイできるようになりました。
サービス アカウントを作成する
拡張機能サービス用のサービス アカウントを作成し、必要な権限を付与します。
上部の「+」記号を選択して、別の Cloud Shell タブを開きます。
新しい Cloud Shell タブで、次のコマンドを実行します。
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"
想定されるコンソール出力:
student@cloudshell:~ (gleb-test-short-003)$ gcloud iam service-accounts create retrieval-identity Created service account [retrieval-identity].
タブに実行コマンド「exit」を入力して、タブを閉じます。
exit
拡張機能サービスをデプロイする
サービスをデプロイし SSH を使用して VM に接続している最初のタブで続けます。
VM SSH セッションで、次のコマンドを実行します。
cd ~/genai-databases-retrieval-app
gcloud alpha run deploy retrieval-service \
--source=./retrieval_service/\
--no-allow-unauthenticated \
--service-account retrieval-identity \
--region us-central1 \
--network=default \
--quiet
想定されるコンソール出力:
student@instance-1:~/genai-databases-retrieval-app$ gcloud alpha run deploy retrieval-service \ --source=./retrieval_service/\ --no-allow-unauthenticated \ --service-account retrieval-identity \ --region us-central1 \ --network=default This command is equivalent to running `gcloud builds submit --tag [IMAGE] ./retrieval_service/` and `gcloud run deploy retrieval-service --image [IMAGE]` Building using Dockerfile and deploying container to Cloud Run service [retrieval-service] in project [gleb-test-short-003] region [us-central1] X Building and deploying... Done. ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/6ebe74bf-3039-4221-b2e9-7ca8fa8dad8e?project=1012713954588]. ✓ Creating Revision... ✓ Routing traffic... Setting IAM Policy... Completed with warnings: Setting IAM policy failed, try "gcloud beta run services remove-iam-policy-binding --region=us-central1 --member=allUsers --role=roles/run.invoker retrieval-service" Service [retrieval-service] revision [retrieval-service-00002-4pl] has been deployed and is serving 100 percent of traffic. Service URL: https://retrieval-service-onme64eorq-uc.a.run.app student@instance-1:~/genai-databases-retrieval-app$
サービスを確認する
これで、サービスが正しく実行され、VM がエンドポイントにアクセスできるかどうかを確認できます。
VM SSH セッションで、次のコマンドを実行します。
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
想定されるコンソール出力:
student@instance-1:~/genai-databases-retrieval-app$ curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(retrieval-service)" --format="value(URL)") {"message":"Hello World"}student@instance-1:~/genai-databases-retrieval-app$
「Hello World」というメッセージが表示されたら、サービスが稼働し、リクエストを処理していることを意味します。
8. サンプル アプリケーションをデプロイする
拡張機能サービスを稼働させたので、このサービスを利用するサンプル アプリケーションをデプロイできます。アプリケーションは、VM や Cloud Run、Kubernetes などの他のサービス、またはノートパソコン上のローカルにデプロイできます。ここでは、VM にデプロイする方法について説明します。
環境を準備する
引き続き VM 上で作業します。必要なモジュールを Python に追加する必要があります。
VM SSH セッションで、次のコマンドを実行します。
cd ~/genai-databases-retrieval-app/llm_demo
pip install -r requirements.txt
想定される出力(秘匿化済み):
student@instance-1:~$ cd ~/genai-databases-retrieval-app/llm_demo pip install -r requirements.txt Collecting fastapi==0.104.0 (from -r requirements.txt (line 1)) Obtaining dependency information for fastapi==0.104.0 from https://files.pythonhosted.org/packages/db/30/b8d323119c37e15b7fa639e65e0eb7d81eb675ba166ac83e695aad3bd321/fastapi-0.104.0-py3-none-any.whl.metadata Downloading fastapi-0.104.0-py3-none-any.whl.metadata (24 kB) ...
アシスタント アプリケーションを実行する
次に、アプリケーションを開始します。
VM SSH セッションで、次のコマンドを実行します。
export BASE_URL=$(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
export ORCHESTRATION_TYPE=langchain-tools
python run_app.py
想定される出力(秘匿化済み):
student@instance-1:~/genai-databases-retrieval-app/langchain_tools_demo$ export BASE_URL=$(gcloud run services list --filter="(retrieval-service)" --format="value(URL)") student@instance-1:~/genai-databases-retrieval-app/langchain_tools_demo$ python main.py INFO: Started server process [28565] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)
アプリケーションに接続する
VM で実行されているアプリケーションに接続するには、いくつかの方法があります。たとえば、VPC のファイアウォール ルールを使用して VM でポート 8081 を開いたり、パブリック IP を使用してロードバランサを作成したりできます。ここでは、ローカルポート 8081 を VM ポート 8081 に変換する VM への SSH トンネルを使用します。
上部の「+」記号を選択して、別の Cloud Shell タブを開きます。
新しい Cloud Shell タブで、gcloud コマンドを実行して VM へのトンネリングを開始します。
gcloud compute ssh instance-1 --zone=us-central1-a -- -NL 8080:localhost:8081
「Cannot assign requested address」エラーが表示されますが、無視してください。
想定される出力は次のとおりです。
student@cloudshell:~ gcloud compute ssh instance-1 --zone=us-central1-a -- -NL 8080:localhost:8081 bind [::1]:8081: Cannot assign requested address
Cloud Shell でポート 8081 が開き、「ウェブでプレビュー」に使用できます。
Cloud Shell の右上にある [ウェブでプレビュー] ボタンをクリックし、プルダウン メニューから [ポート 8080 でプレビュー] を選択します。
ウェブブラウザで新しいタブが開き、アプリケーションのインターフェースが表示されます。[Cymbal Air Customer Service Assistant] ページが表示され、ページの下部でアシスタントに質問を投稿できます。
このデモでは、Cymbal Air のカスタマー サービス アシスタントを紹介します。Cymbal Air は架空の航空会社です。このアシスタントは、旅行者がフライトを管理したり、サンフランシスコ国際空港(SFO)にある Cymbal Air のハブに関する情報を検索したりできるようにする AI の chatbot です。
次のようなユーザーの疑問の解決に役立ちます。
デンバー行きの次のフライトはいつですか?
D50 ゲートの周辺に高級ショップはありますか?
A6 ゲート付近でコーヒーを飲める場所はどこですか?
ギフトはどこで購入できますか?
このアプリケーションは、最新の Google 基盤モデルを使用して、レスポンスを生成し、運用中の AlloyDB データベースのフライトと設備に関する情報で拡張しています。このデモ アプリケーションについて詳しくは、プロジェクトの GitHub ページをご覧ください。
9. 環境をクリーンアップする
これですべてのタスクが完了したので、環境をクリーンアップできます。
Cloud Run サービスを削除する
Cloud Shell で、次のコマンドを実行します。
gcloud run services delete retrieval-service --region us-central1
想定されるコンソール出力:
student@cloudshell:~ (gleb-test-short-004)$ gcloud run services delete retrieval-service --region us-central1 Service [retrieval-service] will be deleted. Do you want to continue (Y/n)? Y Deleting [retrieval-service]...done. Deleted service [retrieval-service].
Cloud Run サービスのサービス アカウントを削除します。
Cloud Shell で、次のコマンドを実行します。
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet
想定されるコンソール出力:
student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project) Your active configuration is: [cloudshell-222] student@cloudshell:~ (gleb-test-short-004)$ gcloud iam service-accounts delete retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet deleted service account [retrieval-identity@gleb-test-short-004.iam.gserviceaccount.com] student@cloudshell:~ (gleb-test-short-004)$
ラボの終了時に AlloyDB インスタンスとクラスタを破棄します。
AlloyDB クラスタとすべてのインスタンスを削除する
クラスタは force オプションで破棄され、クラスタに属するすべてのインスタンスも削除されます。
接続が切断され、以前の設定がすべて失われた場合は、Cloud Shell でプロジェクトと環境変数を定義します。
gcloud config set project <your project id>
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export PROJECT_ID=$(gcloud config get-value project)
クラスタを削除します。
gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force
想定されるコンソール出力:
student@cloudshell:~ (test-project-001-402417)$ gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force All of the cluster data will be lost when the cluster is deleted. Do you want to continue (Y/n)? Y Operation ID: operation-1697820178429-6082890a0b570-4a72f7e4-4c5df36f Deleting cluster...done.
AlloyDB バックアップを削除する
クラスタの AlloyDB バックアップをすべて削除します。
for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done
想定されるコンソール出力:
student@cloudshell:~ (test-project-001-402417)$ for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done Operation ID: operation-1697826266108-60829fb7b5258-7f99dc0b-99f3c35f Deleting backup...done.
これで、VM を破棄できます。
GCE VM を削除する
Cloud Shell で、次のコマンドを実行します。
export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
--zone=$ZONE \
--quiet
想定されるコンソール出力:
student@cloudshell:~ (test-project-001-402417)$ export GCEVM=instance-1 export ZONE=us-central1-a gcloud compute instances delete $GCEVM \ --zone=$ZONE \ --quiet Deleted
GCE VM と Retrieval サービスのサービス アカウントを削除します。
Cloud Shell で、次のコマンドを実行します。
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet
想定されるコンソール出力:
student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project) gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet Your active configuration is: [cloudshell-222] deleted service account [compute-aip@gleb-test-short-004.iam.gserviceaccount.com] student@cloudshell:~ (gleb-test-short-004)$
10.完了
以上で、この Codelab は完了です。
学習した内容
- AlloyDB クラスタをデプロイする方法
- AlloyDB に接続する方法
- GenAI Databases Retrieval Service の構成とデプロイ方法
- デプロイされたサービスを使用してサンプル アプリケーションをデプロイする方法
11. アンケート
出力: