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

1. 簡介

在本程式碼研究室中,您將瞭解如何使用 Python 中的雲端函式,透過 Vertex AI 大型語言模型生成文字 ( text-bison),摘要 Google Cloud Storage 中上傳的內容。使用的服務包括:

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

建構項目

您將建立以 Python Cloud Function 形式部署的應用程式,並使用 PaLM API 摘要文字。

2. 需求條件

  • Chrome 或 Firefox 瀏覽器
  • 已啟用計費功能的 Google Cloud 雲端專案

3. 事前準備

  1. 在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。
  2. 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用計費功能。
  3. 確認已啟用所有必要 API (Cloud Storage API、Vertex AI API、Cloud Functions 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 Function

我們將建立 Python Cloud Function,並在這個函式中叫用 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 非常適合用於可透過單一 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 Text Generation Model 產生文字輸入內容的簡短摘要。這項函式會將文字輸入內容做為參數,並傳回輸入內容的簡短摘要。這項函式會使用各種參數來控制生成程序,例如生成文字的創意度、多樣性和流暢度。HTTP Cloud 函式會接受要求物件,並以回應形式傳回模型的摘要。
  2. requirements.txt 檔案有套件依附元件:
  • functions-framework==3.:確保函式使用 Functions Framework 的最新功能和錯誤修正。
  • google-cloud-aiplatform:使用 Vertex AI Text Generation Model 時必須安裝。
  • google-cloud-storage:在 Google Cloud Storage 中建立儲存空間值區時需要這個角色。
  • google-cloud-logging:產生記錄檔時必須使用。

5. 部署函式

  1. 建立兩個 Cloud Storage bucket:
  • 第一個值區:$BUCKET_NAME 值區會用於上傳要製作摘要的檔案。建立環境變數,儲存 Bucket 名稱,如下所示:
export BUCKET_NAME='Your Bucket Name'
  • 第二個 bucket:$BUCKET_NAME-summaries bucket 將用於儲存摘要檔案。
  • 我們會使用 gsutil 指令建立值區:
  • gsutil 是一種 Python 應用程式,可讓您透過指令列存取 Cloud Storage,您可以使用 gsutil 執行多種值區和物件管理工作。
  • mb 代表「建立 Bucket」
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. 現在可以部署函式了。但在此之前,請先確認 Cloud Storage Bucket 的服務帳戶是否具備 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 函式及其公開網址。我們會使用這個函式建立 GCS 觸發條件。

6. 叫用函式

檔案上傳至 $BUCKET_NAME bucket 時,GCS 觸發條件會叫用函式。$BUCKET_NAME"-summaries bucket 包含名稱相同的摘要檔案。

開始前,請將 summarization-gcs-cloudfunction 資料夾中的範例 story.md 檔案儲存至本機。

  1. 前往 Google Cloud 控制台中的 Cloud Storage。
  2. 從 bucket 清單中開啟 $BUCKET_NAME bucket。
  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,然後從函式清單中勾選要刪除的函式,並點選「DELETE」,即可刪除 Cloud Function。

8. 恭喜

恭喜!您已成功以程式輔助方式,使用 Vertex AI Text Generation LLM 對資料執行文字摘要。如要進一步瞭解可用的模型,請參閱 Vertex AI LLM 產品說明文件。