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 Functions を使用して makePalm 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 Functions の関数

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 の関数を定義します。この関数はテキスト入力をパラメータとして受け取り、入力の短い要約を返します。この関数は、生成されるテキストの創造性、多様性、流暢さなど、さまざまなパラメータを使用して生成プロセスを制御します。Cloud Functions の HTTP 関数はリクエスト オブジェクトを受け取り、レスポンスとしてモデルの要約を返します。

Google Cloud Editor を開きます。開くには、新しい 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 Editor を開き、Dockerfile ファイルの内容を編集します。PUBLIC_FUNCTION_URL 変数を Cloud Functions の関数の URL に置き換えます。

2958bb12343368a9.png

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

Docker イメージのビルドと保存には Google Artifact Registry を使用します。サーバーレス アーキテクチャでコンテナをデプロイするには、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 プロダクトのドキュメントをご覧ください。