採用 Vertex AI 和 Svelte Kit 的文字 Summarizer 應用程式

1. 簡介

在本程式碼實驗室中,我列出了建構網頁應用程式的步驟,讓您在 Svelte Kit 框架中,使用 Vertex AI 大型語言模型進行文字生成 ( text-bison) API,執行文字摘要作業。使用的服務和技術堆疊如下:

  1. Svelte Kit:以 Svelte 為基礎建構的網頁應用程式架構。
  2. Vertex AI PaLM 2 API:大型語言模型 (LLM) API,可存取 Google AI 的 PaLM 2 模型。
  3. Cloud Functions:無伺服器平台,可執行函式,不必管理伺服器。
  4. Cloud Run:無伺服器平台,用於執行容器化應用程式。

建構項目

您將建立

  • Python Cloud 函式用於叫用 Palm API
  • Svelte 網頁應用程式,做為與 Vertex AI API 互動的使用者介面 (透過 Cloud Function)
  • 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 函式

我們將建立 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 2 非常適合透過單一 API 回應完成的工作,不需要持續對話。現在來建立 Cloud 函式。

使用 Cloud Shell 建立新目錄,然後前往該目錄。(使用上一節開啟的終端機):

mkdir vertex-ai-functions

cd vertex-ai-functions

建立 main.py 檔案來編寫 Python Cloud Function,並建立 requirements.txt 檔案來儲存依附元件。

touch main.py requirements.txt

這個 Python 檔案定義了簡單的 HTTP Cloud 函式,可使用 Vertex AI Text Generation 模型,生成文字輸入內容的簡短摘要。這項函式會將文字輸入內容做為參數,並傳回輸入內容的簡短摘要。這項函式會使用各種參數來控制生成程序,例如生成文字的創意、多樣性和流暢度。HTTP Cloud 函式會接受要求物件,並以回應形式傳回模型的摘要。

開啟 Google Cloud 編輯器。如要開啟這個編輯器,請開啟新的 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 Function,並在函式頁面中提供公開網址。我們會使用這個檔案連結前端和 Vertex AI API。請儲存這個網址,您可能也必須允許未經驗證的存取要求,存取底層的 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 環境變數。這個網址是先前建立並儲存的 Cloud 函式網址。

開啟 Cloud Editor,然後編輯 Dockerfile 檔案的內容。將 PUBLIC_FUNCTION_URL 變數換成 Cloud 函式網址。

2958bb12343368a9.png

將前端部署至 Cloud Run

我們會使用 Google Artifact Registry 建構及儲存 Docker 映像檔。Cloud Run 用於在無伺服器架構中部署容器。

在 Cloud Shell 終端機中執行下列指令,建立 Artifact Registry 存放區:

gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}

為 Artifact Registry 存放區網址建立環境變數。

export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image

建構 Docker 容器,並使用 Artifact Registry 存放區位置標記容器。使用存放區名稱標記 Docker 映像檔可設定 docker push 指令,將映像檔推送至特定位置。

docker build . -t ${DOCKER_URL}

將映像檔推送至 Artifact Registry。

docker push ${DOCKER_URL}

將 Docker 容器部署至 Cloud Run。

gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}

耶!Vertex Summarizer 已經啟動並執行。網址會顯示在 Cloud Shell 中,請盡情探索及使用 Vertex AI 🤖。

cd94442961bb5308.gif

6. 清理

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

  1. 在 Google Cloud 控制台中前往「管理資源」頁面。
  2. 在專案清單中選取要刪除的專案,然後按一下「刪除」
  3. 在對話方塊中輸入專案 ID,然後按一下「關閉」刪除專案
  4. 如要保留專案,但只刪除 Cloud Run 服務,請按照這裡的步驟操作。
  5. 如要刪除 Cloud Function 或撤銷存取權,請前往這個頁面操作

7. 恭喜

恭喜!您已成功使用 Vertex AI PaLM2 API,以程式輔助方式執行文字摘要作業、建構 Svelte 網頁應用程式,並部署至 Cloud Functions。如要進一步瞭解可用模型,請參閱 Vertex AI LLM 產品說明文件