Playbook 评估

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

除延迟时间之外的所有指标都需要至少一个测试用例,即 Dialogflow 将代理的性能与之进行比较以计算代理性能的“标准回答”。每个测试用例都可以在环境中进行衡量,这样您就可以指定在代理的性能评估中使用的不同版本的 playbook、流程和工具。

(可选)创建环境

创建环境是可选操作。如果您未创建,则默认值为 Draft

  1. 如需创建环境,请点击左侧菜单中的环境,然后选择 + 创建
  2. 选择您要用于衡量客服人员表现的剧本、流程和工具的版本。
  3. 点击保存以保存环境。

创建测试用例

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

在控制台中创建测试用例

  1. 在左侧菜单中,前往对话记录
  2. 如需创建新对话,请激活代理(例如,通过拨打代理的手机号码),以便在对话历史记录中创建对话。 如果您有想用作测试用例的对话,请选择该对话。
  3. 查看对话并验证代理的回答、调用的工具以及每个回答的语气。满意后,点击窗口右上角的 Create test case(创建测试用例)。
  4. 为测试用例提供显示名,并指定您对对话级事件的预期。这可以包括您希望在对话中调用的工具、剧本和流程。点击 + 添加预期即可添加更多预期。如需按列出的顺序(从上到下)依次评估预期值,请切换顺序验证
  5. 点击保存以保存测试用例。

上传测试用例

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

运行测试用例

  1. 点击左侧菜单中的测试用例,然后选择要与代理进行比较的测试用例。可以是单个测试用例,也可以是多个。
  2. 点击 Run selected test cases

测试结果

  1. 查看结果:每次测试运行完成后,测试用例视图中会显示每个测试用例的最新测试运行执行结果:
    1. 语义相似度:衡量代理的对话与“标准回答”(测试用例中的回答)的相似程度。需要有标准答案才能获得此指标。值可以是 0(不一致)、0.5(有点一致)或 1(非常一致)。
    2. 工具调用准确性:一个值,用于反映对话是否忠实地包含在对话期间预期调用的工具。值的范围为 0-1。如果对话中未使用任何工具,准确度将显示为 --(不适用)。
    3. 延迟时间:代理处理最终用户请求并响应用户所用的总时间(用户话语结束与代理响应开始之间的时间差)。单位为秒。
  2. 更新黄金测试用例:如果最新运行反映了因代理更新而产生的预期更改,您可以点击“另存为黄金测试用例”以覆盖原始测试用例。
  3. 过滤和排序结果:您可以按生成的任何指标或按特定环境过滤和排序评估结果。这有助于跟踪每次更新后的效果变化。

批量导入测试用例的格式

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

单个测试用例可以跨 CSV 文件中的多行。测试用例的第一行定义了其整体属性(例如名称和语言)。相应测试用例的每个后续行都定义了对话中的一个来回回合(用户说出内容,代理应答)。

CSV 文件必须将标题行作为第一行。此标题用于定义每列中的数据。

必需标头

两个必需的标题必须按所示顺序排列。对于新测试用例的第一行,这两者都是必需的。您可以通过提供新的 DisplayNameLanguageCode 值来开始新的测试用例。

  • DisplayName:测试用例的名称。此字段仅针对新测试用例的第一行进行填充。
  • LanguageCode:测试所用的语言代码(例如 enen-USes)。

可选标头

您可以添加以下任何可选的标头,为测试用例提供更多详细信息。在最开始的两个必需列之后,这些列可以按任意顺序排列。

测试用例元数据

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

用户输入

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

代理输出

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

预期

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

音频元数据

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

构建测试用例

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

  1. 如需开始新的测试用例,请填写其元数据行。
    • 规则:此行必须在 DisplayName 列中包含值。
    • 操作:输入 DisplayNameLanguageCode 的值。您还可以在此行中添加标记、备注或 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.TextOrderedExpectations.ExpectedAgentReply。对于需要 JSON 的列,您必须以字符串形式提供有效的 JSON 对象。示例: {"param_name": "param_value", "number_param": 123}