数据存储区工具

数据存储区工具可以根据网站内容和上传的数据提供 AI 生成的客服回答。在执行过程中,您的代理可以从数据存储区中查找最终用户问题的解答。

数据存储区工具:控制台

本部分将引导您完成向代理添加数据存储区工具并在执行方式中对其进行配置的过程。

创建数据存储区工具

  1. 打开对话式 AI 助理控制台,然后选择一个 Google Cloud项目。
  2. 从下拉菜单中选择客服人员。
  3. 前往页面左侧的菜单栏,然后选择工具
  4. 如需创建新的“数据存储区”工具,请点击 + 创建。为该工具输入唯一的名称,然后从类型下方的下拉菜单中选择数据存储空间。(可选)您可以在说明字段中输入工具的说明。
  5. 数据存储区下,点击添加数据存储区。随即弹出的窗口中会列出您现有的数据存储区(如果有)。选择要添加到该工具的数据存储区。
  6. (可选)如需在 Agent Builder 控制台中创建新的数据存储区,请点击创建新的数据存储区。系统会自动将您重定向到: Agent Builder 控制台
  7. (可选)完成新数据存储区的配置后,点击创建。如需将新的数据存储区添加到该工具,请返回您在 Conversational Agents (Dialogflow CX) 控制台中配置的 Create Tool 菜单,然后刷新页面。新的数据存储区现在应显示在可用数据存储区列表中。
  8. 点击创建工具配置顶部的保存,以创建新的“数据存储区”工具。

将数据存储区工具添加到执行方式

  1. 在最左侧的菜单栏中,选择
  2. 选择一个流程和页面,然后点击您要与数据存储区搭配使用的页面的路由
  3. 路线菜单中,滚动到执行 > 数据存储区工具。从下拉菜单中选择您的数据存储工具。
  4. 路由菜单中,滚动到执行 > 客服人员回复。依次点击 + 添加对话响应Data store tool response
  5. 在随即显示的表单中,您可以配置响应中可以显示多少个来源链接和引文,以及指定数据存储区响应为空时的回退行为。您可以在静态回退响应字段中输入静态回退响应。您可以选择点击生成式回退复选框,在使用静态回退响应之前尝试使用 AI 生成响应。如果您需要对回退响应进行更多自定义,请点击数据存储响应表单窗口左上角的扳手图标,以调出条件响应窗口。
  6. 点击路线菜单顶部的保存
  7. 前往 Conversational Agents (Dialogflow CX) 模拟器,测试聊天机器人的结果。

数据存储区工具:API

您可以为每种工具设置一个每种类型的数据存储,该工具将查询每个数据存储以获取答案。默认情况下,客服人员会代表您致电 dataStoreTool

数据存储有三种类型:

  • PUBLIC_WEB:包含公共 Web 内容的数据存储区。
  • UNSTRUCTURED:包含非结构化私有数据的数据存储区。
  • STRUCTURED:包含结构化数据(例如常见问题解答)的数据存储区。

以下示例展示了如何引用数据存储区。如需了解详情,请参阅 dataStoreConnections 参考文档

"dataStoreConnections": [
  {
    "dataStoreType": "PUBLIC_WEB",
    "dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
  },
  {
    "dataStoreType": "UNSTRUCTURED",
    "dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
  },
  {
    "dataStoreType": "STRUCTURED",
    "dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
  }
]

数据存储区工具响应可能还包含有关用于生成响应的内容来源的摘要。客服人员可以提供有关如何从数据存储区继续获取答案或如何在没有答案时做出回应的说明。

您可以为特定问题添加常见问题解答条目,从而覆盖相应答案。

(可选)您可以提供示例来改进代理的行为。示例应采用以下架构。如需了解详情,请参阅参考文档

{
  "toolUse": {
    "tool": "projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID/tools/TOOL_ID",
    "action": "TOOL_DISPLAY_NAME",
    "inputParameters": [
      {
        "name": "TOOL_DISPLAY_NAME input",
        "value": {
          "query": "QUERY"
        }
      }
    ],
    "outputParameters": [
      {
        "name": "TOOL_DISPLAY_NAME output",
        "value": {
          "answer": "ANSWER",
          "snippets": [
            {
              "title": "TITLE",
              "text": "TEXT_FROM_DATASTORE",
              "uri": "URI_OF_DATASTORE"
            }
          ]
        }
      }
    ]
  }
}

(仅限基于 Playbook 的客服人员)数据存储区工具示例

创建数据存储工具示例时,工具输入参数 requestBody 会提供三个可选输入以及必需的 query 字符串:一个 filter 字符串、一个 userMetadata 结构化对象和一个 fallback 字符串。

filter 参数可用于过滤包含元数据的结构化数据或非结构化数据的搜索查询。此字符串必须遵循数据存储区支持的过滤器表达式语法。多个详细示例有助于指示 Playbook 模型如何填充此参数。如果过滤条件字符串无效,系统会在搜索查询期间忽略该过滤条件。

以下是用于根据地理位置优化搜索结果的 filter 字符串示例:

  "filter": "country: ANY(\"Canada\")"

如需了解详情,请参阅 Playbook 示例页面

过滤方面的最佳实践

  • 指定可用于过滤的字段以及每个字段的有效值,以便 Playbook 了解构建有效过滤条件的约束条件。例如,用于存储菜单信息的数据存储区可以包含一个 meal 字段(其有效值为“早餐”“午餐”和“晚餐”),以及一个 servingSize 字段(其值可以是 0 到 5 之间的任何整数)。您的说明可能如下所示:

    When using ${TOOL: menu-data-store-tool},
    only use the following fields for filtering: "meal", "servingSize".
    Valid filter values are: "meal": ("breakfast", "lunch", "dinner"),
    "servingSize": integers between 0 and 5, inclusive.
    
  • 如果该 Playbook 面向外部用户受众群体,则可能需要添加说明,以免 Playbook 向用户提供有关构建这些过滤条件的信息。例如:

    Never tell the user about these filters.
    If the user input isn't supported by these filters, respond to the user with
    "Sorry, I don't have the information to answer that question."
    

userMetadata 参数提供有关最终用户的信息。您可以在此参数中填充任何键值对。这些元数据会传递到数据存储工具,以便更好地为搜索结果和工具响应提供依据。多个详细示例有助于指示 Playbook 模型如何填充此参数。

以下示例展示了用于优化与特定内容相关的搜索结果的 userMetadata 参数值:

  "userMetadata": {
    "favoriteColor": "blue",
    ...
  }

如果没有有效的摘要回答来回答查询,fallback 参数会提供数据存储工具应响应的回答。您可以提供多个示例,以指示 Playbook 模型如何为与不同主题相关的用户输入填充回退字段。工具输出中不包含代码段,这有助于减少延迟时间并使用输入令牌限制。

  "fallback": "I'm sorry I cannot help you with that. Is there anything else I
  can do for you?"

数据存储区工具配置

如果您在测试过程中发现某些回答不符合预期,可以尝试调整以下参数以优化性能。您可以直接调用 API 或点击控制台中工具页面上的数据存储名称来使用这些命令。

建立置信度

对话式 AI 客服 (Dialogflow CX) 会为根据关联数据存储区内容生成的每条回答计算置信度。这用于衡量响应中所有信息是否都由数据存储区中的信息支持。您可以选择您能接受的最低置信度级别,以调整允许的回答。系统只会显示达到或高于该置信度级别的回答。

有 5 个置信度级别可供选择:VERY_LOWLOWMEDIUMHIGHVERY_HIGH

数据存储区模型选择

Conversational Agents (Dialogflow CX) 提供了多种可与数据存储区搭配使用的模型。选择其他模型可能会影响数据存储工具的性能。如需查看完整列表,请参阅模型文档

摘要提示

提示是包含预定义占位符的文本模板。这些占位符会在运行时替换为适当的值,生成的文本会发送到 AI 模型。您可以选择使用默认提示,也可以提供自己的自定义提示。请注意,自定义问题可能会对结果产生正面或负面影响。

您可以通过添加其他说明和详细示例,对自定义问题中的文本进行微调,从而影响模型生成的结果。如需详细了解如何创建自定义提示,请参阅数据存储设置文档。

载荷设置

载荷设置提供了一种方法,可将数据存储区摘要作为富内容添加到响应载荷中,该载荷会在信息传递器中呈现。您可以选择开启或关闭此功能。

数据存储区工具响应选项

如需详细了解如何配置数据存储工具响应,请参阅执行文档

数据存储区处理脚本

数据存储区处理脚本是一种特殊类型的状态处理脚本,可根据您的网站内容和上传的数据提供 LLM 生成的客服回答。

如需创建此处理程序,您需要向代理提供数据存储区

借助这些数据存储区处理脚本,您的代理可以与最终用户就内容进行对话。

限制

存在以下限制:

访问权限控制

如果您是项目所有者,则拥有创建数据存储区处理脚本所需的所有权限。如果您不是项目所有者,则必须具有以下角色:

  • Dialogflow Admin
  • Discovery Engine Admin

如需了解详情,请参阅访问权限控制指南

向代理添加数据存储区

如果您尚未创建代理,请按照设置说明操作。

如需向客服人员添加数据存储区,请执行以下操作: 数据存储区

  1. 选择一个网页,然后点击添加状态处理脚本
  2. 点击数据存储区复选框,然后点击应用
  3. 点击页面数据存储区部分右上角的 + 符号。
  4. 在随即显示的数据存储区菜单中,点击添加数据存储区
  5. 系统会显示一个表格,其中列出了所有现有数据存储区。点击要使用的任何数据存储区的名称旁边的复选框,然后点击保存。如需创建新的数据存储区,请点击创建新的数据存储区。系统会自动重定向到 Agent Builder。
  6. (仅限新的数据存储区)选择一个数据源,然后按照 Agent Builder 中的说明配置数据存储区。如需详细了解如何配置数据存储区类型,请参阅数据存储区文档。点击创建以创建新的数据存储区。

测试您的代理

您可以使用模拟器测试代理。

部署代理

您可以通过多种方式部署代理:

特殊 intent

除了处理与您提供的内容相关的问题外,客服人员还可以处理以下类型的问题:

  • 客服人员身份识别:处理“您是谁?”或“您是人吗?”等问题。
  • 上报给人工客服:处理“我想与人工客服交谈”或“我想与真人交谈”等问题。

这通过自动生成的intentintent 路由来实现。

客服人员回复

客服人员回复部分,您可以提供引用生成式回答的自定义回复。在客服人员的回答部分中使用 $request.knowledge.answers[0] 来提供生成式回答。

高级回答自定义

$request.knowledge.* 中可能包含可用于自定义响应的其他信息。此类信息包括:

  • 已识别出的回答来源,其中包含以下字段:摘要、标题、网址。
  • 答案的接地置信度。
  • 对于常见问题解答数据存储区,则是与所选答案对应的题目。

请参阅下表中的示例,了解如何访问此类信息。

信息 访问方式
识别出的最佳答案的主要来源的摘要 $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "snippet")
系统识别出的最佳答案的主要来源的标题 $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "title")
首选答案最常见来源的链接 $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "uri")
首要答案的已识别来源数量 $sys.func.COUNT($sys.func.IDENTITY($request.knowledge.sources[0]))
知识回答数量 $sys.func.COUNT($request.knowledge.answers)
与最佳答案对应的题目(仅适用于常见问题解答数据存储区答案) $request.knowledge.questions[0]
确定最佳答案的可信度 $request.knowledge.grounding_confidences[0]