使用 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 聊天室。
  • 曉娜提出問題。
    圖 2.Dana 詢問公司是否提供公開演講訓練。
  • AI 知識助理 Chat 應用程式會回答問題。
    圖 3.AI 知識輔助聊天應用程式會提示 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 搭配 Gemini 回答問題,Chat 應用程式會透過應用程式驗證,呼叫 Chat API 中的 spaces.messages.create 方法,發布答案。

        如果 Vertex AI with Gemini 無法回答問題,Chat 應用程式會發布訊息,指出無法在 Chat 聊天室的記錄中找到該問題的答案。

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

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

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

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

    2. 即時通訊應用程式會從 Firestore 刪除聊天室的資料。

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

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

  • Vertex AI API 與 Gemini:由 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 Event 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 應用程式會使用兩個 Cloud Functions,分別為:
    • 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. 在「位置」欄位中,按一下「瀏覽」以顯示專案的潛在位置。然後按一下「選取」
  4. 按一下「建立」,Google Cloud 控制台會前往「資訊主頁」頁面,專案會在幾分鐘內建立。

gcloud CLI

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

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

為 Cloud 專案啟用計費功能

Google Cloud 控制台

  1. 前往 Google Cloud 控制台中的「Billing」,依序點選「選單」圖示 >「帳單」>「我的專案」

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

  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,然後按一下「下一步」

  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 Events 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. 在「App name」中輸入 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 Function 的區域,例如 us-central1。稍後建立兩個 Cloud 函式時,請務必將其區域設為這個值。
    • PROJECT_ID:您建立的 Cloud 專案的專案 ID
  7. 按一下「建立」

  8. 在「已建立的 OAuth 用戶端」視窗中,按一下「下載 JSON」

  9. 將下載的檔案儲存為 client_secrets.json。稍後建立兩個 Cloud 函式時,請在每個部署中加入 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. 在「Encryption」下方,選取「Google-managed encryption key」

  6. 按一下「建立」,畫面上會顯示 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. 在「Name your database」(為資料庫命名) 中,將「Database ID」(資料庫 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 函式

在本節中,您將建立並部署兩個 Cloud 函式,分別命名為:

  • app:主控並執行 Chat 應用程式的程式碼,以回應從 Chat 收到的事件,做為 HTTP 要求。
  • 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 invocations」
    6. 點選「下一步」
  9. 在「Runtime」中,選取「Node.js 20」

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

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

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

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

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

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

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

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

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

    1. 在「Cloud Function details」(Cloud 函式詳細資料) 頁面中,按一下「Edit」(編輯)
    2. 點選「下一步」
    3. 在「Source code」中,選取「Inline editor」
    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 Function 的地區,例如 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. 在「函式名稱」中輸入 eventsApp
    3. 在「Region」(區域) 中,選取區域,例如 us-central1。此地區必須與您在建立 OAuth 用戶端 ID 憑證以進行驗證和授權時,在授權重新導向 URI 中設定的地區。
    4. 在「Trigger type」(觸發條件類型) 中,選取「Cloud Pub/Sub」
    5. 在「Cloud Pub/Sub topic」(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. 在「Runtime」中,選取「Node.js 20」

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

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

  7. 在「Cloud Storage 位置」中,按一下「瀏覽」

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

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

  10. 按一下「選取」

  11. 按一下「部署」

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

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

    1. 在「Cloud Function details」(Cloud 函式詳細資料) 頁面中,按一下「Edit」(編輯)
    2. 點選「下一步」
    3. 在「Source code」中,選取「Inline editor」
    4. 在內嵌編輯器中開啟並編輯 env.js 檔案:
      1. project 的值設為您的 Cloud 專案 ID。
      2. location 的值設為 Cloud Function 的地區,例如 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 Function 的地區,例如 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 Function 的區域值,以符合 env.js 檔案中設定的值,例如 us-central1

複製 app Cloud 函式的觸發網址

Google Cloud 控制台中設定 Chat 應用程式時,您會在下一節中貼上 app Cloud 函式的觸發網址。

Google Cloud 控制台

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

    前往 Cloud Functions 頁面

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

  3. 按一下「觸發條件」

  4. 複製網址

gcloud CLI

  1. 說明 app Cloud 函式:

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

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

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

  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 >「更多產品」>「Google Workspace」>「產品程式庫」>「Google Chat API」>「管理」>「設定」

    前往 Chat API 設定

  2. 在「App name」中輸入 AI knowledge assistant

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

  4. 在「Description」中輸入 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. 您可以選擇在「Logs」下方選取「Log errors to Logging」

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

測試 Chat 應用程式

在 Chat 聊天室中,透過訊息詢問 AI 知識助理 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 中呼叫 List Messages

本教學課程建議您將 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. 在專案清單中選取要刪除的專案,然後按一下「刪除」圖示
  3. 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。