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

1. はじめに

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

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

作成するアプリの概要

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

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 for Text は、継続的な会話を必要とせずに、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 Text Generation Model を使用してテキスト入力の簡単な要約を生成する単純な HTTP Cloud Functions 関数を定義します。この関数はテキスト入力をパラメータとして受け取り、入力の簡単な要約を返します。この関数は、生成されるテキストの創造性、多様性、流暢性など、さまざまなパラメータを使用して生成プロセスを制御します。HTTP Cloud Functions はリクエスト オブジェクトを受け取り、モデルの概要をレスポンスとして返します。
  2. requirements.txt ファイルにパッケージの依存関係が含まれています。
  • functions-framework==3.: 関数で Functions フレームワークの最新の機能とバグ修正が使用されるようにします。
  • google-cloud-aiplatform: Vertex AI Text Generation Model を使用するのに必要です。
  • 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 プロダクトのドキュメントをご覧ください。