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

本教學課程說明如何建構 Google Chat 應用程式,透過採用 Vertex AI 的生成式 AI 和 Gemini,根據 Chat 聊天室的對話回答問題。Chat 應用程式使用 Google Workspace Events API 和 Pub/Sub,來即時辨識及回答 Chat 聊天室中張貼的問題,即使未提及亦然。

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

以下是 Chat 應用程式在員工入職和支援空間中的運作方式:

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

先備知識

目標

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

架構

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

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

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

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

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

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

    3. Chat 應用程式會在 Google Workspace 事件 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 和 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:這個 API 可用於開發 Google Chat 應用程式,以便接收及回應 Chat 互動事件 (例如訊息)。AI 知識助理 Chat 應用程式會使用 Chat API 執行下列操作:
    • 接收及回應 Chat 傳送的互動事件。
    • 列出聊天室中傳送的訊息。
    • 在聊天室中張貼使用者問題的回應。
    • 設定屬性來決定要在 Chat 中顯示的方式,例如名稱和顯示圖片。
  • Google Workspace Event 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 函式。
  • 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」欄位中,輸入專案的描述性名稱。

    選用:如要編輯「專案 ID」,請按一下「編輯」。專案建立後即無法變更 ID,因此請依據專案的生命週期需求,選擇合適的 ID。

  3. 在「位置」欄位中,按一下「瀏覽」以顯示專案的潛在位置。然後按一下「選取」
  4. 點選「建立」。Google Cloud 控制台會前往「資訊主頁」頁面,專案會在幾分鐘內建立。

gcloud CLI

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

  • Cloud Shell:如要在 gcloud CLI 已設定使用線上終端機,請啟用 Cloud Shell。
    啟用 Cloud Shell
  • 本機殼層:如要使用本機開發環境,請安裝initialize 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 事件 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 控制台中,依序前往「Menu」圖示 >「APIs & Services」(API 和服務) >「OAuth Consent screen」(OAuth 同意畫面)

    前往 OAuth 同意畫面

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

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

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

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

  6. 點選「Save and Continue」

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

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

    • https://www.googleapis.com/auth/chat.messages
  9. 按一下「Add to Table」

  10. 按一下「更新」

  11. 點選「Save and Continue」

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

建立 OAuth 用戶端 ID 憑證

  1. 在 Google Cloud 控制台中,依序前往「Menu」圖示 >「APIs & Services」(API 和服務)>「Credentials」(憑證)

    前往「憑證」頁面

  2. 按一下「Create Credentials」(建立憑證) >「OAuth client ID」(OAuth 用戶端 ID)

  3. 依序點選「Application type」>「Web application」

  4. 在「名稱」欄位中輸入憑證的名稱。這個名稱只會顯示在 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 Functions 時,您必須將函式的區域設為這個值。
    • PROJECT_ID:您所建立 Cloud 專案的專案 ID
  7. 點選「建立」

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

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

  10. 點選「OK」

建立 Pub/Sub 主題

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

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

Google Cloud 控制台

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

    前往 Pub/Sub

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

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

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

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

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

  7. 為了讓這個 Pub/Sub 主題和 Google Workspace Events API 共同運作,請授予 Chat IAM 使用者權限,讓他們能張貼到 Pub/Sub 主題:

    1. 在「events-api」events-api面板中,點選「PERMISSIONS」events-api下方的「Add Principal」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 知識助理即時通訊應用程式資料庫會使用以 文件 彙整為 集合的 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. 在「Name your database」(為資料庫命名) 中,將「Database ID」(資料庫 ID) 保留為 (default)

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

    3. 在「Region」(區域) 中,指定資料庫的區域,例如 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 Functions。一個用來回應 Chat 互動事件,另一個則用於回應 Pub/Sub 事件。
  2. 在 Google Chat API 設定頁面中建立及部署 Chat 應用程式。

建立及部署 Cloud Functions

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

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

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

  11. 在「原始碼」中,選取「壓縮上傳」

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

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

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

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

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

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

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

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

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 函式的區域值,以符合 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. 在「環境」中,選取「第 2 代」
    2. 在「Function name」(函式名稱) 中輸入 eventsApp
    3. 在「Region」(區域) 中,選取區域,例如 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. 開頭的訊息,請按一下「Allow All」
    7. 點選「下一步」
  4. 在「執行階段」中,選取「Node.js 20」

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

  6. 在「Source code」中,選取「Zip from Cloud Storage」

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

  8. 選擇建立 app Cloud 函式時,將 ZIP 檔案上傳到哪個值區。

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

  10. 點選「選取」

  11. 點選「Deploy」

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

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

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

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. 在「連線設定」下方,選取「應用程式網址」

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

  9. 在「Visibility」(顯示設定) 下方,選取「Make this Chat app available for your Workspace domain」(將這個 Chat 應用程式提供給您的 Workspace 網域中的特定使用者和群組),然後輸入您的電子郵件地址。

  10. (選用) 在「記錄」下方,選取「將錯誤記錄到 Logging」

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

測試 Chat 應用程式

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

以下是測試 AI 知識助理 Chat 應用程式的幾種方式:

  • 將 AI 知識助理 Chat 應用程式新增至現有 Chat 聊天室,並提出與該聊天室相關的問題。
  • 建立 Chat 聊天室並張貼一些訊息做為資料來源。您可以用類似 Answer 20 common onboarding questions employees ask their teams. 的提示從 Gemini 取得訊息,也可以貼上「使用 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 控制台中,前往「管理資源」頁面。依序點選「Menu」圖示 >「IAM & Admin」(IAM 與管理) >「Manage Resources」(管理資源)

    前往 Resource Manager

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