Cloud 函式使用 PaLM Vertex AI API 和 Google Cloud Storage 提供內容摘要

1. 簡介

在這個程式碼研究室中,您可以找到使用 Vertex AI 大型語言模型 ( text-bison) 做為 Python 雲端函式的步驟,針對透過 Google Cloud Storage 上傳的內容執行摘要。目前使用的服務如下:

  • Vertex AI PaLM API:一種大型語言模型 (LLM) API,提供 Google AI 的 PaLM Text Bison 模型。
  • Cloud Functions:不必管理伺服器的無伺服器平台即可執行函式。
  • Cloud Storage:儲存非結構化資料的代管服務,
  • Cloud Logging:全代管服務,可讓您儲存、搜尋、分析、監控記錄資料,以及接收快訊通知。

建構項目

您將建立以 Python Cloud 函式部署的應用程式,以便使用 Palm API 產生文字摘要。

2. 需求條件

  • 瀏覽器,例如 ChromeFirefox
  • 已啟用計費功能的 Google Cloud 專案

3. 事前準備

  1. Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案
  2. 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用帳單功能
  3. 請確認已啟用所有必要的 API,包括 Cloud Storage API、Vertex AI API、Cloud Function API 和 Cloud Logging
  4. 您將使用 Cloud Shell,這是在 Google Cloud 中執行的指令列環境。如要查看 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 函式

我們會建立 Python Cloud 函式,並在這個函式中叫用 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 適用於可透過單一 API 回應完成的工作,無需持續對話。現在就來建立 Cloud 函式。

在 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 檔案定義了一個簡單的 HTTP Cloud 函式,該函式使用 Vertex AI 文字產生模型來產生文字輸入內容的簡短摘要。這個函式會將文字輸入做為參數,並傳回輸入內容的簡短摘要。這個函式會使用各種參數來控制產生過程,例如產生文字的創造力、多樣性和流暢度。HTTP Cloud 函式接受要求物件,並傳回模型的摘要做為回應。
  2. requirements.txt 檔案具有套件依附元件:
  • functions-framework==3.:確保函式使用 Functions Framework 的最新功能和錯誤修正。
  • google-cloud-aiplatform:如要使用 Vertex AI 文字產生模型,此為必要選項。
  • google-cloud-storage::如要在 Google Cloud Storage 中建立儲存空間值區,此為必要選項。
  • google-cloud-logging:產生記錄的必要欄位。

5. 部署函式

  1. 建立兩個 Cloud Storage 值區:
  • 第一個值區:$BUCKET_NAME 值區將用於上傳檔案來提供摘要。建立環境變數來儲存值區名稱,如下所示:
export BUCKET_NAME='Your Bucket Name'
  • 第二個值區:$BUCKET_NAME-summaries 值區將用於儲存摘要檔案。
  • 我們會使用 gsutil 指令建立值區:
  • gsutil 是一種 Python 應用程式,可讓您透過指令列存取 Cloud Storage,您可以使用 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 發布者」角色做為「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 函式 Cloud 函式,並顯示其公開網址。我們會使用此函式建立 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. 在左側導覽窗格中,點選「Buckets」(值區)。
  2. 開啟 $BUCKET_NAME"-summaries 值區。

story.md 檔案含有檔案內容摘要。

7. 清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取本文中所用資源的費用,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「管理資源」頁面。
  2. 在專案清單中選取要刪除的專案,然後按一下「刪除」。
  3. 在對話方塊中輸入專案 ID,然後按一下「關閉」以刪除專案。
  4. 如要保留專案,並只刪除部分資源,請前往 Cloud Storage 控制台,點選「值區」,然後在清單中勾選要刪除的值區,然後點選「刪除」。
  5. 您也可以刪除 Cloud 函式,方法是前往 Cloud Functions,並從函式清單中勾選要刪除的函式,然後按一下「刪除」。

8. 恭喜

恭喜!您已成功透過程式輔助方式,使用 Vertex AI 文字生成大型語言模型,為資料產生文字摘要。如要進一步瞭解可用的模型,請參閱 Vertex AI LLM 產品說明文件