這則教學課程示範如何搭配使用 Vertex AI 和 Gemini 的生成式 AI 功能,建立 Google Chat 擴充應用程式,並依據 Chat 聊天室的對話記錄回答問題。Chat 擴充應用程式會使用 Google Workspace Events API 和 Pub/Sub,即時識別並答覆 Chat 聊天室中發布的問題,就算沒提及該擴充應用程式也能運作。
Chat 擴充應用程式會將聊天室中傳送的所有訊息做為資料來源和知識庫。當有人提出問題時,Chat 擴充應用程式會檢查先前分享的答案,然後分享其中一個。如果找不到答案,系統會顯示無法回答。使用者可以點選每個答案的輔助動作按鈕,@提及聊天室管理員並要求提供答案。Google Chat 應用程式會使用 Gemini AI,在加入的即時通訊空間中持續訓練,藉此調整及擴充知識庫。
以下說明 Chat 應用程式在員工訓練和支援空間中的運作方式:
- 
          圖 1. Charlie 將 AI 知識助理 Chat 應用程式新增至 Chat 聊天室。 
- 
          圖 2. Dana 詢問公司是否提供公開演講訓練。 
- 
          圖 3. AI 知識助理 Chat 擴充應用程式會提示 Vertex AI with Gemini 根據 Chat 聊天室的對話記錄回答 Dana 的問題,然後分享答案。
必要條件
- 具有 Google Chat 存取權的 Business 或 Enterprise 版 Google Workspace 帳戶。 
- 存取 Google Cloud 服務,以便執行下列操作: - 建立 Google Cloud 專案。
- 將 Google Cloud 帳單帳戶連結至 Cloud 專案。如要瞭解您是否具備存取權,請參閱「啟用帳單功能所需的權限」。
- 使用未經驗證的 Google Cloud Functions 呼叫,您可以判斷 Google Cloud 機構是否使用網域限定共用,藉此驗證。
 - 如有需要,請向 Google Cloud 管理員要求存取權或權限。 
- 如果使用 Google Cloud CLI,則須設定 Node.js 開發環境,以便與 gcloud CLI 搭配使用。請參閱設定 Node.js 開發環境。 
目標
- 建構 Chat 擴充應用程式,使用生成式 AI 依據 Chat 聊天室對話中分享的知識回答問題。
- 使用生成式 AI:
- 偵測並回答員工問題。
- 持續從 Chat 聊天室中的對話學習。
 
- 即使沒有直接傳送訊息給 Chat 應用程式,也能即時監聽並回覆 Chat 聊天室中的訊息。
- 將訊息寫入 Firestore 資料庫,並從中讀取訊息,即可保留訊息。
- 在 Chat 聊天室中協作時,如果找不到問題的答案,可以提及聊天室管理員。
架構
下圖顯示 AI 知識助理 Chat 應用程式使用的 Google Workspace 和 Google Cloud 資源架構。
AI 知識助理 Chat 應用程式的運作方式如下:
- 使用者將 AI 知識助理 Chat 應用程式新增至 Chat 聊天室: - Chat 應用程式會提示將其新增至 Chat 聊天室的使用者設定驗證和授權。 
- Chat 應用程式會呼叫 Chat API 中的 - spaces.messages.list方法,擷取聊天室的訊息,然後將擷取的訊息儲存在 Firestore 資料庫中。
- Chat 應用程式會呼叫 Google Workspace Events API 中的 - subscriptions.create方法,開始監聽聊天室中的訊息等事件。訂閱項目的通知端點是 Pub/Sub 主題,可使用 Eventarc 將事件轉送至 Chat 應用程式。
- Chat 應用程式會在聊天室中張貼簡介訊息。 
 
- Chat 聊天室中的使用者張貼訊息: - Chat 應用程式會從 Pub/Sub 主題即時接收訊息。 
- Chat 應用程式會將訊息新增至 Firestore 資料庫。 - 如果使用者稍後編輯或刪除訊息,即時通訊應用程式會即時收到更新或刪除事件,然後更新或刪除 Firestore 資料庫中的訊息。 
- Chat 應用程式會將訊息傳送至 Vertex AI with Gemini: - 提示會指示 Vertex AI with Gemini 檢查訊息是否包含問題。如果可以,Gemini 會根據 Firestore 中儲存的 Chat 聊天室訊息記錄回答問題,然後 Google Chat 應用程式會將訊息傳送至 Chat 聊天室。如果不是,請勿回應。 
- 如果 Vertex AI with Gemini 回答了問題,Chat 應用程式會使用應用程式驗證,呼叫 Chat API 中的 - spaces.messages.create方法,並發布答案。- 如果 Vertex AI with Gemini 無法回答問題,Chat 應用程式會發布訊息,說明無法在 Chat 聊天室的記錄中找到該問題的答案。 - 訊息一律會包含使用者可點選的配件動作按鈕,導致 Chat 應用程式 @提及聊天室管理員,要求他們回覆。 
 
 
- Chat 應用程式會從 Google Workspace Events API 收到生命週期通知,指出 Chat 聊天室訂閱即將到期: - Chat 應用程式會呼叫 Google Workspace Events API 中的 subscriptions.patch方法,傳送續訂要求。
 
- Chat 應用程式會呼叫 Google Workspace Events API 中的 
- 從 Chat 聊天室中移除 Chat 應用程式: - Chat 應用程式會呼叫 Google Workspace Events API 中的 - subscriptions.delete方法,刪除訂閱項目。
- Chat 應用程式會從 Firestore 刪除 Chat 聊天室的資料。 
 
查看 AI 知識助理 Chat 應用程式使用的產品
AI 知識助理 Chat 應用程式會使用下列 Google Workspace 和 Google Cloud 產品:
- Vertex AI API (Gemini): 由 Gemini 驅動的生成式 AI 平台。AI 知識助理 Chat 應用程式會使用 Vertex AI API 和 Gemini, 辨識、理解及回答員工問題。
- 
            Chat API:
            這個 API 可用來開發 Google Chat 應用程式,接收及回應訊息等 Chat 互動事件。AI 知識助理 Chat 應用程式會使用 Chat API 執行下列操作:
            - 接收並回應 Chat 傳送的互動事件。
- 列出聊天室中傳送的訊息。
- 在聊天室中回覆使用者問題。
- 設定屬性,決定機器人在 Google 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 應用程式使用兩個名為下列項目的 Cloud Functions:
            - 
                    app:代管 Chat 傳送互動事件的 HTTP 端點,並做為運算平台,執行處理及回應這些事件的邏輯。
- 
                    eventsApp:接收及處理 Chat 空間事件,例如來自 Pub/Sub 訂閱項目的訊息。
 - Cloud Build: 全代管的持續整合、推送和部署平台,可執行自動化建構作業。
- Cloud Run: 用於執行容器化應用程式的全代管環境。
 
- 
                    
準備環境
本節說明如何為 Chat 應用程式建立及設定 Google Cloud 專案。
建立 Google Cloud 專案
Google Cloud 控制台
- 前往 Google Cloud 控制台,依序點選「選單」圖示 >「IAM 與管理」 >「建立專案」。
- 
        在「Project Name」(專案名稱) 欄位中,輸入專案的描述性名稱。
        選用:如要編輯「專案 ID」,請按一下「編輯」。專案建立後就無法變更專案 ID,因此請選用符合專案執行期間需求的 ID。 
- 在「Location」(位置) 欄位中,按一下「Browse」(瀏覽),顯示專案的可能位置。然後按一下「選取」。
- 按一下「建立」,Google Cloud 控制台會前往「資訊主頁」頁面,並在幾分鐘內建立專案。
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
啟用 Cloud 專案的計費功能
Google Cloud 控制台
- 前往 Google Cloud 控制台的「帳單」頁面。依序點選「選單」「帳單」「我的專案」。
- 在「選取機構」中,選擇與 Google Cloud 專案相關聯的機構。
- 在專案列中開啟「動作」選單 (),然後按一下「變更帳單」,並選擇 Cloud 帳單帳戶。
- 按一下 [設定帳戶]。
gcloud CLI
- 如要列出可用的帳單帳戶,請執行下列指令:
        gcloud billing accounts list
- 將帳單帳戶連結至 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 控制台
- 在 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。 
- 確認您要在正確的 Cloud 專案中啟用 API,然後按一下「下一步」。 
- 確認要啟用的 API 正確無誤,然後按一下「啟用」。 
gcloud CLI
- 如有必要,請將目前的 Cloud 專案設為您建立的專案: - gcloud config set project PROJECT_ID- 將 PROJECT_ID 替換為您建立的 Cloud 專案的專案 ID。 
- 啟用 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 應用程式前,請先將同意畫面中的預留位置資訊換成實際資訊。
設定 OAuth 同意畫面、指定範圍,以及註冊應用程式
- 在 Google Cloud 控制台中,依序前往「選單」圖示 > > 「品牌」。 
- 如果您已設定,可以在「品牌」、「目標對象」和「資料存取權」中,設定下列 OAuth 同意畫面設定。 如果看到「尚未設定」 訊息,請按一下「開始使用」: - 在「App Information」(應用程式資訊) 下方的「App name」(應用程式名稱) 中,輸入
AI knowledge assistant。
- 在「使用者支援電子郵件」中,選取您的電子郵件地址或適當的 Google 群組。
- 點選 [下一步]。
- 在「目標對象」下方,選取「內部」。如果無法選取「Internal」(內部),請選取「External」(外部)。
- 點選 [下一步]。
- 在「聯絡資訊」下方,輸入「電子郵件地址」,以便在專案有任何異動時收到通知。
- 點選 [下一步]。
- 在「完成」下方,詳閱《Google API 服務使用者資料政策》,然後選取「我同意《Google API 服務:使用者資料政策》」。
- 按一下「繼續」。
- 點選「建立」。
- 如果為使用者類型選取「外部」,請新增測試使用者:
- 按一下「目標對象」。
- 在「測試使用者」下方,按一下「新增使用者」。
- 輸入您的電子郵件地址和任何其他授權測試使用者,然後按一下「儲存」。
 
 
- 在「App Information」(應用程式資訊) 下方的「App name」(應用程式名稱) 中,輸入
- 依序點按「資料存取權」「新增或移除範圍」。系統會顯示面板,列出您在 Google Cloud 專案中啟用的各項 API 範圍。 - 在「手動新增範圍」下方,貼上下列範圍: - https://www.googleapis.com/auth/chat.messages
 
- 按一下「新增至表格」。 
- 按一下「更新」。 
- 選取應用程式所需的範圍後,請在「資料存取」 頁面按一下「儲存」。 
 
建立 OAuth 用戶端 ID 憑證
- 在 Google Cloud 控制台中,依序前往「選單」「API 和服務」「憑證」。 
- 依序點選「建立憑證」 >「OAuth 用戶端 ID」。 
- 依序點選「應用程式類型」>「網頁應用程式」。 
- 在「Name」(名稱) 欄位中,輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。 
- 按一下「Authorized redirect URIs」(已授權的重新導向 URI) 下方的「Add URI」(新增 URI)。 
- 在「URI 1」中輸入下列內容: - https://REGION-PROJECT_ID.cloudfunctions.net/app/oauth2- 更改下列內容: - :Cloud Functions 的區域,例如 us-central1。 REGION稍後建立這兩個 Cloud Functions 時,您必須將其區域設為這個值。
- PROJECT_ID:您建立的 Cloud 專案的專案 ID。
 
- :Cloud Functions 的區域,例如 
- 點選「建立」。 
- 在「OAuth client created」(已建立 OAuth 用戶端) 視窗中,按一下「Download JSON」(下載 JSON)。 
- 將下載的檔案儲存為 - credentials.json。稍後建立這兩個 Cloud 函式時,請在每個部署作業中加入- credentials.json檔案。
- 按一下「確定」。 
建立 Pub/Sub 主題
Pub/Sub 主題可搭配 Google Workspace Events API 訂閱 Chat 聊天室中的訊息等事件,並即時通知 Chat 擴充應用程式。
建立 Pub/Sub 主題的方式如下:
Google Cloud 控制台
- 前往 Google Cloud 控制台,依序點選「選單」「Pub/Sub」>。 
- 按一下 [Create Topic] (建立主題)。 
- 在「主題 ID」中輸入 - events-api。
- 取消選取「新增預設訂閱項目」。 
- 在「Encryption」(加密) 底下,選取「Google-managed encryption key」(Google 代管的加密金鑰)。 
- 按一下「建立」,系統會顯示 Pub/Sub 主題。 
- 如要讓這個 Pub/Sub 主題和 Google Workspace Events API 搭配運作,請授予 Chat IAM 使用者發布至 Pub/Sub 主題的權限: - 在「events-api」面板的「權限」下方,按一下「新增主體」。 
- 在「新增主體」下方的「新增主體」中,輸入 - chat-api-push@system.gserviceaccount.com。
- 在「指派角色」下方,選取「選取角色」中的「Pub/Sub」 >「Pub/Sub 發布者」。 
- 按一下 [儲存]。 
 
gcloud CLI
- 建立主題 ID 為 - events-api的 Pub/Sub 主題:- gcloud pubsub topics create events-api
- 授予 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.js 和 services/firestore-service.js 檔案隱含設定資料模型。
AI 知識助理 Chat 應用程式資料庫採用 NoSQL 資料模型,以整理成 文件的 集合為基礎。詳情請參閱 Firestore 資料模型。
下圖是 AI 知識助理 Chat 應用程式資料模型的總覽:
根目錄包含兩個集合:
- spaces,其中每個文件代表 Chat 應用程式加入的 Chat 聊天室。每則訊息都以- messages子集合中的文件表示。
- users,其中每個文件代表將 Chat 應用程式新增至 Chat 聊天室的使用者。
查看集合、文件和欄位定義
spaces
        包含 AI 知識助理 Chat 應用程式的 Chat 聊天室。
| 欄位 | |
|---|---|
| Document ID | String特定空間的不重複 ID。Chat API 中聊天室資源名稱的一部分。 | 
| messages | Subcollection of Documents (在 Chat 聊天室中傳送的訊息。對應 Firebase 中 message的Document ID。 | 
| spaceName | StringChat API 中聊天室的專屬名稱。對應於 Chat API 中的聊天室資源名稱。 | 
messages
        在 Chat 聊天室中傳送的訊息。
| 欄位 | |
|---|---|
| Document ID | String特定訊息的專屬 ID。 | 
| name | StringChat API 中訊息的專屬名稱。與 Chat API 中的訊息資源名稱相符。 | 
| text | String訊息的文字內文。 | 
| time | String (Timestamp format)訊息的建立時間。 | 
users
        在 Chat 聊天室中新增 AI 知識助理 Chat 應用程式的使用者。
| 欄位 | |
|---|---|
| Document ID | String特定使用者的專屬 ID。 | 
| accessToken | String在 OAuth 2.0 使用者授權期間授予的存取權杖,用於呼叫 Google Workspace API。 | 
| refreshToken | String在 OAuth 2.0 使用者授權期間授予的更新權杖。 | 
以下說明如何建立 Firestore 資料庫:
Google Cloud 控制台
- 在 Google Cloud 控制台中,依序前往「選單」「Firestore」>。 
- 按一下 [Create database] (建立資料庫)。 
- 在「選取 Firestore 模式」中,按一下「原生模式」。 
- 按一下「繼續」。 
- 設定資料庫: - 在「為資料庫命名」中,將「資料庫 ID」保留為 - (default)。
- 在「位置類型」下方,選取「區域」。 
- 在「Region」(區域) 中,指定資料庫的區域,例如 - us-central1。為獲得最佳效能,請選取與 Chat 應用程式的 Cloud Functions 相同或鄰近的位置。
 
- 按一下 [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 應用程式。在本節中,您將完成下列步驟:
- 建立及部署兩個 Cloud 函式。一個用於回應 Chat 互動事件,另一個用於回應 Pub/Sub 事件。
- 在 Google Chat API 設定頁面建立及部署 Chat 擴充應用程式。
建立及部署 Cloud Functions
在本節中,您將建立並部署兩個 Cloud 函式,分別命名為:
- app:主機並執行 Chat 應用程式的程式碼,以回應從 Chat 收到的 HTTP 要求事件。
- eventsApp:接收及處理 Chat 空間事件,例如來自 Pub/Sub 的訊息。
這些 Cloud Functions 共同構成 AI 知識助理 Chat 應用程式的應用程式邏輯。
(選用) 建立 Cloud Functions 前,請先花點時間查看並熟悉 GitHub 上託管的範例程式碼。
建立及部署 app
Google Cloud 控制台
- 從 GitHub 下載程式碼 (ZIP 檔案)。 
- 將下載的 ZIP 檔案解壓縮。 - 解壓縮的資料夾包含整個 Google Workspace 範例存放區。 
- 在擷取的資料夾中,前往 - google-chat-samples-main/node/ai-knowledge-assistant目錄。
- 在 - google-chat-samples/node/ai-knowledge-assistant目錄中,新增您在建立 OAuth 用戶端 ID 憑證時下載的- credentials.json檔案,用於驗證和授權。
- 將 - ai-knowledge-assistant資料夾的內容壓縮成 zip 檔案。- ZIP 檔案必須包含下列檔案和資料夾: - .gcloudignore
- .gitignore
- README.md
- deploy.sh
- env.js
- events_index.js
- http_index.js
- index.js
- credentials.json
- package-lock.json
- package.json
- controllers/
- model/
- services/
- test/
 
- 在 Google Cloud 控制台中,依序前往「選單」>「Cloud Functions」。 - 請確認已選取 Chat 應用程式的 Google Cloud 專案。 
- 按一下 「建立函式」。 
- 在「建立函式」頁面中設定函式: - 在「環境」中,選取「Cloud Run 函式」。
- 在「Function name」(函式名稱) 中輸入 app。
- 在「區域」中選取區域,例如「us-central1」。這個區域必須與您在建立 OAuth 用戶端 ID 憑證時,為驗證和授權設定的授權重新導向 URI 區域相符。
- 在「Trigger type」(觸發條件類型) 中選取「HTTPS」。
- 在「Authentication」(驗證) 下方,選取「Allow unauthenticated invocations」(允許未經驗證的叫用)。
- 點選 [下一步]。
 
- 在「執行階段」中,選取「Node.js 20」。 
- 在「Entry point」中,刪除預設文字並輸入 - app。
- 在「原始碼」中,選取「上傳 ZIP 檔案」。 
- 在「Destination bucket」(目的地值區) 中,建立或選取值區: - 點選「瀏覽」。
- 選擇 bucket。
- 按一下「選取」。
 - Google Cloud 會將 ZIP 檔案上傳至這個 bucket,並解壓縮其中的元件檔案。接著,Cloud Functions 會將元件檔案複製到 Cloud Function 中。 
- 在「Zip file」(ZIP 檔案) 欄位中,上傳您從 GitHub 下載、解壓縮並重新壓縮的 ZIP 檔案: - 點選「瀏覽」。
- 找出並選取 ZIP 檔案。
- 按一下「開啟」。
 
- 按一下 [Deploy] (部署)。 - 「Cloud Functions 詳細資料」頁面隨即開啟,函式會顯示兩個進度指標:一個用於建構,另一個用於服務。當兩個進度指標都消失並顯示勾號時,表示函式已部署完成,可以開始使用。 
- 編輯範例程式碼,設定常數: - 在「Cloud Function detail」(Cloud 函式詳細資料) 頁面中,按一下「Edit」(編輯)。
- 點選 [下一步]。
- 在「原始碼」中選取「內嵌編輯器」。
- 在內嵌編輯器中開啟並編輯 env.js檔案:- 將 project 的值設為您的 Cloud 專案 ID。
- 將 location 的值設為 Cloud Functions 的區域,例如 us-central1。
 
 
- 按一下 [Deploy] (部署)。 
gcloud CLI
- 從 GitHub 複製程式碼: - git clone https://github.com/googleworkspace/google-chat-samples.git
- 切換到存放這個 AI 知識助理 Chat 應用程式程式碼的目錄: - cd google-chat-samples/node/ai-knowledge-assistant
- 在 - google-chat-samples/node/ai-knowledge-assistant目錄中,新增您在建立 OAuth 用戶端 ID 憑證時下載的- credentials.json檔案,用於驗證和授權。
- 編輯 - env.js檔案,設定環境變數:- 將 project 的值設為您的 Cloud 專案 ID。
- 將 location 的值設為 Cloud Functions 的區域,例如 us-central1。
 
- 將 Cloud 函式部署至 Google Cloud: - gcloud functions deploy app \ --gen2 \ --region=REGION \ --runtime=nodejs20 \ --source=. \ --entry-point=app \ --trigger-http \ --allow-unauthenticated- 將 REGION 換成 Cloud Functions 的地區值,與 - env.js檔案中設定的值相符,例如- us-central1。
建立及部署 eventsApp
Google Cloud 控制台
- 在 Google Cloud 控制台中,依序前往「選單」>「Cloud Functions」。 - 請確認已選取 Chat 應用程式的 Google Cloud 專案。 
- 按一下 「建立函式」。 
- 在「建立函式」頁面中設定函式: - 在「環境」中,選取「Cloud Run 函式」。
- 在「Function name」(函式名稱) 中輸入 eventsApp。
- 在「區域」中選取區域,例如「us-central1」。這個區域必須與您在建立 OAuth 用戶端 ID 憑證時,為驗證和授權設定的授權重新導向 URI 區域相符。
- 在「Trigger type」(觸發條件類型) 中,選取「Cloud Pub/Sub」。
- 在「Cloud Pub/Sub topic」(Cloud Pub/Sub 主題) 中,選取您建立的 Pub/Sub 主題名稱,格式為 projects/PROJECT/topics/events-api,其中 PROJECT 是您的 Cloud 專案 ID。
- 如果看到以 Service account(s) might not have enough permissions to deploy the function with the selected trigger.開頭的訊息,請按一下「全部授予」。
- 點選 [下一步]。
 
- 在「執行階段」中,選取「Node.js 20」。 
- 在「Entry point」中,刪除預設文字並輸入 - eventsApp。
- 在「原始碼」中,選取「從 Cloud Storage 匯入 ZIP 檔案」。 
- 在「Cloud Storage location」(Cloud Storage 位置) 中,按一下「Browse」(瀏覽)。 
- 選取您在建立 - appCloud Function 時上傳 ZIP 檔案的 bucket。
- 按一下您上傳的 ZIP 檔案。 
- 按一下「選取」。 
- 按一下 [Deploy] (部署)。 - 「Cloud Functions 詳細資料」頁面隨即開啟,函式會顯示三個進度指標:一個用於建構、一個用於服務,另一個用於觸發條件。當三個進度指標都消失並顯示勾號時,表示函式已部署完成,可以開始使用。 
- 編輯範例程式碼,設定常數: - 在「Cloud Function detail」(Cloud 函式詳細資料) 頁面中,按一下「Edit」(編輯)。
- 點選 [下一步]。
- 在「原始碼」中選取「內嵌編輯器」。
- 在內嵌編輯器中開啟並編輯 env.js檔案:- 將 project 的值設為您的 Cloud 專案 ID。
- 將 location 的值設為 Cloud Functions 的區域,例如 us-central1。
 
 
- 按一下 [Deploy] (部署)。 
gcloud CLI
- 在 gcloud CLI 中,如果尚未切換至先前從 GitHub 複製的 AI 知識助理 Chat 應用程式程式碼所在目錄,請執行下列操作: - cd google-chat-samples/node/ai-knowledge-assistant
- 在 - google-chat-samples/node/ai-knowledge-assistant目錄中,新增您在建立 OAuth 用戶端 ID 憑證時下載的- credentials.json檔案,用於驗證和授權。
- 編輯 - env.js檔案,設定環境變數:- 將 project 的值設為您的 Cloud 專案 ID。
- 將 location 的值設為 Cloud Functions 的區域,例如 us-central1。
 
- 將 Cloud 函式部署至 Google Cloud: - gcloud functions deploy eventsApp \ --gen2 \ --region=REGION \ --runtime=nodejs20 \ --source=. \ --entry-point=eventsApp \ --trigger-topic=events-api- 將 REGION 換成 Cloud Functions 的地區值,與 - env.js檔案中設定的值相符,例如- us-central1。
複製 app Cloud 函式的觸發網址
在下一節透過 Google Cloud 控制台設定 Chat 應用程式時,請貼上 app Cloud Function 的觸發網址。
Google Cloud 控制台
- 在 Google Cloud 控制台中,依序前往「選單」>「Cloud Functions」。 
- 在 Cloud Functions 清單的「Name」(名稱) 欄中,按一下 - app。
- 按一下「觸發條件」。 
- 複製網址。 
gcloud CLI
- 說明 - appCloud Function:- gcloud functions describe app
- 複製 - url屬性。
在 Google Cloud 控制台中設定 Chat 應用程式
本節說明如何在 Google Cloud 控制台中設定 Chat API,並提供 Chat 應用程式的相關資訊,包括 Chat 應用程式的名稱,以及 Chat 應用程式 Cloud Function 的觸發網址 (Chat 互動事件會傳送至該網址)。
- 在 Google Cloud 控制台中,依序點選「選單」 「更多產品」 >「Google Workspace」 >「產品程式庫」 >「Google Chat API」 >「管理」 >「設定」。 
- 在「應用程式名稱」中輸入 - AI knowledge assistant。
- 在「Avatar URL」中輸入 - https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/live_help/default/24px.svg。
- 在「Description」(說明) 中輸入 - Answers questions with AI。
- 將「啟用互動功能」切換鈕設為開啟。 
- 在「功能」下方,選取「加入聊天室和群組對話」。 
- 在「連線設定」下方,選取「HTTP 端點網址」。 
- 在「HTTP 端點網址」中,貼上 - appCloud Function 的觸發網址,格式為- https://REGION- -PROJECT_ID- .cloudfunctions.net/app,其中 REGION 是 Cloud Function 的區域,例如- us-central1,而 PROJECT_ID 是您建立的 Cloud 專案的專案 ID。
- 在「顯示設定」下方,選取「將這個 Chat 擴充應用程式提供給 Workspace 網域中的特定使用者和群組」,然後輸入電子郵件地址。 
- (選用) 在「記錄」下方,選取「將錯誤記錄到 Logging」。 
- 按一下 [儲存]。系統會顯示「已儲存設定」訊息,表示 Chat 應用程式已可供測試。 
測試 Chat 應用程式
在含有訊息的 Chat 聊天室中,測試 AI 知識小幫手 Chat 擴充應用程式,方法是提出 AI 知識小幫手 Chat 擴充應用程式可以回答的問題。
以下提供幾種測試 AI 知識助理 Chat 應用程式的方式:
- 將 AI 知識助理 Chat 應用程式新增至現有 Chat 聊天室,並提出與該聊天室相關的問題。
- 建立 Chat 聊天室並發布幾則訊息,做為資料來源。訊息可以來自 Gemini,只要輸入類似 Answer 20 common onboarding questions employees ask their teams.的提示即可。或者,你也可以從「使用 Chat 開發總覽」指南貼上幾段文字,然後提出相關問題。
在本教學課程中,我們將建立 Chat 聊天室,並從「使用 Chat 開發」總覽指南中貼上幾個段落。
- 開啟 Google Chat。 
- 建立 Chat 聊天室: - 依序按一下 「發起新即時通訊」>「建立聊天室」。 
- 在「聊天室名稱」中輸入 - Testing AI knowledge assistant app。
- 在「這個聊天室的用途為何?」下方,選取「協作」。 
- 在「存取權設定」下方,選擇可存取聊天室的對象。 
- 點選「建立」。 
 
- 新增要做為資料來源的訊息: - 在網路瀏覽器中前往「使用 Chat 開發應用程式總覽」指南。 
- 將指南內容複製並貼到您建立的 Chat 聊天室。 
 
- 新增 AI 知識助理 Chat 應用程式: - 在訊息撰寫列中輸入 - @AI knowledge assistant,然後在隨即顯示的建議選單中,選取 AI 知識助理 Chat 應用程式,並按下- enter。
- 系統會顯示訊息,詢問是否要將 AI 知識助理 Chat 應用程式新增至聊天室。按一下「新增至聊天室」。 
- 如果這是您首次將 Chat 應用程式新增至即時通訊空間,請務必為 Chat 應用程式設定驗證和授權: - 按一下 [Configure] (設定)。
- 系統會開啟新的瀏覽器視窗或分頁,要求您選擇 Google 帳戶。選擇要用於測試的帳戶。
- 查看 AI 知識助理 Chat 應用程式要求的權限。如要授予權限,請按一下「允許」。
- 畫面上會顯示「You may close this page now.」訊息。 關閉瀏覽器視窗或分頁,然後返回 Chat 空間。
 
 
- 提出問題: - 在訊息撰寫列中輸入問題,例如: - What are Google Chat apps?
- AI 知識助理 Chat 應用程式會回答。 
- 如果答案不正確或不夠完整,可以點選「取得協助」,協助 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 應用程式啟用的每個空間都會有專屬物件,每個物件都是文字檔,內含空間中的所有訊息。這種做法的優點是可一次將文字檔的完整內容提供給 Vertex AI with Gemini,但缺點是更新對話記錄需要更多工作,因為您無法在 Cloud Storage 中附加至物件,只能取代物件。如果您定期更新訊息記錄,就不適合採用這種做法,但如果您定期批次更新訊息記錄 (例如每週一次),這會是不錯的選擇。
疑難排解
如果 Google Chat 應用程式或資訊卡傳回錯誤,Chat 介面會顯示「發生錯誤」訊息。或「無法處理您的要求」。有時 Chat UI 不會顯示任何錯誤訊息,但 Chat 應用程式或資訊卡會產生非預期結果,例如資訊卡訊息可能不會顯示。
即使 Chat 使用者介面未顯示錯誤訊息,只要開啟 Chat 應用程式的錯誤記錄功能,系統就會提供說明性錯誤訊息和記錄資料,協助您修正錯誤。如需查看、偵錯及修正錯誤的相關協助,請參閱「排解及修正 Google Chat 錯誤」。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,建議您刪除 Cloud 專案。
- 在 Google Cloud 控制台中,前往「管理資源」頁面。依序點選「選單」「IAM 與管理」「管理資源」。
- 在專案清單中選取要刪除的專案,然後按一下「Delete」(刪除) 圖示 。
- 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。