PaLM Vertex AI API と Google Cloud Storage を使用したコンテンツ要約用の Cloud Functions の関数

1. はじめに

この Codelab では、Python の Cloud Functions の関数として Vertex AI のテキスト生成用大規模言語モデル(text-bison)を使用し、Google Cloud Storage にアップロードされたコンテンツの要約を実行する手順について説明します。使用されるサービスは次のとおりです。

  • Vertex AI PaLM API: Google AI の PaLM Text Bison モデルへのアクセスを可能にする大規模言語モデル(LLM)API。
  • Cloud Functions: サーバーを管理することなく関数を実行するためのサーバーレス プラットフォーム。
  • Cloud Storage: 非構造化データを保存するためのマネージド サービス。
  • Cloud Logging: ロギングデータの保存、検索、分析、モニタリング、アラート発信を可能にするフルマネージド サービス。

作成するアプリの概要

Palm API を使用してテキストを要約する Python Cloud Functions の関数としてデプロイされるアプリケーションを作成します。

2. 必要なもの

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

3. 始める前に

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

51622c00acec2fa.png

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

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

export REGION=us-central1

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 API は、継続的な会話を必要とせずに、1 回の API レスポンスで完了できるタスクに最適です。そのために Cloud Functions の関数を作成しましょう。

Cloud Shell で次のコマンドを実行してリポジトリのクローンを作成し、プロジェクトに移動します(前のセクションで開いたものと同じターミナルを使用します)。

git clone https://github.com/rominirani/genai-apptemplates-googlecloud

cd genai-apptemplates-googlecloud/summarization-gcs-cloudfunction

このプロジェクトで重要なフォルダは、summarization-gcs-cloudfunction です。

ターミナルから Cloud Shell エディタを開き、github から Cloud Shell マシンにクローンが作成されたプロジェクト フォルダの内容を確認します。

このフォルダには次の 2 つのファイルが含まれています。

  1. main.py Python ファイルでは、Vertex AI テキスト生成モデルを使用してテキスト入力の短い要約を生成する、シンプルな HTTP Cloud Functions の関数を定義します。この関数はテキスト入力をパラメータとして受け取り、入力の短い要約を返します。この関数は、生成されるテキストの創造性、多様性、流暢さなど、さまざまなパラメータを使用して生成プロセスを制御します。Cloud Functions の HTTP 関数はリクエスト オブジェクトを受け取り、レスポンスとしてモデルの要約を返します。
  2. requirements.txt ファイルにはパッケージの依存関係があります。
  • functions-framework==3.関数が Functions Framework の最新機能とバグ修正を使用するようにします。
  • google-cloud-aiplatform: Vertex AI テキスト生成モデルを使用するために必要です。
  • google-cloud-storage: Google Cloud Storage でストレージ バケットを作成するために必要です。
  • google-cloud-logging: ログの生成に必要です。

5. 関数をデプロイする

  1. 2 つの Cloud Storage バケットを作成します。
  • 最初のバケット: $BUCKET_NAME バケットは、要約するファイルをアップロードするために使用されます。次のように、バケット名を格納する環境変数を作成します。
export BUCKET_NAME='Your Bucket Name'
  • 2 番目のバケット: $BUCKET_NAME-summaries バケットは、要約ファイルの保存に使用されます。
  • gsutil コマンドを使用してバケットを作成します。
  • gsutil は、コマンドラインから Cloud Storage にアクセスできる Python アプリケーションです。gsutil を使用すると、バケットやオブジェクトの幅広い管理作業を行うことができます。
  • mb は「Make Bucket」を表します。
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. これで、関数をデプロイする準備が整いました。ただし、その前に、Cloud Storage バケットのサービス アカウントに Pub/Sub パブリッシャーのロールがあることを確認してください。
  2. Google Cloud Storage に移動し、左側のペインで [設定] をクリックします。

8ce34eb05153abf2.png

  1. [サービス アカウント] をコピーします。確認します。
  2. Google Cloud コンソールのナビゲーション メニューから [IAM と管理] を開きます。

c5a7103e90689684.png

  1. [権限] タブで [アクセスを許可] をクリックし、メモしたサービス アカウント ID を入力し、[新しいプリンシパル] セクションで [ロール] で [Pub/Sub パブリッシャー] を選択します。[保存] をクリックします。

11c2df774fa740a9.png

  1. このソースを Cloud Functions にデプロイします。Cloud Shell ターミナルから次のコマンドを実行します。
  2. このプロジェクトの summarization-gcs-cloudfunction フォルダにいることを確認します。
  3. 次のコマンドを実行します。
gcloud functions deploy summarizeArticles \
--gen2 \
--runtime=python311 \
--source=. \
--region=$REGION \
--project=$PROJECT_ID \
--entry-point=summarize_gcs_object \
--trigger-bucket=$BUCKET_NAME \
--set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION \
--max-instances=1 \
--quiet
  1. Google Cloud コンソールで、[Cloud Functions] に移動します。

先ほど作成した vertex-ai-function の Cloud Functions 関数と公開 URL のリストが表示されます。この関数を使用して GCS トリガーを作成します。

6. 関数を呼び出す

ファイルが $BUCKET_NAME バケット*にアップロードされると、GCS トリガーが関数を呼び出します。$BUCKET_NAME"-summaries バケットには、同じ名前の要約ファイルが含まれています。

始める前に、summarization-gcs-cloudfunction フォルダからサンプルの story.md ファイルをローカルマシンに保存します。

  1. Google Cloud コンソールで、[Cloud Storage] に移動します。
  2. バケットのリストから $BUCKET_NAME バケットを開きます。
  3. [ファイルをアップロード] をクリックして story.md ファイルを選択します。

summarizeArticles 関数がトリガーされ、ファイルの内容の要約が開始されます。

  1. 左側のナビゲーション パネルで [バケット] をクリックします。
  2. $BUCKET_NAME"-summaries バケットを開きます。

story.md ファイルには、ファイルの内容の概要が含まれます。

7. クリーンアップ

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

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。
  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
  4. プロジェクトを残して一部のリソースのみを削除する場合は、Cloud Storage コンソールに移動して [バケット] をクリックし、削除するバケットをリストから選択し、[削除] をクリックします。
  5. Cloud Functions に移動して Cloud Functions の関数を削除することもできます。関数のリストから削除する関数を確認し、[削除] をクリックします。

8. 完了

これで、Vertex AI テキスト生成 LLM をプログラムで使用して、データのテキスト要約を実行することができました。利用可能なモデルの詳細については、Vertex AI LLM プロダクトのドキュメントをご覧ください。