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

本教學課程說明如何使用 Vertex AI 搭配 Gemini 的生成式 AI 技術,建構 Google Chat 應用程式,並依據 Chat 聊天室中的對話內容解答問題。Chat 應用程式會使用 Google Workspace Event API 和 Pub/Sub,即時辨識及回答在 Chat 聊天室中張貼的問題,即使未提及其內容亦然。

Chat 應用程式會使用聊天室傳送的所有訊息做為資料來源和知識庫:當使用者提出問題時,Chat 應用程式會檢查先前分享的答案,然後分享。如果找不到答案,表示無法回答。在每個答案中,使用者只要點選配件動作按鈕,即可使用 @號提及聊天室管理員,並要求回答。Google Chat 應用程式採用 Gemini AI 技術,不斷調整並擴充知識庫,隨著其持續訓練新加入的聊天室中的對話。

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

  • 提及 AI 知識助理應用程式後,這項功能就會加至空中。
    圖 1.Charlie 將 AI 知識助理 Chat 應用程式新增至 Chat 聊天室。
  • 曉娜問了個問題,
    圖 2.曉娜詢問公司是否提供公開口說訓練。
  • AI 知識助理 Chat 應用程式會回答問題。
    圖 3.AI 知識助理即時通訊應用程式會提示 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 Event 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 聊天室訊息記錄回答問題,接著再將訊息傳送至 Chat 聊天室。如果沒有收到,不要回覆。

      2. 如果使用 Gemini 的 Vertex AI 回答問題,Chat 應用程式會使用應用程式驗證機制,在 Chat API 中呼叫 spaces.messages.create 方法,即可發布答案。

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

        訊息一律包含配件動作按鈕,讓使用者可以點選,讓 Chat 應用程式使用 @ 號提及聊天室管理員並要求他們回答。

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

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

    1. Chat 應用程式會在 Google Workspace Event API 中呼叫 subscriptions.delete 方法,藉此刪除訂閱項目。

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

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

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

  • Vertex AI API,內含 Gemini:採用 Gemini 技術的生成式 AI 平台。AI 知識助理即時通訊應用程式使用搭配 Gemini 的 Vertex AI API,辨識、瞭解及回答員工的問題。
  • Chat API:用於開發 Google Chat 應用程式的 API,這類應用程式可以接收及回應 Chat 互動事件 (例如訊息)。AI 知識助理 Chat 應用程式會使用 Chat API 執行下列操作:
    • 接收及回應 Chat 傳送的互動事件。
    • 列出聊天室中傳送的訊息。
    • 在聊天室中張貼使用者問題的回應。
    • 設定屬性,以決定其在 Chat 中的顯示方式,例如名稱和顯示圖片。
  • Google WorkspaceEvents 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 與管理」>「建立專案」

    前往「Create a Project」(建立專案)

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

    選用:如要編輯專案 ID,請按一下「Edit」。專案建立後即無法變更專案 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
    取代 PROJECT_ID,為要建立的專案設定 ID。

啟用 Cloud 專案的計費功能

Google Cloud 控制台

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

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

  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 WorkspaceEvents 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 WorkspaceEvents 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. 點選「Save and Continue」

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

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

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

  10. 按一下「更新」

  11. 點選「Save and Continue」

  12. 檢查應用程式註冊摘要,然後按一下「Back to Dashboard」(返回資訊主頁)

建立 OAuth 用戶端 ID 憑證

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

    前往「憑證」頁面

  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 函式時,必須將地區設為這個值。
    • PROJECT_ID:您所建立的 Cloud 專案的專案 ID
  7. 點選「建立」

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

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

  10. 按一下「確定」

建立 Pub/Sub 主題

Pub/Sub 主題可與 Google Workspace Event 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. 點選「建立」。畫面上會顯示 Pub/Sub 主題。

  7. 如要讓這個 Pub/Sub 主題與 Google WorkspaceEvents API 搭配運作,請授予 Chat IAM 使用者張貼到 Pub/Sub 主題的權限:

    1. 在「events-api」events-api面板的「PERMISSIONS」events-api下方,按一下「Add Principal」events-api

    2. 在「新增主體」下方的「新增主體」中輸入 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 身分與存取權管理使用者權限,以張貼到 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 控制台中,依序點選「選單」圖示 >>「Firestore」

    前往 Firestore

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

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

  4. 按一下 [繼續]。

  5. 設定資料庫:

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

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

    3. 在「Region」(區域) 中指定資料庫的區域,例如 us-central1。為獲得最佳效能,請選取與即時通訊應用程式的 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 設定頁面上建立及部署即時通訊應用程式。

建立及部署 Cloud Functions

在本節中,您會建立及部署兩個 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 控制台中,依序點選「選單」圖示 >>「Cloud Functions」

    前往 Cloud Functions 頁面

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

  7. 按一下 「建立函式」

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

    1. 在「環境」中,選取「第 2 代」
    2. 在「函式名稱」中,輸入 app
    3. 在「Region」(區域) 中選取區域,例如 us-central1。此地區必須與您在建立 OAuth 用戶端 ID 憑證用於驗證和授權時,在授權重新導向 URI 中設定的地區相符。
    4. 在「觸發條件類型」中,選取「HTTPS」
    5. 選取「驗證」下方的「允許未經驗證的叫用」
    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. 按一下「部署」

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

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

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

建立及部署「eventsApp

Google Cloud 控制台

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

    前往 Cloud Functions 頁面

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

  2. 按一下 「建立函式」

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

    1. 在「環境」中,選取「第 2 代」
    2. 在「函式名稱」中,輸入 eventsApp
    3. 在「Region」(區域) 中選取區域,例如 us-central1。此地區必須與您在建立 OAuth 用戶端 ID 憑證用於驗證和授權時,在授權重新導向 URI 中設定的地區相符。
    4. 在「觸發條件類型」中,選取「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. 在「原始碼」中,選取「從 Cloud Storage 壓縮」

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

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

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

  10. 按一下「選取」

  11. 按一下「部署」

    「Cloud Functions details」(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 知識助理聊天應用程式程式碼的目錄:

    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 控制台中,依序點選「選單」圖示 >>「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 API,包括 Chat 應用程式的相關資訊,包括 Chat 應用程式名稱,以及 Chat 應用程式 Cloud 函式傳送 Chat 互動事件的觸發網址。

  1. 在 Google Cloud 控制台中,依序按一下「選單」圖示 >「更多產品」 >「Google Workspace」 >「Product Library」 >「Google Chat API」 >「管理」>「設定」

    前往 Chat API 設定

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

  3. 在「Avatar URL」(顯示圖片網址) 中輸入 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-central1PROJECT_ID 則是您建立的 Cloud 專案的專案 ID

  9. 在「Visibility」(顯示設定) 下方,選取「Make this Chat app as the specific people and groups」,然後輸入您的電子郵件地址。

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

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

測試 Chat 應用程式

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

下列幾種方法可用來測試 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. 依序按一下「 發起即時通訊」>「建立聊天室」

    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 應用程式要求的權限。如要授予這些權限,請按一下 [允許]
      4. 系統會顯示 You may close this page now. 訊息。關閉瀏覽器視窗或分頁,並返回 Chat 聊天室。
  5. 提出問題:

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

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

    3. 或者,如果答案不準確或不足,以協助 AI 改善對話記錄,請按一下「Get help」。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 中的物件無法附加內容,只能取代 Cloud Storage 中的物件。如果您會定期更新訊息記錄,這個方法就不適用,但如果您要定期批次更新訊息記錄 (例如每週一次),建議採用這個做法。

疑難排解

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

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

清除所用資源

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

  1. 在 Google Cloud 控制台中,前往「Manage resources」(管理資源) 頁面。依序點選「Menu」圖示 >「IAM & Admin」>「管理資源」

    前往 Resource Manager

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