智能回复

智能回复会跟踪人工客服与最终用户之间的对话,并会将建议的回复呈现给人工客服。建议的回复数由使用您自己的对话数据训练的自定义模型计算得出。

本文档将引导您完成使用 API 实现智能回复功能并获取建议的过程。如果您愿意,可以选择在设计时使用 Agent Assist 控制台上传数据、训练模型,并测试智能回复结果。要在运行时查看智能回复建议,您必须直接调用 API。如需详细了解如何使用 Agent Assist 控制台训练模型并测试其性能,请参阅智能回复教程

Agent Assist 还提供了公开提供的对话数据以及预训练模型和许可名单。您可以使用这些资源来了解智能回复的工作原理,或在上传自己的数据之前测试集成。如需了解详情,请参阅 对话数据格式文档

准备工作

在开始本指南之前,请先完成以下操作:

  1. 使用您自己的转录数据创建对话数据集
  2. 使用对话数据集训练智能回复模型。

个人身份信息和子级数据

在您向 API 发送数据时,API 会尝试隐去所有个人身份信息 (PII)。如果您需要确保模型不包含 PII,则应在向 API 发送数据之前先进行清理。 请使用占位符(例如 `REDACTED_NUMBER` 或 `REDACTED_NAME`)替换隐去的字词,而不是直接移除它们。

此外,如果数据包含从子级收集的信息, 则应在向 API 发送子级的数据之前先进行移除。

训练和部署模型

Agent Assist 智能回复模型使用对话数据集进行训练。对话数据集包含您自己上传的转录数据。本部分将引导您完成创建对话数据集、向其中上传对话数据,以及训练和部署模型的过程。如果您不希望直接调用 API,还可以使用 Agent Assist 控制台来执行这些操作。

创建对话数据集

在开始上传对话转写之前,您必须先创建一个对话数据集来放入对话转写。对 ConversationDataset 资源调用 create 方法以创建对话数据集。

响应包含对话数据集 ID。

将对话转录导入到对话数据集

将聊天对话数据上传到对话数据集,以便 Agent Assist 可以处理这些数据。确保每个对话的转录都采用 JSON 格式 并存储在 Cloud Storage 存储桶中。一个对话数据集必须至少包含 30000 个对话,否则模型训练将失败。一般来说,对话数量越多,模型质量就越好。我们建议您上传至少 3 个月的对话,以充分涵盖尽可能多的使用场景。一个对话数据集中的消息数量上限为 100 万。

ConversationDataset 资源调用 importConversationData 方法以导入对话。

必填字段:

  • 您之前创建的对话数据集 ID。
  • inputConfig 路径指向 Cloud Storage 存储桶中的对话转写(词/文稿)数据。

该响应是一个 长时间运行的操作, 您可以轮询该操作以检查是否完成。

创建对话模型

ConversationModel 资源调用 create 方法以创建对话模型。此操作还会创建模型的 许可名单

必填字段:

  • datasets 中,使用您之前创建的对话数据集 ID 提供单个数据集。
  • smartReplyModelMetadata 设置为空对象,或填充该字段以替换默认值。

该响应是一个 长时间运行的操作, 您可以轮询该操作以检查是否完成。 完成后,模型 ID 和许可名单 ID 将包含在操作的元数据中。

  • 模型 ID:name
  • 许可名单 ID:smart_reply_model_metadata.associated_allowlist_info.document

部署对话模型

ConversationModel 资源调用 deploy 方法以部署对话模型。

必填字段:

  • 使用 conversationModels:输入您之前创建的对话模型 ID。

管理许可名单

每个模型都有一个与之关联的许可名单,该许可名单会在您创建对话模型时自动创建。许可名单包含从对话数据集生成的所有可在运行时呈现给人工客服的回复。本部分介绍了许可名单的创建和管理。如果您不希望直接调用 API,还可以使用 Agent Assist 控制台来执行这些操作。

将许可名单内容导出到 CSV 文件

创建模型会自动创建一个与新模型关联的许可名单。许可名单是具有唯一 ID 的文档资源。创建模型时,系统会在 smart_reply_model_metadata.associated_allowlist_info.document 中返回该 ID。如需查看和更改许可名单中的消息,您必须将其导出到 Cloud Storage 存储桶。

Document 资源调用 export 方法,将文档导出到 Cloud Storage 存储桶中的 CSV 文件。 smart_messaging_partial_update 字段是可选字段,但会影响您日后更新此许可名单的方式。如果设置为 true,导出的 CSV 文件将包含一个列,其中包含每条消息的唯一 ID。您可以使用消息 ID 仅更新指定的消息,而不是整个文档。如果 smart_messaging_partial_update 设置为 false 或未设置,则该文件中不会显示额外的列,并且对许可名单的任何更新都需要更新整个文档。

必填字段:

  • gcsDestination 路径指向 Cloud Storage 存储桶。

该响应是一个 长时间运行的操作, 您可以轮询该操作以检查是否完成。之后,您在请求中提供的 CSV 文件将填充候选回复。

查看许可名单

生成的许可名单包含智能回复根据您的对话数据自动生成的回复。现在,您可以根据需要查看和更新这些回复。从 Cloud Storage 存储桶下载 CSV 文件,根据您的需求进行修改,然后将该文件上传回 Cloud Storage 存储桶。只有许可名单中的回复才能呈现给人工客服。

如果您要修改任何回复,我们建议您仅修改拼写和语法,而不要更改消息的含义。修改后的文本与模型中的含义偏差越大,该消息就越不可能呈现。

您还可以根据需要创建新消息。与修改后的消息类似,创建的消息不太可能在运行时呈现。

更新许可名单

完成 CSV 文件的更新后,您可以使用它来更新 Document 资源。您可以选择更新整个许可名单,也可以仅更新指定的消息。如需仅更新指定的消息,您必须 在导出许可名单时将 smart_messaging_partial_update 设置为 true如果您已执行此操作,请使用导出的 CSV 文件中自动生成的列来指明要更新的消息。

Document 资源调用 reload 方法以更新许可名单。如需仅更新指定的消息,请在 ReloadDocumentRequest 中将 smart_messaging_partial_update 设置为 true。如需更新整个许可名单,请将 smart_messaging_partial_update 留空或设置为 false

必填字段:

  • gcsSourceCSV 文件的 Cloud Storage 路径。
  • 对于 name,请使用您在 创建对话模型时生成的许可名单资源名称。

示例请求:

{
  "name":"projects/project-id/knowledgeBases/knowledge-base-id/documents/allowlist-id",
  "gcsSource" {
      "uri": "gs://revised_smart_reply_allowlist_path"
   }
}

评估训练后的模型的性能

部署模型并为其创建许可名单后,您可以测试模型的性能。您还必须提供测试数据集 。训练后的智能回复模型及其关联的许可名单生成的回复将与测试数据集中的实际客服消息进行比较。测试数据集应由真实对话数据组成,但不得包含您用于训练模型的对话数据集中的任何数据。例如,假设有 1 个月的对话流量,您可以使用 3 周的对话数据来创建对话数据集,并使用剩余 1 周的数据来创建测试数据集。测试数据集应至少包含 1000 个对话,但一般来说,测试数据集中的对话越多,评估指标就越可靠。测试数据集 格式与 对话数据集格式相同

如需创建新的模型评估,请对 ConversationModel 资源调用 CreateConversationModelEvaluation 方法。此方法会返回一项长时间运行的操作。您可以轮询该操作以检查其状态,该状态将返回 INITIALIZINGRUNNINGSUCCEEDEDCANCELLEDFAILED 之一。

必填字段:

  • InputDataset:将用于测试模型性能的测试数据集。
  • allowlist_document:与要测试的智能回复模型关联的许可名单。

长时间运行的操作完成后,系统会返回 ConversationModelEvaluation 资源。其中包含两个指标:

  • allowlist_coverage:测试数据集中由许可名单涵盖的客服消息的百分比。
  • recall:测试数据集中包含在许可名单中 显示在智能回复模型呈现的前 3 个建议中的客服消息的百分比。

配置对话配置文件

对话配置文件可配置一组参数,用于控制对话期间向客服人员提出的建议。 以下步骤将使用 HumanAgentAssistantConfig 对象创建 ConversationProfile。如果您不希望直接调用 API,还可以使用 Agent Assist 控制台来执行这些操作。

创建对话配置文件

如需创建对话配置文件, 请对 ConversationProfile 资源调用 create 方法。提供知识库 ID、文档 ID、项目 ID 和模型 ID。

以下是一个 JSON 示例:
{
  "displayName":"smart_reply_assist",
  "humanAgentAssistantConfig":{
    "humanAgentSuggestionConfig":{
      "featureConfigs":[
        {
          "suggestionFeature": { "type":"SMART_REPLY" },
          "queryConfig": {
            "documentQuerySource":{
              "documents": ["projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID/documents/DOCUMENT_ID"]
              },
                "maxResults": 3
              },
            }
          },
          "conversationModelConfig":{
            "model": "projects/PROJECT_ID/conversationModels/MODEL_ID"
          }
        }
      ]
    }
  }
}

我们建议您设置 SuggestionFeatureConfig.enable_inline_suggestion 值。 如果此值为 true,则后续对 AnalyzeContent 的调用将生成包含建议列表的响应。

响应包含新的对话配置文件 ID。

如需了解如何配置对话配置文件、在运行时处理对话、测试结果以及向 Agent Assist 发送反馈,请参阅生成式智能回复