数据存储区工具

数据存储区工具可以根据网站内容和上传的数据提供 AI 生成的客服人员回答。您的代理可以在履单期间从数据存储区中查找最终用户问题的答案。

数据存储区工具:控制台

本部分将引导您完成以下流程:向代理添加数据存储区工具,并在实现中配置该工具。

创建数据存储区工具

  1. 打开 Conversational Agents 控制台,然后选择一个 Google Cloud项目。
  2. 从下拉菜单中选择代理。
  3. 前往页面最左侧的菜单栏,然后选择工具
  4. 如需创建新的数据存储区工具,请点击 + 创建。为该工具输入一个唯一的名称,然后从类型下的下拉菜单中选择数据存储区。您也可以选择在说明字段中输入工具的说明。
  5. 对话式代理控制台:在数据存储区下,点击添加数据存储区,将一个或多个预先存在的数据存储区添加到该工具中;或者点击创建数据存储区,添加新的数据存储区。如果您创建新的数据存储区,系统会显示一个数据存储区类型菜单。您可以在对话式代理控制台中完成网站Cloud Storage (FAQ)Cloud Storage(非结构化数据)选项。如果您选择任何其他类型,系统会自动将您重定向到 AI 应用,以创建数据存储区: AI 应用控制台
  6. Dialogflow CX 控制台:在数据存储区下,点击添加数据存储区。 随即显示的窗口中会列出您现有的数据存储区(如有)。选择要添加到该工具中的数据存储区。如需在 AI Applications 控制台中创建新的数据存储区,请点击创建新的数据存储区。系统会自动将您重定向到 AI 应用: AI 应用控制台
  7. 完成新数据存储区的配置后,点击创建。如果您已在 Conversational Agents (Dialogflow CX) 控制台中创建新的数据存储区,该存储区现在应会显示在数据存储区列表中。如果您已在 AI Applications 中创建数据存储区,请返回到您在 Conversational Agents (Dialogflow CX) 控制台中配置的创建工具菜单,然后刷新页面。新的数据存储区现在应显示在可用数据存储区列表中。
  8. 点击创建工具配置顶部的保存,以创建新的数据存储区工具。
  9. 如需详细了解其他数据存储区工具配置选项,请参阅数据存储区设置页面

将数据存储区工具添加到履单中

  1. 在最左侧的菜单栏中,选择流程
  2. 选择一个流程和页面,然后点击您想与数据存储区搭配使用的页面的路线
  3. 路线菜单中,滚动到履单 > 数据存储区工具。从下拉菜单中选择您的数据存储区工具。
  4. 路线菜单中,滚动到 Fulfillment > Agent responses。依次点击 + 添加对话响应数据存储区工具响应
  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"
  }
]

数据存储区工具响应还可能包含有关用于生成回答的内容来源的摘要。代理可以提供有关如何根据数据存储区中的答案继续操作的说明,或者在没有答案时如何响应。

您可以为特定问题添加 FAQ 条目来覆盖答案。

您还可以选择提供示例来增强代理的行为。示例应具有以下架构。如需了解详情,请参阅参考文档

{
  "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.
    
  • 如果剧本面向的是外部用户,则可能需要添加相关说明,以防止剧本可能向用户提供有关构建这些过滤条件的信息。例如:

    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 或点击控制台工具页面上的数据存储区名称来获取这些信息。如需详细了解这些额外的配置选项,请参阅数据存储区设置页面

数据存储区工具响应选项

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

数据存储区处理程序

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

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

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

限制

存在以下限制:

访问权限控制

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

  • Dialogflow Admin
  • Discovery Engine Admin

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

向代理添加数据存储区

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

如需向代理添加数据存储区,请执行以下操作: 数据存储区

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

测试代理

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

部署代理

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

特殊 intent

除了处理有关您提供的内容的问题之外,该代理还可以处理以下类型的问题:

  • 代理身份识别:处理“你是谁?”或“你是人类吗?”之类的问题。
  • 转接给人工客服:处理“我想与人工客服对话”或“我想与真人对话”之类的问题。

这是通过自动生成的意图意图路由来实现的。

智能体回答

Agent responses 部分,您可以提供引用生成式答案的自定义回答。 在代理回答部分中使用 $request.knowledge.answers[0] 提供生成式回答。

高级回答自定义

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

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

如需查看如何访问此信息的示例,请参阅下表。

信息 访问方式
最佳答案中已确定的最主要来源的代码段 $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)
与最佳答案对应的问题(仅适用于 FAQ 数据存储区答案) $request.knowledge.questions[0]
最佳答案的依据可信度 $request.knowledge.grounding_confidences[0]