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

本教程介绍如何使用由 Vertex AI 和 Gemini 提供支持的生成式 AI,构建根据 Chat 聊天室中的对话来回答问题的 Google 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 with 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 Events API 中的 subscriptions.create 方法,以便开始监听聊天室中的消息等事件。订阅的通知端点是一个 Pub/Sub 主题,该主题使用 Eventarc 将事件转发到聊天应用。

    4. Chat 应用会向聊天室发布介绍消息。

  • Chat 聊天室中的用户发布了一条消息:

    1. Chat 应用会从 Pub/Sub 主题实时接收消息。

    2. Chat 应用会将消息添加到 Firestore 数据库。

      如果用户之后修改或删除消息,Chat 应用会实时收到已更新或删除的事件,然后更新或删除 Firestore 数据库中的消息。

    3. 该聊天应用使用 Gemini 向 Vertex AI 发送消息:

      1. 该提示会指示 Vertex AI with Gemini 检查消息是否包含问题。如果匹配,Gemini 会根据 Firestore 中保存的 Chat 聊天室消息记录回答问题,然后 Google Chat 应用会将该消息发送到 Chat 聊天室。如果没有,请不要回应。

      2. 如果采用了 Gemini 的 Vertex AI 回答了这个问题,Chat 应用会使用应用身份验证在 Chat API 中调用 spaces.messages.create 方法,以发布答案。

        如果采用了 Gemini 的 Vertex AI 无法回答该问题,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 产品:

  • 带有 Gemini 的 Vertex AI API:一个由 Gemini 提供支持的生成式 AI 平台。AI 知识助理 Chat 应用将 Vertex AI API 与 Gemini 搭配使用,来识别、理解和回答员工的问题。
  • Chat API:一种用于开发可接收和响应 Chat 互动事件(如消息)的 Google Chat 应用的 API。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. 项目名称字段中,为项目输入一个描述性名称。

    可选:如需修改项目 ID,请点击修改。项目创建后,项目 ID 便无法更改,因此请选择符合项目生命周期需求的 ID。

  3. 位置字段中,点击浏览以显示项目的可能位置。然后,点击选择
  4. 点击创建。Google Cloud 控制台会转到“信息中心”页面,您的项目会在几分钟内创建完毕。

gcloud CLI

在以下某个开发环境中,访问 Google Cloud CLI(“gcloud”):

  • Cloud Shell:如需使用已设置 gcloud CLI 的在线终端,请激活 Cloud Shell。
    激活 Cloud Shell
  • 本地 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 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. 点击 Save and Continue(保存并继续)。

  7. 点击添加或移除范围。此时会显示一个面板,其中包含您在 Cloud 项目中启用的每个 API 的范围列表。

  8. 手动添加范围下,粘贴以下范围:

    • https://www.googleapis.com/auth/chat.messages
  9. 点击添加到表

  10. 点击更新

  11. 点击 Save and Continue(保存并继续)。

  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 Publisher

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

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

  11. 源代码中,选择 Zip 上传

  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. 环境中,选择第 2 代
    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 应用的相关信息(包括 Chat 应用的名称,以及 Chat 应用的 Cloud Functions 函数(用于接收 Chat 互动事件)的触发器网址,在 Google Cloud 控制台中配置 Chat API。

  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. 连接设置下,选择应用网址

  8. 应用网址中,粘贴 app Cloud Functions 函数中的触发器网址,格式为 https://REGION-PROJECT_ID.cloudfunctions.net/app,其中 REGION 是 Cloud Functions 函数的区域,例如 us-central1PROJECT_ID 是您创建的 Cloud 项目的项目 ID

  9. 可见性下,选择将此聊天应用提供给您的 Workspace 网域中的特定用户和群组使用,然后输入您的电子邮件地址。

  10. (可选)在日志下,选择将错误记录到 Logging

  11. 点击保存。系统会显示一条已保存配置的消息,这意味着 Chat 应用已准备好进行测试。

测试 Chat 应用

通过提问 AI 知识助理 Chat 应用可以回答的问题,在 Chat 聊天室中测试 AI 知识助理 Chat 应用。

以下是测试 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. 点击配置
      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 消息

本教程建议将 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 和管理 > 管理资源

    前往 Resource Manager

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