使用 Gemini AI 即時通訊應用程式,根據即時通訊對話內容回答問題

這則教學課程示範如何搭配使用 Vertex AI 和 Gemini 的生成式 AI 功能,建立 Google Chat 擴充應用程式,並依據 Chat 聊天室的對話記錄回答問題。Chat 應用程式使用 Google Workspace Events API 和 Pub/Sub,來辨識及回答 Chat 聊天室中張貼的問題,即使未提及也一樣。

Chat 應用程式會將聊天室中的所有訊息做為資料來源和知識庫:當使用者提出問題時,Chat 應用程式會檢查先前分享的答案,然後分享這些資訊。如果找不到任何答案,則表示無法回答。在每個答案上,使用者可以按一下配件動作按鈕,@提及聊天室管理員並要求提供答案。藉由使用 Gemini AI,Google Chat 應用程式可在其新增的聊天室中持續訓練對話,進而調整及擴充知識庫。

以下說明 Chat 應用程式在員工新手上路和支援聊天室中的運作方式:

  • 提及 AI 知識助理應用程式會將其新增至聊天室。
    圖 1. 小利將 AI 知識助理 Chat 應用程式加入 Chat 聊天室。
  • Dana 提出問題。
    圖 2. Dana 詢問公司是否提供公開演講訓練。
  • AI 知識助理 Chat 應用程式可以回答問題。
    圖 3. AI 知識助理 Chat 應用程式會提示 Vertex AI 和 Gemini,根據 Chat 聊天室的對話記錄回答 Dana 的問題,然後分享答案。

必要條件

目標

  • 建構 Chat 應用程式,使用生成式 AI 技術,根據 Chat 聊天室對話中分享的知識回答問題。
  • 使用生成式 AI:
    • 偵測及回答員工問題。
    • 持續從 Chat 聊天室中的持續對話中學習。
  • 即使未直接在 Chat 應用程式中傳送訊息,也能即時收聽並回覆 Chat 聊天室中的訊息。
  • 將訊息寫入 Firestore 資料庫,並從資料庫讀取訊息。
  • 在找不到問題解答時,提及聊天室管理員,協助在 Chat 聊天室中進行協作。

架構

下圖顯示 Google Workspace 的架構,以及 AI 知識助理 Chat 應用程式使用的 Google Cloud 資源。

AI 知識助理 Chat 應用程式的架構圖

AI 知識助理 Chat 應用程式的運作方式如下:

  • 使用者將 AI 知識助理 Chat 應用程式新增至 Chat 聊天室:

    1. Chat 應用程式會提示將該應用程式新增至 Chat 聊天室的使用者,設定驗證和授權作業。

    2. Chat 應用程式會透過呼叫 Chat API 中的 spaces.messages.list 方法擷取聊天室的訊息,然後將擷取的訊息儲存在 Firestore 資料庫中。

    3. Chat 應用程式會呼叫 Google Workspace Events API 中的 subscriptions.create 方法,開始監聽聊天室中的訊息等事件。訂閱的通知端點是 Pub/Sub 主題,會使用 Eventarc 將事件轉送至 Chat 應用程式。

    4. Chat 應用程式會在聊天室中發布簡介訊息。

  • Chat 聊天室中的使用者張貼訊息:

    1. Chat 應用程式會從 Pub/Sub 主題即時接收訊息。

    2. Chat 應用程式會將訊息新增至 Firestore 資料庫。

      如果使用者稍後編輯或刪除訊息,Chat 應用程式會即時收到更新或刪除事件,然後在 Firestore 資料庫中更新或刪除訊息。

    3. Chat 應用程式透過 Gemini 將訊息傳送至 Vertex AI:

      1. 該提示會指示 Vertex AI 搭配 Gemini 檢查訊息是否包含問題。如果是,Gemini 會根據儲存在 Firestore 中的 Chat 聊天室訊息記錄回答問題,然後 Google Chat 應用程式會將訊息傳送至 Chat 聊天室。如果沒有,請不要回覆。

      2. 如果 Vertex AI with Gemini 回答問題,Chat 應用程式會使用應用程式驗證來呼叫 Chat API 中的 spaces.messages.create 方法,藉此發布答案。

        如果搭配 Gemini 的 Vertex AI 無法回答問題,Chat 應用程式會發布一則訊息,說明 Chat 聊天室記錄中沒有該問題的答案。

        訊息一律會附上可供使用者點選的附加動作按鈕,這會導致 Chat 應用程式 @提及聊天室管理員,要求他們回覆。

  • Chat 應用程式會收到來自 Google Workspace Events API 的生命週期通知,通知的 Chat 聊天室訂閱即將到期:

    1. Chat 應用程式會在 Google Workspace Event API 中呼叫 subscriptions.patch 方法,以傳送訂閱續訂要求。
  • Chat 應用程式已從 Chat 聊天室中移除:

    1. Chat 應用程式會透過呼叫 Google Workspace Events API 中的 subscriptions.delete 方法來刪除訂閱項目。

    2. Chat 應用程式會從 Firestore 刪除 Chat 聊天室的資料

查看 AI 知識助理 Chat 應用程式使用的產品

AI 知識助理 Chat 應用程式使用下列 Google Workspace 和 Google Cloud 產品:

  • 搭載 Gemini 的 Vertex AI API:採用 Gemini 的生成式 AI 平台。AI 知識助理 Chat 應用程式使用 Vertex AI API 搭配 Gemini,藉此辨識、理解及回答員工的問題。
  • Chat API:用於開發 Google Chat 應用程式的 API,可接收並回應 Chat 互動事件 (例如訊息)。AI 知識助理 Chat 應用程式會使用 Chat API 執行下列操作:
    • 接收並回應 Chat 傳送的互動事件。
    • 列出聊天室中傳送的訊息。
    • 在聊天室中張貼使用者問題的回應。
    • 設定屬性,決定在 Chat 中的顯示方式,例如名稱和顯示圖片。
  • Google Workspace Events API:這個 API 可讓您訂閱事件,並管理 Google Workspace 應用程式中的變更通知。AI 知識輔助 Chat 應用程式會使用 Google Workspace Events API 聆聽 Chat 聊天室中發布的訊息,因此即使未提及該應用程式,也能偵測並回答問題。
  • Firestore:無伺服器文件資料庫。AI 知識助理 Chat 應用程式會使用 Firestore 儲存 Chat 聊天室中傳送的訊息相關資料。
  • Pub/Sub:Pub/Sub 是一項非同步且可擴充的訊息傳遞服務,可將產生訊息的服務與處理訊息的服務分離。AI 知識助理 Chat 應用程式會使用 Pub/Sub 接收 Chat 聊天室的訂閱事件。
  • Eventarc:Eventarc 可讓您建構事件導向的架構,而不必實作、自訂或維護基礎基礎架構。AI 知識輔助 Chat 應用程式會使用 Eventarc 將事件從 Pub/Sub 轉送至 Chat 空間,以及接收及處理訂閱事件的 Cloud Function。
  • Cloud Functions:輕量型無伺服器運算服務,可讓您建立單一用途的獨立函式,回應 Chat 互動和訂閱事件,而且不必管理伺服器或執行階段環境。AI 知識助理 Chat 應用程式使用兩個名為:
    • app:代管 Chat 傳送互動事件的 HTTP 端點,做為執行事件的運算平台,用於執行處理及回應這些事件的邏輯。
    • eventsApp:接收並處理 Chat 空間事件,例如來自 Pub/Sub 訂閱的訊息。
    Cloud Functions 會使用下列 Google Cloud 產品建構及託管運算資源:
    • Cloud Build:全代管的持續整合、推送和部署平台,可以執行自動化建構作業。
    • Cloud Run:用於執行容器化應用程式的全代管環境。

準備環境

本節說明如何為 Chat 應用程式建立及設定 Google Cloud 專案。

建立 Google Cloud 專案

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,依序前往「選單」 >「IAM 與管理」 >「建立專案」

    前往「建立專案」

  2. 在「Project Name」欄位中,輸入專案的描述性名稱。

    選用步驟:如要編輯「Project ID」,請按一下「Edit」。專案建立後就無法變更專案 ID,因此請選擇符合專案執行期間需求的 ID。

  3. 在「Location」欄位中,按一下「Browse」,即可顯示專案的潛在地點。然後按一下「選取」
  4. 點選「Create」(建立),Google Cloud 控制台會前往「Dashboard」(資訊主頁) 頁面,並在幾分鐘內建立專案。

gcloud CLI

在下列其中一種開發環境中,存取 Google Cloud CLI (gcloud):

  • Cloud Shell:如要在 gcloud CLI 已設定使用線上終端機,請啟用 Cloud Shell。
    啟用 Cloud Shell
  • 本機殼層:如要使用本機開發環境,請安裝初始化 gcloud CLI。
    如要建立 Cloud 專案,請使用 gcloud projects create 指令:
    gcloud projects create PROJECT_ID
    將要建立的專案 ID 設為 PROJECT_ID

為 Cloud 專案啟用計費功能

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往「帳單」。依序點選「Menu」圖示 >「Billing」(帳單) >「My Projects」(我的專案)

    前往「我的專案帳單」頁面

  2. 在「選取機構」中,選擇與 Google Cloud 專案相關聯的機構。
  3. 在專案列中開啟「動作」選單 (),按一下「變更帳單」,然後選擇 Cloud Billing 帳戶。
  4. 按一下 [設定帳戶]

gcloud CLI

  1. 如要列出可用的帳單帳戶,請執行:
    gcloud billing accounts list
  2. 將帳單帳戶連結至 Google Cloud 專案:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    更改下列內容:

    • PROJECT_ID 是您要啟用計費功能的 Cloud 專案專案 ID
    • BILLING_ACCOUNT_ID 是要連結至 Google Cloud 專案的帳單帳戶 ID

啟用 API

Google Cloud 控制台

  1. 在 Google Cloud 控制台中啟用 Google Chat API、Vertex AI API、Cloud Functions API、Firestore API、Cloud Build API、Pub/Sub API、Google Workspace Events API、Eventarc API 和 Cloud Run Admin API。

    啟用 API

  2. 確認您是在正確的 Cloud 專案中啟用 API,然後點選「Next」(下一步)

  3. 確認您啟用的 API 正確無誤,然後按一下「啟用」

gcloud CLI

  1. 視需要將目前的 Cloud 專案設為您建立的專案:

    gcloud config set project PROJECT_ID

    PROJECT_ID 替換為您建立的 Cloud 專案的專案 ID

  2. 啟用 Google Chat API、Vertex AI API、Cloud Functions API、Firestore API、Cloud Build API、Pub/Sub API、Google Workspace 事件 API、Eventarc API 和 Cloud Run Admin API:

    gcloud services enable chat.googleapis.com \
    aiplatform.googleapis.com \
    cloudfunctions.googleapis.com \
    firestore.googleapis.com \
    cloudbuild.googleapis.com \
    pubsub.googleapis.com \
    workspaceevents.googleapis.com \
    eventarc.googleapis.com \
    run.googleapis.com

設定驗證與授權

驗證及授權可讓 Chat 應用程式存取 Google Workspace 和 Google Cloud 中的資源。

在本教學課程中,您會在內部發布 Google Chat 應用程式,因此可以使用預留位置資訊。在對外發布 Google Chat 應用程式之前,請將同意畫面的預留位置資訊替換為實際資訊。

  1. 在 Google Cloud 控制台中,依序前往「選單」>「API 和服務」>「OAuth 同意畫面」

    前往 OAuth 同意畫面

  2. 在「使用者類型」下方,選取「內部」,然後按一下「建立」

  3. 在「應用程式名稱」中輸入 AI knowledge assistant

  4. 在「User support email」(使用者支援電子郵件) 中,選取您的電子郵件地址或適當的 Google 群組。

  5. 在「開發人員聯絡資訊」下方輸入電子郵件地址。

  6. 按一下 [儲存並繼續]。

  7. 按一下「新增或移除範圍」。畫面上會出現一個面板,列出您在 Cloud 專案中啟用的 API 的範圍。

  8. 在「手動新增範圍」下方,貼上下列範圍:

    • https://www.googleapis.com/auth/chat.messages
  9. 按一下「新增至資料表」

  10. 按一下「更新」

  11. 按一下 [儲存並繼續]。

  12. 查看應用程式註冊摘要,然後按一下「返回資訊主頁」

建立 OAuth 用戶端 ID 憑證

  1. 在 Google Cloud 控制台中,依序前往「選單」>「API 和服務」>「憑證」

    前往「憑證」

  2. 依序點選「建立憑證」>「OAuth 用戶端 ID」

  3. 依序點選「應用程式類型」>「網頁應用程式」

  4. 在「Name」欄位中輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。

  5. 按一下「Authorized redirect URIs」(已授權的重新導向 URI) 下方的「Add URI」(新增 URI)

  6. 在「URI 1」中輸入以下內容:

    https://REGION-PROJECT_ID.cloudfunctions.net/app/oauth2
    

    更改下列內容:

    • REGION:Cloud 函式的區域,例如 us-central1。稍後建立兩個 Cloud 函式時,請務必將其區域設為這個值。
    • PROJECT_ID:您所建立 Cloud 專案的專案 ID
  7. 按一下「建立」

  8. 在「OAuth client created」(已建立 OAuth 用戶端) 視窗中,按一下 [Download JSON] (下載 JSON)

  9. 將下載的檔案儲存為 client_secrets.json。稍後建立兩個 Cloud Functions 時,會在每個部署作業中加入 client_secrets.json 檔案。

  10. 按一下「確定」。

建立 Pub/Sub 主題

Pub/Sub 主題與 Google Workspace Events API 搭配運作,可訂閱 Chat 聊天室中的事件 (例如訊息),並即時通知 Chat 應用程式。

建立 Pub/Sub 主題的方法如下:

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,依序前往「選單」>「Pub/Sub」

    前往 Pub/Sub

  2. 按一下 [Create Topic] (建立主題)

  3. 在「主題 ID」中輸入 events-api

  4. 取消選取「新增預設訂閱項目」

  5. 在「加密」下方,選取「Google 代管的加密金鑰」

  6. 點選「Create」(建立),畫面上會顯示 Pub/Sub 主題。

  7. 如要讓這個 Pub/Sub 主題和 Google Workspace Events API 搭配運作,請授予 Chat IAM 使用者權限,以便發布至 Pub/Sub 主題:

    1. 在「events-api」面板的「權限」下方,按一下「新增主體」

    2. 在「Add principals」下方的「New principals」中,輸入 chat-api-push@system.gserviceaccount.com

    3. 在「指派角色」下方的「請選擇角色」中,依序選取「Pub/Sub」>「Pub/Sub 發布者」

    4. 按一下 [儲存]

gcloud CLI

  1. 建立主題 ID 為 events-api 的 Pub/Sub 主題:

    gcloud pubsub topics create events-api
  2. 授予 Chat IAM 使用者發布到 Pub/Sub 主題的權限:

    gcloud pubsub topics add-iam-policy-binding events-api \
    --member='serviceAccount:chat-api-push@system.gserviceaccount.com' \
    --role='roles/pubsub.publisher'

建立 Firestore 資料庫

Firestore 資料庫會儲存並擷取 Chat 聊天室的資料,例如訊息。您無須定義資料模型,因為 model/message.jsservices/firestore-service.js 檔案會在程式碼範例中以隱含方式設定。

AI 知識輔助 Chat 應用程式資料庫使用以 文件為基礎的 NoSQL 資料模型,並將這些文件整理成 集合。詳情請參閱 Firestore 資料模型

下圖概略說明 AI 知識輔助 Chat 應用程式的資料模型:

Firestore 資料庫的資料模型。

根目錄包含兩個集合:

  1. spaces,其中每個文件都代表加入 Chat 應用程式的 Chat 聊天室。每則訊息都會以 messages 子集合中的文件表示。

  2. users,其中每份文件代表將 Chat 應用程式新增至 Chat 聊天室的使用者。

查看集合、文件和欄位定義

spaces

包含 AI 知識助理 Chat 應用程式的 Chat 聊天室。

欄位
Document IDString
特定空間的專屬 ID。Chat API 中聊天室資源名稱的一部分。
messagesSubcollection of Documents (messages)
在 Chat 聊天室中傳送的訊息。對應至 Firebase 中 messageDocument ID
spaceNameString
Chat API 中的聊天室專屬名稱。對應於 Chat API 中的聊天室資源名稱。

messages

在 Chat 聊天室中傳送的訊息。

欄位
Document IDString
特定訊息的專屬 ID。
nameString
Chat API 中的訊息專屬名稱。對應至 Chat API 中的訊息資源名稱。
textString
訊息的文字內文。
timeString (Timestamp format)
訊息建立的時間。

users

將 AI 知識助理 Chat 應用程式新增至 Chat 聊天室的使用者。

欄位
Document IDString
特定使用者的專屬 ID。
accessTokenString
在 OAuth 2.0 使用者授權期間授予的存取權杖,可用來呼叫 Google Workspace API。
refreshTokenString
在 OAuth 2.0 使用者授權期間核發的更新權杖。

以下說明如何建立 Firestore 資料庫:

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,依序前往「Menu」>「Firestore」

    前往 Firestore

  2. 按一下 [Create database] (建立資料庫)。

  3. 在「選取 Firestore 模式」中,按一下「原生模式」

  4. 按一下「繼續」

  5. 設定資料庫:

    1. 在「為資料庫命名」中,將「資料庫 ID」保留為 (default)

    2. 在「位置類型」下方,選取「區域」

    3. 在「區域」中,指定資料庫的區域,例如 us-central1。如要獲得最佳效能,請選取與 Chat 應用程式 Cloud Functions 相同或鄰近的位置。

  6. 按一下 [Create database] (建立資料庫)。

gcloud CLI

  • 以原生模式建立 Firestore 資料庫:

    gcloud firestore databases create \
    --location=LOCATION \
    --type=firestore-native

    LOCATION 替換為 Firestore 區域的名稱,例如 us-central1。如要獲得最佳效能,請選取與 Chat 應用程式 Cloud Functions 相同或鄰近的位置。

建立及部署 Chat 應用程式

現在您已建立及設定 Google Cloud 專案,可以開始建構及部署 Chat 應用程式了。在本節中,您將執行以下操作:

  1. 建立及部署兩個 Cloud 函式。一個用來回應 Chat 互動事件,另一個則用於回應 Pub/Sub 事件。
  2. 在 Google Chat API 設定頁面中建立及部署 Chat 應用程式。

建立及部署 Cloud 函式

在本節中,您會建立及部署兩個名為:

  • app:主機並執行 Chat 應用程式的程式碼,以 HTTP 要求的形式回應來自 Chat 的事件。
  • eventsApp:接收並處理 Chat 空間事件,例如來自 Pub/Sub 的訊息。

這些 Cloud Functions 共同組成 AI 知識對話助理 Chat 應用程式的應用程式邏輯。

如有需要,請在建立 Cloud Functions 之前,先花點時間查看並熟悉 GitHub 上託管的範例程式碼。

前往 GitHub 查看

建立及部署「app

Google Cloud 控制台

  1. 從 GitHub 下載 .zip 格式的程式碼。

    下載 ZIP 檔案

  2. 將下載的 ZIP 檔案解壓縮。

    這個資料夾包含整個 Google Workspace 範例存放區。

  3. 在擷取的資料夾中,前往 google-chat-samples-main/node/ai-knowledge-assistant 目錄。

  4. google-chat-samples/node/ai-knowledge-assistant 目錄中,新增您在建立 OAuth 用戶端 ID 憑證以進行驗證及授權時下載的 client_secrets.json 檔案。

  5. ai-knowledge-assistant 資料夾的內容壓縮成 ZIP 檔案。

    ZIP 檔案的根目錄必須包含下列檔案和資料夾:

    • .gcloudignore
    • .gitignore
    • README.md
    • deploy.sh
    • env.js
    • events_index.js
    • http_index.js
    • index.js
    • client_secrets.json
    • package-lock.json
    • package.json
    • controllers/
    • model/
    • services/
    • test/
  6. 在 Google Cloud 控制台中,依序前往「Menu」圖示 >「Cloud Functions」

    前往 Cloud Functions 頁面

    請確認已選取 Chat 應用程式的 Google Cloud 專案。

  7. 按一下 「Create Function」

  8. 在「Create function」(建立函式) 頁面中設定函式:

    1. 在「環境」中,選取「Cloud Run 函式」
    2. 在「函式名稱」中輸入 app
    3. 在「區域」中選取區域,例如 us-central1。您建立 OAuth 用戶端 ID 憑證時,在授權重新導向 URI 中設定的地區,必須與此地區相符,才能進行驗證和授權。
    4. 在「觸發條件類型」中,選取「HTTPS」
    5. 選取「Authentication」(驗證) 下方的「Allow unauthenticated 叫用 s」(允許未經驗證的叫用)
    6. 點選「下一步」
  9. 在「執行階段」中,選取「Node.js 20」

  10. 在「進入點」中,刪除預設文字並輸入 app

  11. 在「Source code」中,選取「Zip upload」

  12. 在「目的地值區」中,建立或選取值區:

    1. 點選「瀏覽」
    2. 選擇值區。
    3. 按一下「選取」

    Google Cloud 會將 ZIP 檔案上傳到並擷取這個值區中的元件檔案,接著 Cloud Functions 會將元件檔案 複製到 Cloud 函式

  13. ZIP 檔案中,上傳您從 GitHub 下載、擷取並重新壓縮的 ZIP 檔案:

    1. 點選「瀏覽」
    2. 瀏覽並選取 ZIP 檔案。
    3. 按一下「開啟」
  14. 按一下「部署」

    「Cloud Functions 詳細資料」頁面會隨即開啟,並顯示您的函式和兩個進度指標:一個用於建構,另一個用於服務。當兩個進度指標消失且以勾號取代時,表示函式已部署完成且準備就緒。

  15. 編輯程式碼範例來設定常數:

    1. 在「Cloud Function details」(Cloud 函式詳細資料) 頁面中,按一下「Edit」(編輯)
    2. 點選「下一步」
    3. 在「原始碼」中,選取「內嵌編輯器」
    4. 在內嵌編輯器中開啟並編輯 env.js 檔案:
      1. project 的值設為您的 Cloud 專案 ID。
      2. location 的值設為 Cloud Function 的地區,例如 us-central1
  16. 按一下「部署」

gcloud CLI

  1. 從 GitHub 複製程式碼:

    git clone https://github.com/googleworkspace/google-chat-samples.git
  2. 切換至這個 AI 知識輔助 Chat 應用程式的程式碼所在目錄:

    cd google-chat-samples/node/ai-knowledge-assistant
  3. google-chat-samples/node/ai-knowledge-assistant 目錄中,新增您建立 OAuth 用戶端 ID 憑證時下載的 client_secrets.json 檔案,以便進行驗證和授權。

  4. 編輯 env.js 檔案以設定環境變數:

    1. project 的值設為 Cloud 專案 ID。
    2. location 的值設為 Cloud 函式的區域,例如 us-central1
  5. 將 Cloud 函式部署至 Google Cloud:

    gcloud functions deploy app \
    --gen2 \
    --region=REGION \
    --runtime=nodejs20 \
    --source=. \
    --entry-point=app \
    --trigger-http \
    --allow-unauthenticated

    REGION 替換為 Cloud Function 的區域值,以符合 env.js 檔案中設定的值,例如 us-central1

建立及部署 eventsApp

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,依序前往「Menu」>「Cloud Functions」

    前往 Cloud Functions 頁面

    請確認已選取 Chat 應用程式的 Google Cloud 專案。

  2. 按一下 「Create Function」

  3. 在「Create function」(建立函式) 頁面中設定函式:

    1. 在「環境」中,選取「Cloud Run 函式」
    2. 在「Function name」(函式名稱) 中輸入 eventsApp
    3. 在「區域」中選取區域,例如 us-central1。此地區必須與您在建立 OAuth 用戶端 ID 憑證以進行驗證和授權時,在授權重新導向 URI 中設定的地區。
    4. 在「Trigger type」(觸發條件類型) 中,選取「Cloud Pub/Sub」
    5. 在「Cloud Pub/Sub 主題」中,選取您建立的 Pub/Sub 主題名稱,格式為 projects/PROJECT/topics/events-api,其中 PROJECT 是您的 Cloud 專案 ID。
    6. 如果看到開頭為 Service account(s) might not have enough permissions to deploy the function with the selected trigger. 的訊息,請按一下「授予所有權限」
    7. 點選「下一步」
  4. 在「Runtime」中,選取「Node.js 20」

  5. 在「進入點」中,刪除預設文字並輸入 eventsApp

  6. 在「原始碼」中,選取「Cloud Storage 中的 ZIP 檔案」

  7. 按一下「Cloud Storage location」中的「Browse」

  8. 選取您在建立 app Cloud 函式時上傳 ZIP 檔案的值區。

  9. 按一下您上傳的 ZIP 檔案。

  10. 按一下「選取」

  11. 按一下「部署」

    「Cloud Functions 詳細資料」頁面隨即開啟,畫面上會顯示函式和三個進度指標:一個代表建構作業、一個代表服務,以及一個代表觸發條件。當三個進度指標都消失,並且被勾號取代時,函式就會部署完成,並且可以使用。

  12. 編輯程式碼範例來設定常數:

    1. 在「Cloud Function details」(Cloud 函式詳細資料) 頁面中,按一下「Edit」(編輯)
    2. 點選「下一步」
    3. 在「原始碼」中,選取「內嵌編輯器」
    4. 在內嵌編輯器中開啟並編輯 env.js 檔案:
      1. project 的值設為您的 Cloud 專案 ID。
      2. location 的值設為 Cloud 函式的區域,例如 us-central1
  13. 按一下「部署」

gcloud CLI

  1. 如果您尚未在 gcloud CLI 中,請切換至這個目錄,該目錄會保留您先前從 GitHub 複製的 AI 知識輔助 Chat 應用程式程式碼:

    cd google-chat-samples/node/ai-knowledge-assistant
  2. google-chat-samples/node/ai-knowledge-assistant 目錄中,新增您建立 OAuth 用戶端 ID 憑證時下載的 client_secrets.json 檔案,以便進行驗證和授權。

  3. 如要設定環境變數,請編輯 env.js 檔案:

    1. project 的值設為 Cloud 專案 ID。
    2. location 的值設為 Cloud 函式的區域,例如 us-central1
  4. 將 Cloud 函式部署至 Google Cloud:

    gcloud functions deploy eventsApp \
    --gen2 \
    --region=REGION \
    --runtime=nodejs20 \
    --source=. \
    --entry-point=eventsApp \
    --trigger-topic=events-api

    請將 REGION 改成 Cloud 函式的區域值,以符合 env.js 檔案中設定的值,例如 us-central1

複製 app Cloud 函式的觸發網址

當您在在 Google Cloud 控制台中設定 Chat 應用程式時,將貼上 app Cloud 函式的觸發條件網址。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,依序前往「Menu」>「Cloud Functions」

    前往 Cloud Functions 頁面

  2. 在 Cloud Functions 清單的「Name」(名稱) 欄中,按一下 app

  3. 按一下「觸發條件」

  4. 複製網址

gcloud CLI

  1. 說明 app Cloud 函式:

    gcloud functions describe app
  2. 複製 url 屬性。

在 Google Cloud 控制台中設定 Chat 應用程式

本節說明如何在 Google Cloud 控制台中使用 Chat 應用程式的相關資訊,包括 Chat 應用程式名稱,以及 Chat 應用程式 Cloud 函式的觸發網址,供其傳送 Chat 互動事件。

  1. 在 Google Cloud 控制台中,依序點選「Menu」圖示 >

    前往 Chat API 設定

  2. 在「應用程式名稱」中輸入 AI knowledge assistant

  3. 在「顯示圖片網址」中輸入 https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/live_help/default/24px.svg

  4. 在「說明」中輸入 Answers questions with AI

  5. 按一下「啟用互動功能」切換鈕,將其設為「開啟」。

  6. 選取「功能」下方的「加入聊天室和群組對話」

  7. 在「連線設定」下方,選取「HTTP 端點網址」

  8. 在「HTTP 端點網址」中,貼上 app Cloud 函式中的觸發條件網址,格式為 https://REGION-PROJECT_ID.cloudfunctions.net/app,其中 REGION 是 Cloud 函式的區域,例如 us-central1,而 PROJECT_ID 是您建立的 Cloud 專案 專案 ID

  9. 在「瀏覽權限」下方,選取「將這個 Chat 擴充應用程式提供給 Workspace 網域中的特定使用者和群組」,然後輸入您的電子郵件地址。

  10. 或者,在「記錄」下方,選取「將錯誤記錄到 Logging」

  11. 按一下 [儲存]。系統會顯示「設定已儲存」訊息,表示 Chat 應用程式已準備好進行測試。

測試 Chat 應用程式

向 AI 知識助理 Chat 應用程式可回答的問題,在 Chat 聊天室中測試 AI 知識助理 Chat 應用程式。

以下提供幾種測試 AI 知識輔助 Chat 應用程式的方式:

  • 將 AI 知識助理 Chat 應用程式新增至現有 Chat 聊天室,並提出與該聊天室相關的問題。
  • 建立 Chat 聊天室並發布幾則訊息,做為資料來源。訊息可以來自 Gemini,並使用類似 Answer 20 common onboarding questions employees ask their teams. 的提示。您也可以將使用 Chat 開發總覽指南中的幾段文字貼上,然後提出相關問題。

在本教學課程中,我們將建立 Chat 聊天室,並貼上「使用 Chat 進行開發的概略說明」指南中的幾段文字。

  1. 開啟 Google Chat。

    前往 Google Chat

  2. 建立 Chat 聊天室:

    1. 依序按一下「 新增 Chat」>「建立聊天室」

    2. 在「聊天室名稱」中輸入 Testing AI knowledge assistant app

    3. 在「這個聊天室的用途為何?」下方,選取「協同合作」

    4. 在「存取權設定」下方,選擇有權存取聊天室的使用者。

    5. 按一下「建立」

  3. 新增要用來做為資料來源的訊息:

    1. 請使用網路瀏覽器參閱使用 Chat 總覽開發指南。

    2. 複製指南的內容,並貼到您建立的 Chat 聊天室中。

  4. 新增 AI 知識助理 Chat 應用程式:

    1. 在訊息撰寫列中輸入 @AI knowledge assistant,然後在顯示的建議選單中,選取 AI 知識助理 Chat 應用程式,然後按下 enter

    2. 系統會顯示訊息,詢問您是否要將 AI 知識助理 Chat 應用程式新增至聊天室。按一下「新增至聊天室」

    3. 如果是首次將 Chat 應用程式新增至聊天室,您必須為 Chat 應用程式設定驗證和授權作業:

      1. 按一下 [Configure] (設定)。
      2. 系統會開啟新的瀏覽器視窗或分頁,要求您選擇 Google 帳戶。選擇要用來測試的帳戶。
      3. 查看 AI 知識輔助服務 Chat 應用程式要求的權限。如要授予,請點選「Allow」
      4. 畫面上會顯示 You may close this page now. 訊息。關閉瀏覽器視窗或分頁,然後返回 Chat 聊天室。
  5. 提出問題:

    1. 在訊息撰寫列中輸入問題,例如 What are Google Chat apps?

    2. AI 知識助理 Chat 應用程式提供的解答。

    3. 如有需要,如果答案不正確或不完整,請點選 「取得協助」,協助 AI 改善對話記錄。AI 知識助理 Chat 應用程式提及 聊天室管理員,請他們回答問題下次,AI 知識助理 Chat 應用程式 就能知道答案!

考量事項、其他架構選項和後續步驟

本節說明其他建構 AI 知識助理 Chat 應用程式的方式。

Firestore、Cloud Storage 或呼叫 Chat API 中的列出訊息

本教學課程建議將 Chat 聊天室資料 (例如訊息) 儲存在 Firestore 資料庫,因為比起每次 Chat 應用程式回答問題時,透過 Chat API 對 Message 資源呼叫 list 方法的效能更高。此外,重複呼叫 list messages 也可能導致 Chat 應用程式達到 API 配額限制。

不過,如果 Chat 聊天室的對話記錄過長,使用 Firestore 可能會產生費用昂貴的成本。

Cloud Storage 是 Firestore 的替代方案。啟用 AI 知識助理 Chat 應用程式的每個聊天室都會有專屬的物件,每個物件都是一個文字檔案,內含聊天室中的所有訊息。這種方法的好處是,文字檔的完整內容可以一次透過 Gemini 提供給 Vertex AI,但缺點是,更新對話記錄需要花費更多心力,因為您無法在 Cloud Storage 中附加至物件,只能取代該物件。如果您定期更新訊息記錄,這個方法就不適用,但如果您想定期批次更新訊息記錄 (例如每週一次),則適合使用這個方法。

疑難排解

當 Google Chat 應用程式或資訊卡傳回錯誤時,Chat 介面會顯示「發生錯誤」的訊息。或「無法處理您的要求」。Chat UI 有時不會顯示任何錯誤訊息,但 Chat 應用程式或資訊卡卻產生非預期的結果,例如資訊卡可能不會顯示。

雖然 Chat UI 可能不會顯示錯誤訊息,但可以在啟用 Chat 擴充應用程式的錯誤記錄功能時,查看描述性的錯誤訊息和記錄資料,協助您修正錯誤。如要瞭解如何查看、偵錯及修正錯誤,請參閱「疑難排解及修正 Google Chat 錯誤」。

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取您在本教學課程中使用資源的相關費用,建議您刪除 Cloud 專案。

  1. 在 Google Cloud 控制台中前往「管理資源」頁面。依序按一下「選單」圖示 >「IAM 與管理」 >「管理資源」

    前往 Resource Manager

  2. 在專案清單中選取要刪除的專案,然後按一下「Delete」圖示
  3. 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。