Vertex AI と Svelte Kit を使用したテキスト Summarizer アプリ

1. はじめに

この Codelab では、Svelte Kit フレームワークで Vertex AI 大規模言語モデル(text-bison)API を使用してテキストの要約を行うことができるウェブアプリを構築する手順を紹介します。使用されるサービスと技術スタックのリストは次のとおりです。

  1. Svelte Kit: Svelte をベースに構築されたウェブ アプリケーション フレームワーク。
  2. Vertex AI PaLM 2 API: Google AI の PaLM 2 モデルへのアクセスを提供する大規模言語モデル(LLM)API。
  3. Cloud Functions: サーバーを管理することなく関数を実行できるサーバーレス プラットフォーム。
  4. Cloud Run: コンテナ化されたアプリケーションを実行するためのサーバーレス プラットフォーム。

作成するアプリの概要

作成する

  • Python Cloud 関数を使用して Palm API 呼び出しを行います。
  • Cloud Functions を介して Vertex AI API とやり取りするためのユーザー インターフェース用の Svelte ウェブ アプリケーション
  • 上記のアプリをサーバーレスでデプロイする Cloud Run サービス

2. 必要なもの

  • ブラウザ(ChromeFirefox など)
  • 課金を有効にした Google Cloud プロジェクト

3. 始める前に

  1. Google Cloud コンソールのプロジェクト選択ページで、Google Cloud プロジェクトを選択または作成します。
  2. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
  3. Cloud Shell(Google Cloud で動作するコマンドライン環境)を使用して、Google Cloud サービスを操作します。gcloud コマンドとその使用方法については、ドキュメントをご覧ください。Cloud コンソールで、[Cloud Shell をアクティブにする] をクリックします。

51622c00acec2fa.png

プロジェクトが設定されていない場合は、次のコマンドを使用して設定します。

gcloud config set project <YOUR_PROJECT_ID>
  1. Cloud Shell ターミナルから次のコマンドを実行して、必要なすべての API が有効になっていることを確認します。
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
  1. Cloud Shell ターミナルから次のコマンドを実行して、REGION と PROJECT_ID の環境変数を作成します。
export PROJECT_ID=<your project id>

export REGION=asia-south1

4. Vertex AI API を呼び出す Cloud 関数

Python Cloud Functions を作成し、この関数で Vertex AI API を呼び出します。

新しいサービス アカウントの作成

Cloud Shell ターミナルで次のコマンドを実行して、新しいサービス アカウントを作成します。

gcloud iam service-accounts create vertex-service-acc

プロジェクトとリソースへのアクセス権を付与するには、サービス アカウントにロールを付与します。

gcloud projects add-iam-policy-binding ${PROJECT_ID} --member="serviceAccount:vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com" --role=roles/ml.developer

サービス アカウントのロールを使用して、そのサービス アカウントを他のリソースに関連付けることができるロールを Google アカウントに付与します。USER_EMAIL は、Google アカウントのメール ID に置き換えます。

gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

Python 関数の作成

テキスト向けの PaLM 2 は、継続的な会話を必要とせずに、1 回の API レスポンスで完了できるタスクに最適です。それでは、Cloud Functions 関数を作成しましょう。

Cloud Shell を使用して新しいディレクトリを作成し、そのディレクトリに移動します。(前のセクションで開いたのと同じターミナルを使用します)。

mkdir vertex-ai-functions

cd vertex-ai-functions

Python Cloud Functions を記述する main.py ファイルと、依存関係を保存する requirements.txt ファイルを作成します。

touch main.py requirements.txt

この Python ファイルは、Vertex AI テキスト生成モデルを使用してテキスト入力の短い要約を生成する簡単な HTTP Cloud Functions 関数を定義します。この関数は、テキスト入力をパラメータとして受け取り、入力の短い要約を返します。この関数は、生成されるテキストの創造性、多様性、流暢さなど、生成プロセスを制御するためにさまざまなパラメータを使用します。HTTP Cloud Functions はリクエスト オブジェクトを受け取り、モデルの要約をレスポンスとして返します。

Google Cloud エディタを開きます。これを開くには、新しい Google Cloud コンソール タブを開き、[CLOUD SHELL をアクティブにする] ボタンをクリックします。ターミナルが読み込まれたら、下の図に示すように、[エディタを開く] ボタンをすばやくクリックします。

8e501bd2c41d11b8.png

エディタを開くと、main.py ファイルが表示されます。その内容を、このリポジトリのリンクにあるコードに置き換えます。コードの説明はコードのコメントとして含まれています。まとめると、このコードは Vertex AI を使用してテキスト入力の短い要約を生成する簡潔な方法を提供します。

requirements.txt ファイルには、functions-framework==3.* というパッケージの依存関係があります。関数が Functions Framework の最新の機能とバグの修正を使用するようにします。google-cloud-aiplatform: Vertex AI テキスト生成モデルを使用するために必要です。

requirements.txt ファイルに次を追加します。

functions-framework==3.*
google-cloud-aiplatform

Cloud Functions にデプロイする

次に、このソースを Cloud Functions にデプロイします。Cloud Shell ターミナルから次のコマンドを実行します。

gcloud functions deploy vertex-ai-function \
--gen2 \
--runtime=python311 \
--region=${REGION} \
--source=. \
--entry-point=hello_vertex \
--trigger-http \
--allow-unauthenticated \
--max-instances=30

検索バーを使用して、Cloud Functions コンソールに移動します。

43a6b247098a9edb.png

これにより、作成した vertex-ai-function Cloud Functions が一覧表示され、関数のページに公開 URL が表示されます。これを使用して、フロントエンドと Vertex AI API を接続します。この URL を保存します。基盤となる Cloud Run サービスで未認証アクセスを許可する必要がある場合もあります。セキュリティ上の理由から、認証済みサービスの使用をおすすめします。

5. フロントエンドをビルドしてデプロイする

このアプリには、Google Cloud Functions を介して Vertex AI API を操作するためのフロントエンド インターフェースが付属しています。それでは、作成してみましょう。

リポジトリのクローンを作成して Dockerfile を設定する

ルート ディレクトリに移動し、git リポジトリのクローンを作成します。

cd ~/

git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git

cd  vertex-summarizer-svelte

このアプリケーションを実行するには、Dockerfile に PUBLIC_FUNCTION_URL 環境変数を追加する必要があります。この URL は、前のセクションで作成して保存した Cloud Functions の URL です。

Cloud エディタを開き、Dockerfile ファイルの内容を編集します。PUBLIC_FUNCTION_URL 変数を Cloud Functions の関数の URL に置き換えます。

2958bb12343368a9.png

フロントエンドを Cloud Run にデプロイする

Google Artifact Registry を使用して Docker イメージをビルドし、保存します。Cloud Run は、サーバーレス アーキテクチャでコンテナをデプロイするために使用されます。

Cloud Shell ターミナルで次のコマンドを実行して、Artifact Registry リポジトリを作成します。

gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}

Artifact Registry リポジトリ URL の環境変数を作成します。

export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image

Docker コンテナをビルドし、Artifact Registry リポジトリのロケーションでタグ付けします。Docker イメージにリポジトリ名をタグ付けすると、イメージを特定の場所に push するように docker push コマンドが構成されます。

docker build . -t ${DOCKER_URL}

イメージを Artifact Registry に push します。

docker push ${DOCKER_URL}

Docker コンテナを Cloud Run にデプロイします。

gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}

Vertex Summarizer が起動しました。URL は Cloud Shell に表示されます。Vertex AI をお楽しみください。🤖

cd94442961bb5308.gif

6. クリーンアップ

この投稿で使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。
  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
  4. プロジェクトを残して Cloud Run サービスのみを削除する場合は、こちらの手順に沿って操作します。
  5. Cloud Functions の関数を削除するだけの場合や、アクセス権を取り消すだけの場合は、こちらから操作できます。

7. 完了

おめでとうございます!Vertex AI PaLM2 API を使用して、テキストの要約をプログラマティックに実行し、Svelte ウェブアプリを構築して Cloud Functions にデプロイしました。使用可能なモデルの詳細については、Vertex AI LLM プロダクトのドキュメントをご覧ください。