Playbook 评估

本指南介绍了如何使用 Dialogflow CX 控制台中的内置评估功能来验证智能体的功能,并防止更新后出现任何回归。Dialogflow CX 提供开箱即用的指标,可帮助您评估智能体的表现。

除延迟时间外,所有指标都需要至少一个测试用例,即 Dialogflow CX 用来比较智能体性能以衡量结果的“黄金回答”。每个测试用例都可以在环境中进行衡量,这样您就可以指定在代理性能评估中使用的不同版本的 playbook、flow 和工具。

(可选)创建环境

创建环境是可选操作。如果您不创建,则默认值为草稿。

  1. 前往环境,然后点击创建。
  2. 选择要用于衡量代理性能的 playbook、流和工具的版本。
  3. 点击保存以保存环境。

创建测试用例

您可以根据对话记录中的现有对话创建测试用例,也可以创建新对话并将其保存为测试用例,还可以将测试用例导入 Dialogflow CX。

在控制台中创建测试用例

  1. 前往导航菜单中的对话记录。
  2. 如需创建新对话,请激活您的代理,例如拨打代理的手机号码。如果您想将某个对话用作测试用例,请选择该对话。
  3. 查看对话,验证智能体的回答、调用的工具以及每个回答的语气。满意后,选择创建测试用例。
  4. 为测试用例提供显示名称,并指定您对必须在对话级别发生的事件的预期。这可能包括您希望在对话中调用的工具、playbook 和 flow。选择 +添加预期以添加更多预期。如需按照从上到下的顺序评估预期,请切换依序验证。
  5. 点击保存以保存测试用例。

上传测试用例

  1. 测试用例必须采用以下 CSV 格式。
  2. 如需将测试用例上传到系统,请点击测试用例菜单顶部的导入。
  3. 在显示的菜单中,选择本地存储的文件,或输入其 Cloud Storage 存储桶的路径。
  4. 您的测试用例现在应该会显示在测试用例菜单中。

运行测试用例

  1. 在导航菜单中,前往测试用例,然后选择要与代理进行比较的测试用例。您可以选择单个测试用例或多个测试用例。
  2. 点击运行所选测试用例。

测试结果

  1. 访问结果:测试运行完成后,每个测试用例的最新执行结果都会显示在测试用例视图中:
    1. 语义相似度:衡量智能体的对话与“黄金回答”(测试用例中的回答)的相似程度。必须提供黄金回答才能获得此指标。值可以是 0(不一致)、0.5(有些一致)或 1(非常一致)。
    2. 工具调用准确率:反映对话中包含预期在对话期间调用的工具的准确程度。此值的范围为 0 到 1。如果对话中未使用任何工具,则准确率会显示为 --(不适用)。
    3. 延迟时间:智能体处理用户请求并响应用户所需的总时间,以用户话语结束到智能体响应开始之间的时间差(以秒为单位)来衡量。
  2. 更新黄金测试用例:如果最新运行结果反映了因智能体更新而发生的预期更改,请选择另存为黄金测试用例,以覆盖原始测试用例。
  3. 过滤和排序结果:您可以按任何生成的指标或特定环境对评估结果进行过滤和排序,以便在每次更新后跟踪性能变化。

批量导入测试用例格式

本部分介绍了如何设置 CSV 文件的格式,以便为代理导入批量测试用例。系统会读取此文件,以创建一组结构化的测试用例,每个用例包含一个或多个对话轮次。

一个测试用例可以跨越 CSV 文件中的多行。测试用例的第一行定义其整体属性,例如其名称和语言。该测试用例的每个后续行都定义了对话中的一次来回交互,即用户说了一些话,智能体做出回复。

CSV 文件的第一行必须是标题行。此标题定义了每列中的数据。

必需标头

两个必需的标题必须按所示顺序显示。对于新测试用例的第一行,这两者都是必需的。您可以通过提供新的 DisplayName 和 LanguageCode 值来启动新的测试用例。

  • DisplayName:测试用例的名称。此列仅在新测试用例的第一行中填写。
  • LanguageCode:测试的语言代码(例如 en、en-US、es)。

可选标头

您可以添加以下可选标题,为测试用例提供更多详细信息。这些列可以按任意顺序排列,但必须位于前两列(必填列)之后。

测试用例元数据:

  • Tags:用于整理测试的以空格分隔的标记(例如,“payments onboarding”)。
  • 备注:自由文本备注或测试用例用途说明。
  • TestCaseConfigV2.StartResource:指定用于开始测试的流程或 playbook。

用户输入:

  • UserInput.Input.Text:用户在给定轮次中输入的文本。
  • UserInput.InjectedParameters:在轮次开始时要注入到对话中的参数,格式为 JSON 字符串。

智能体输出:

  • AgentOutput.QueryResult.ResponseMessages.Text:代理回复的确切文本。
  • AgentOutput.QueryResult.Parameters:代理提取的参数,格式为 JSON 字符串。

Ordered expectations:

  • OrderedExpectations.ExpectedFlow:您希望在对话轮次后处于活跃状态的 flow。
  • OrderedExpectations.ExpectedIntent:您希望与该轮对话匹配的 intent。
  • OrderedExpectations.ExpectedAgentReply:您希望智能体回复的文本,可以是完整回复的子字符串。
  • OrderedExpectations.ExpectedOutputParameter:您希望在对话轮次结束时设置的参数,格式为 JSON 字符串。

音频元数据:

  • AudioTurnMetadata:基于音频的测试的元数据,格式为 JSON 字符串。

构建测试用例

测试用例按数据行进行整理。

  1. 如需开始新的测试用例,请填写其元数据行:
    • 规则:此行的“DisplayName”列中必须有值。
    • 操作:输入 DisplayName 和 LanguageCode 的值。根据需要在此行中添加标记、备注或 TestCaseConfigV2.StartResource。 在此行中,将对话轮次列(例如 UserInput.Input.Text)留空。如果您使用标记,请用空格分隔每个标记(例如 tag1 tag2 tag3)。如果您使用 TestCaseConfigV2.StartResource,请在资源名称前加上 start_flow: 或 start_playbook:(例如 start_flow:projects/p/locations/l/agents/a/flows/f)。
  2. 通过在刚刚开始的测试用例下方添加新行,向该测试用例添加对话轮次:
    • 规则:DisplayName 列必须为空。这会告知解析器,该轮次属于上一个测试用例。
    • 操作:填写描述用户操作和此轮对话中预期智能体回答的列,例如 UserInput.Input.Text 和 OrderedExpectations.ExpectedAgentReply。对于需要 JSON 的列,您必须以字符串形式提供有效的 JSON 对象(例如 {"param_name": "param_value", "number_param": 123})。