使用 Gemini AI Chat 应用根据 Chat 对话回答问题

本教程介绍了如何构建 Google Chat 应用,利用以 Vertex AI 中的 Gemini 模型为基础的生成式 AI,根据 Chat 聊天室中的对话内容来回答问题。此类 Chat 应用结合使用 Google Workspace Events API 和 Pub/Sub,可实时识别和回答 Chat 聊天室中发布的问题,即使没有被提及也可提供回答。

Chat 应用会将聊天室中发送的所有消息用作数据源和知识库:当有人提出问题时,Chat 应用会检查之前分享过的回答,然后分享其中一个。如果未找到答案,它会说无法回答。在每个答案中,用户都可以点击附加操作按钮,@提及聊天室管理员并请求答案。借助 Gemini AI,Google Chat 应用会根据其加入的聊天室中持续进行的对话进行训练,从而不断调整和扩充其知识库。

Chat 应用在员工新手入门和支持聊天室中的运作方式如下:

  • 提及 AI 知识助理应用即可将其添加到聊天室。
    图 1. Charlie 将 AI 知识助理 Chat 应用添加到 Chat 聊天室。
  • Dana 问一个问题。
    图 2.Dana 询问该公司是否提供公开演讲培训。
  • AI 知识助理 Chat 应用解答了这个问题。
    图 3. AI 知识助理 Chat 应用会根据 Chat 聊天室的对话记录,提示 Vertex AI 与 Gemini 回答 Dana 的问题,然后分享答案。

前提条件

目标

  • 构建一个 Chat 应用,使用生成式 AI 根据 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 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 with Gemini 检查消息是否包含问题。如果是,Gemini 会根据存储在 Firestore 中的 Chat 聊天室消息记录来回答问题,然后 Google Chat 应用会将消息发送到 Chat 聊天室。如果没有,就不要回应。

      2. 如果 Vertex AI with 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. Chat 应用会从 Firestore 中删除 Chat 聊天室的数据。

查看 AI 知识助理 Chat 应用使用的产品

AI 知识助理 Chat 应用使用以下 Google Workspace 和 Google Cloud 产品:

  • Vertex AI API with Gemini:一个由 Gemini 提供支持的生成式 AI 平台。Chat 应用中的 AI 知识助理使用 Vertex AI API with 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 Functions 函数。
  • 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 字段中,为项目输入一个描述性名称。

    可选:如需修改项目 ID,请点击修改。项目创建后便无法更改项目 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 控制台中,前往结算。依次点击菜单 > 结算> 我的项目

    转到“我的项目的结算”

  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. 应用名称中,输入 AI knowledge assistant

  4. 用户支持电子邮件地址中,选择您的电子邮件地址或合适的 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. 依次点击应用类型 > Web 应用

  4. 名称字段中,输入凭据的名称。此名称仅在 Google Cloud 控制台中显示。

  5. 已获授权的重定向 URI 下,点击添加 URI

  6. URI 1 中,输入以下内容:

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

    替换以下内容:

    • REGION:Cloud Functions 函数所在的区域,例如 us-central1。稍后在创建两个 Cloud Functions 函数时,必须将其区域设置为此值。
    • PROJECT_ID:您创建的 Cloud 项目的项目 ID
  7. 点击创建

  8. OAuth 客户端已创建窗口中,点击下载 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. 点击创建主题

  3. 主题 ID 中,输入 events-api

  4. 取消选中添加默认订阅

  5. 加密下,选择 Google 管理的加密密钥

  6. 点击创建。Pub/Sub 主题随即显示。

  7. 为了让此 Pub/Sub 主题和 Google Workspace Events API 协同工作,请向 Chat IAM 用户授予向 Pub/Sub 主题发布消息的权限:

    1. 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 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 控制台中,依次选择菜单 > Firestore

    转到 Firestore

  2. 点击创建数据库

  3. 选择您的 Firestore 模式中,点击原生模式

  4. 点击继续

  5. 配置数据库:

    1. 为数据库命名中,将数据库 ID 保留为 (default)

    2. 位置类型下,选择区域

    3. 区域中,为您的数据库指定一个区域,例如 us-central1。为获得最佳性能,请选择与 Chat 应用的 Cloud Functions 函数相同或附近的位置。

  6. 点击创建数据库

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 函数

在本部分中,您将创建并部署两个 Cloud Functions 函数,其名称为:

  • app:托管并运行 Chat 应用的代码,该代码会以 HTTP 请求的形式响应从 Chat 收到的事件。
  • eventsApp:接收和处理 Chat 聊天室事件(例如来自 Pub/Sub 的消息)。

这些 Cloud Functions 共同构成了 AI 知识助理 Chat 应用的应用逻辑。

(可选)在创建 Cloud Functions 函数之前,您可以花些时间查看并熟悉 GitHub 上托管的示例代码。

在 GitHub 上查看

创建和部署 app

Google Cloud 控制台

  1. 以 zip 文件的形式从 GitHub 下载代码。

    下载 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. 创建函数页面上,设置您的函数:

    1. 环境中,选择 Cloud Run 函数
    2. 函数名称中,输入 app
    3. 区域中,选择一个区域,例如 us-central1。此区域必须与您在创建 OAuth 客户端 ID 凭据以进行身份验证和授权时在已获授权的重定向 URI 中设置的区域一致。
    4. 触发器类型中,选择 HTTPS
    5. 身份验证下,选择允许未通过身份验证的调用
    6. 点击下一步
  9. 运行时中,选择 Node.js 20

  10. 入口点中,删除默认文本,然后输入 app

  11. 源代码中,选择 Zip upload

  12. 目标存储桶中,创建或选择一个存储桶:

    1. 点击浏览
    2. 选择存储分区。
    3. 点击选择

    Google Cloud 会将该 zip 文件上传到此存储桶,并在其中提取组件文件。然后,Cloud Functions 会将组件文件复制到 Cloud Functions 函数中。

  13. Zip 文件中,上传您从 GitHub 下载、解压缩并重新压缩的 zip 文件:

    1. 点击浏览
    2. 找到并选择该 ZIP 文件。
    3. 点击打开
  14. 点击部署

    Cloud Functions 详情页面随即打开,此时您的函数会带有两个进度指示器:一个用于构建,一个用于服务。当两个进度指示器消失并被对勾标记取代时,表示您的函数已部署且可以使用。

  15. 修改示例代码以设置常量:

    1. Cloud Functions 函数详情页面上,点击修改
    2. 点击下一步
    3. 源代码中,选择內嵌编辑器
    4. 在内嵌编辑器中,打开并修改 env.js 文件:
      1. project 的值设置为您的 Cloud 项目 ID。
      2. location 的值设置为 Cloud Functions 函数的区域,例如 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 Functions 函数的区域,例如 us-central1
  5. 将 Cloud Functions 函数部署到 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 控制台

  1. 在 Google Cloud 控制台中,依次选择菜单 > Cloud Functions

    转到 Cloud Functions

    确保为您的 Chat 应用选择了 Google Cloud 项目。

  2. 点击 创建函数

  3. 创建函数页面上,设置您的函数:

    1. 环境中,选择 Cloud Run 函数
    2. 函数名称中,输入 eventsApp
    3. 区域中,选择一个区域,例如 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. 开头的消息,请点击全部授予
    7. 点击下一步
  4. 运行时中,选择 Node.js 20

  5. 入口点中,删除默认文本,然后输入 eventsApp

  6. 源代码中,选择 Zip from Cloud Storage

  7. Cloud Storage 位置中,点击浏览

  8. 选择您在创建 app Cloud Functions 函数时上传 ZIP 文件到的存储桶。

  9. 点击您上传的 ZIP 文件。

  10. 点击选择

  11. 点击部署

    系统会打开 Cloud Functions 详情页面,并显示您的函数以及三个进度指示器:一个指示构建进度,一个指示服务进度,一个指示触发器进度。当三个进度指示器全部消失并被对勾标记取代时,表示您的函数已部署完毕并可供使用。

  12. 修改示例代码以设置常量:

    1. Cloud Functions 函数详情页面上,点击修改
    2. 点击下一步
    3. 源代码中,选择內嵌编辑器
    4. 在内嵌编辑器中,打开并修改 env.js 文件:
      1. project 的值设置为您的 Cloud 项目 ID。
      2. location 的值设置为 Cloud Functions 函数的区域,例如 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 Functions 函数的区域,例如 us-central1
  4. 将 Cloud Functions 函数部署到 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 Functions 函数的触发器网址

在 Google Cloud 控制台中配置 Chat 应用时,您将在下一部分中粘贴 app Cloud Functions 函数的触发器网址。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,依次点击菜单 > Cloud Functions

    转到 Cloud Functions

  2. 在 Cloud Functions 函数列表的名称列中,点击 app

  3. 点击触发器

  4. 复制网址

gcloud CLI

  1. 描述 app Cloud Functions 函数:

    gcloud functions describe app
  2. 复制 url 属性。

在 Google Cloud 控制台中配置 Chat 应用

本部分介绍如何使用您的 Chat 应用的相关信息在 Google Cloud 控制台中配置 Chat API,包括 Chat 应用的名称,以及 Chat 应用的 Cloud Functions 函数(Chat 应用 Cloud Functions 函数会将 Chat 互动事件发送到这个函数)的触发器网址。

  1. 在 Google Cloud 控制台中,依次点击菜单 > 更多产品 > Google Workspace > 产品库 > Google Chat API > 管理 > 配置

    前往 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 Functions 函数的触发器网址,格式为 https://REGION-PROJECT_ID.cloudfunctions.net/app,其中 REGION 是 Cloud Functions 函数的区域(例如 us-central1),PROJECT_ID 是您创建的 Cloud 项目的项目 ID

  9. 公开范围下,选择面向 Workspace 网域中的特定人员和群组提供此 Chat 应用,然后输入您的电子邮件地址。

  10. (可选)在日志下,选择将错误记录到 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. 依次点击 发起新聊天 > 创建聊天室

    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. 点击配置
      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 的对话历史记录得到改进,请点击 获取帮助。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 界面不会显示任何错误消息,但 Chat 应用或卡片会产生意外结果;例如,卡片消息可能不会显示。

虽然 Chat 界面中可能不会显示错误消息,但当 Chat 应用的错误日志记录功能处于开启状态时,描述性错误消息和日志数据可帮助您修正错误。如需有关查看、调试和修复错误的帮助,请参阅排查和修复 Google Chat 错误

清理

为避免系统因本教程中使用的资源向您的 Google Cloud 账号收取费用,我们建议您删除该 Cloud 项目。

  1. 在 Google Cloud 控制台中,前往管理资源页面。依次点击菜单 > IAM 和管理> 管理资源

    前往资源管理器

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关停以删除项目。