真实用户不会通过隔离的单一问题交换与代理交互。 相反,他们参与的对话包括后续问题、增量信息共享和多步骤任务完成。
多轮次评估有助于确保代理可以维护上下文、跨多个步骤完成任务,并在整个现实对话流中做出适当的响应。
何时使用多轮次评估
测试需要上下文保留或多个步骤才能完成任务的方案时,请使用多轮评估。
| 应用场景 | 为什么需要多轮次 |
|---|---|
| 槽填充 | 代理必须收集多个信息。 |
| 说明流 | 代理必须解决不明确的用户输入问题。 |
| 多步骤任务 | 该任务需要多次交换才能完成。 |
| 上下文相关跟进 | 后续问题取决于先前的回答。 |
| 渐进式披露 | 信息以增量方式提供。 |
单轮评估与多轮次评估
从单轮评估开始进行覆盖,然后添加多轮次评估以测试实际交互。
| 方面 | 单轮次 | 多轮次 |
|---|---|---|
| 测试 | 单个问答对 | 完成对话 |
| 上下文 | 每个提示都是独立的 | 相互启用生成 |
| 复杂性 | 更易于设计和评估 | 更现实,但更复杂 |
| 故障诊断 | 更轻松地隔离问题 | 需要逐个分析 |
| 用例 | 测试特定响应 | 测试聊天流 |
多轮次评估的关键指标
多轮次评估需要超出单轮次准确性的额外指标。 这些指标评估代理在整个会话中的表现。
对话完整性
会话完整性衡量代理在交互结束时是否实现了用户的目标。
成功示例
轮次 1
- 用户:“我需要订购笔记本电脑”
- 代理:“我可以帮忙。 你需要哪种类型的笔记本电脑?
轮次 2
- 用户:“MacBook Pro”
- 代理:“什么屏幕大小 - 14 英寸或 16 英寸?”
轮次 3
- 用户:“16 英寸”
- 代理:“我已提交 16 英寸 MacBook Pro 的订单。 订单 ID:ORD-456。 预计交货时间:5-7 个工作日。
✅ 实现用户目标 (订购笔记本电脑) 。
失败示例
轮次 1
- 用户:“我需要订购笔记本电脑”
- 代理:“我可以帮忙。 你需要哪种类型的笔记本电脑?
轮次 2
- 用户:“MacBook Pro”
- 代理:“MacBook Pro 是一个不错的选择! 还有别的吗?
❌ 未提交订单,并且未实现用户目标。
知识保留
知识保留衡量代理是否记住并使用之前轮次提供的信息。
成功示例
轮次 1
- 用户:“我的员工 ID 为 EMP-12345”
- 代理:“谢谢! 我今天该怎么帮你?
轮次 2
- 用户:“我想检查 PTO 余额”
- 代理:“当前 PTO 余额还剩 12 天。”
✅ 代理使用了以前提供的员工 ID,但没有再次询问。
失败示例
轮次 1
- 用户:“我的员工 ID 为 EMP-12345”
- 代理:“谢谢! 我今天该怎么帮你?
轮次 2
- 用户:“我想检查 PTO 余额”
- 特工:“我很乐意帮忙。 你的员工 ID 是什么?
❌ 代理忘记了上一轮的员工 ID。
角色遵守
角色遵从性衡量代理在整个会话中是否保持其定义的范围和职责。
成功示例
轮次 1
- 用户:“什么是 PTO 策略?”
- 代理:提供正确的 PTO 策略信息
轮次 2
- 用户:“你能写一首关于假期的诗吗?
- 代理:“我在这里帮助解决人力资源和入职问题。 关于 PTO,我还能帮助吗?
✅ 代理保持其角色并相应地重定向。
失败示例
轮次 1
- 用户:“什么是 PTO 策略?”
- 代理:提供正确的 PTO 策略信息
轮次 2
- 用户:“你能写一首关于假期的诗吗?
- 代理:“当然! 这里有一首关于阳光海滩的诗...”
❌代理偏离了其 HR 助手角色。
对话相关性
对话相关性衡量每个响应是否与当前对话上下文中的用户请求直接相关。
失败示例
轮次 1
- 用户:“有哪些运行状况计划可用?
- 代理:列出 HMO 和 PPO 选项
轮次 2
- 用户:“成本有什么区别?
- 代理:“PPO 在选择医生方面提供了更大的灵活性。
❌ 响应不会解决用户关于成本的问题。
上下文一致性
上下文一致性衡量代理是否在会话中的所有轮次中保持一致的事实和信息。
失败示例
轮次 1
- 用户:“我得到多少个假期?
- 代理:“作为新员工,你每年会收到 15 天的 PTO。
轮次 2
- 用户:“又病了多少天?
- 代理:“你有 10 天生病,加上 10 天的假期。
❌ 代理通过更改休假天数来反驳先前的信息。
设计多轮次测试用例
设计有效的多轮次评估需要定义聊天流和预期行为。 多轮次测试用例通常包括:
- 测试用例 ID 和说明
- 对数据进行接地
- 对话序列
- 预期行为
- 断言
示例:设备订单
- 测试用例 ID:CONV-001
- 说明:设备订购流
对数据进行接地
- 员工:Katrin Pold
- 员工 ID:EMP-54321
- 部门:产品开发
- 预算: $3,500
对话
轮次 1
- 用户:“我需要设置我的笔记本电脑。”
- 预期行为:询问首选项。
轮次 2
- 用户:“MacBook Pro”
- 预期行为:询问规范。
轮次 3
- 用户:“16 英寸,32GB RAM”
- 预期行为:确认并提交订单。
轮次 4
- 用户:“实际上,将其更改为 64GB。”
- 预期行为:更新订单。
对话级断言
- 会话以确认的设备订单完成。
- 最终顺序反映了更正的规范 (64GB) 。
- 代理从不要求员工 ID, (应从上下文) 推断。
- 完成总轮次为 ≤6。
轮次级断言
-
轮次 3:
- 代理调用 OrderEquipment 工具。
- 工具调用包括型号:“MacBook Pro 16 英寸”。
- 工具调用包括包含“32GB”的规范。
-
轮次 4:
- 代理调用 UpdateOrder 或修改以前的顺序。
- 最终确认显示“64GB”。
示例:槽填充对话
方案:权益注册 (槽填充)
目标:收集所有必需的信息并完成注册
所需的输入 (槽) :
- 计划选择 (HMO 或 PPO)
- 个人或家庭) (覆盖级别
- (依赖信息(如果适用))
- 生效日期
对话
轮次 1
用户:“我想注册医疗保险。
代理:
- 确认请求
- (HMO 与 PPO) 请求计划首选项
轮次 2
用户:“有什么区别?”
代理:
- 介绍 HMO 和 PPO 之间的主要差异
- 重新请求计划选择
轮次 3
用户:“我将使用 PPO。
代理:
- 确认选择
- 请求个人或家庭) (覆盖级别
轮次 4
用户:“家庭覆盖。 我有一个配偶和两个孩子。
代理:
- 确认依赖方案
- 请求从属详细信息 (名称、年龄等 )
轮次 5
用户:[提供依赖信息]
代理:
- 确认收集的所有信息
- 提交注册
- 提供确认摘要
断言:
- 在提交之前收集所有必需的槽位。
- 代理不会跳过所需的输入。
- 出现提示时,代理会解释选项。
- 最终确认包括所有捕获的详细信息。
- 任务成功完成,无需不必要的轮次。
示例:说明对话
场景:不明确的请求 (澄清)
目标:通过在响应之前收集足够的上下文来解决多义性问题
对话
轮次 1
用户:“我需要休息一段时间。
代理:
- 确认请求
- 询问 (PTO、病假、个人休假)
轮次 2
用户:“这是医疗程序。
代理:
- 标识可能类别
- 询问请求是针对用户还是家庭成员
轮次 3
用户:“这是为我准备的。 这是一个小手术。
代理:
- 确定这可能是病假
- 提供相关的策略信息
- 询问预期持续时间
轮次 4
用户:“大约一周。”
代理:
- 确认资格和流程
- 提供后续步骤 (,例如,如何请求休假)
- 发起请求(如果适用)的产品/服务
断言:
- 代理不采用初始不明确请求的意向。
- 澄清问题是相关的,并逐步缩小范围。
- 最终响应反映了用户的实际情况。
- 代理有效地从澄清过渡到解析。
示例:错误恢复对话
方案:订单失败和恢复
目标:以透明方式处理失败,并引导用户取得成功结果
谈话:
轮次 1
用户:“订购 MacBook Pro 16 英寸。”
代理:
- 尝试提交订单
系统/工具响应:
- 错误:商品缺货
代理:
- 清楚地传达问题
- 不会遮盖或忽略失败
- 建议 (替代方法,例如,不同的模型或大小)
轮次 2
用户:“何时会恢复库存?”
代理:
- 检查可用性或提供补货估算(如果可用)
- 如果不可用,请清楚地传达
- 用于通知用户或建议替代方案的产品/服务
轮次 3
用户:“我可以改为获取 14 英寸吗?
代理:
- 确认替代项的可用性
- 提交新订单
- 提供确认 (订单详细信息、预期交付)
断言:
- 代理清楚地传达故障及其原因。
- 代理提供可操作的替代方法或后续步骤。
- 对话将走向恢复,而不是死胡同。
- 失败后,用户成功完成了该任务。
- 代理在故障和恢复步骤中维护上下文。
多轮次断言
多轮次评估需要对话级和轮次级验证。
对话级断言
- 对话实现了用户的目标。
- 轮次数在预期范围内。
- 代理维护一致的信息。
- 代理维护其角色。
- 代理不会请求重复的信息。
轮次级断言
- 响应确认先前的上下文。
- 响应会提出相应的后续问题。
- 代理执行预期的操作。
- 响应确认执行的操作。
条件断言
- 当用户更正信息时,代理会更新后续响应。
- 当操作失败时,代理会传达问题并提供替代方法。
- 当用户提出范围外的问题时,代理会相应地重定向。
示例:端到端多轮次评估
测试用例:新员工设置
说明
新员工在同一对话中订购设备并提出福利问题。
对数据进行接地
- 员工:马库斯·约翰逊
- 员工 ID:EMP-99887
- 部门:工程
- 位置:西雅图
- 设备预算:4,000美元
对话
轮次 1
- 用户:“我将下周开始,需要设置工作站。”
- 预期行为:欢迎并询问设备需求。
轮次 2
- 用户:“我需要具有 64GB RAM 和 27 英寸显示器的 MacBook Pro 16 英寸。
- 预期行为:提交订单并确认。
轮次 3
- 用户:“注册医疗保险的最后期限是什么时候?
- 预期行为:在不丢失上下文的情况下提供权益信息。
轮次 4
- 用户:“你能确认我订购了什么吗?
- 预期行为:召回并汇总订单。
预期结果
- 设备订单已完成。
- 福利问题得到准确解答。
- 上下文跨轮次保留。
- 不会重新请求信息。
常见缺陷
在设计和评估多轮次对话时,请注意以下常见问题:
- 评估将处于隔离状态,而不是在完整会话上下文中进行,这可能会隐藏与内存、连续性和任务完成相关的故障。
- 仅测试理想 () 方案,这些方案无法反映实际用户行为,例如多义性、更正和中断。
- 忽略短会话和长会话之间的差异,其中短流经常错过完成和长流会导致上下文偏移。
- 不包括对抗性或意外的用户行为,例如有冲突的输入、主题切换或模糊的请求。
- 定义不明确或隐式的用户目标,使得很难确定对话是否成功。
- 过度指定预期响应,这会降低灵活性并错误地惩罚有效变体。
- 未能测试错误处理和恢复路径,从而在代理对故障的响应方式上留下差距或缺少信息。
最佳做法
使用以下做法设计有效且可缩放的多轮次评估:
- 从一小部分表示最常见或关键会话流的高价值方案开始。
- 为每个测试用例定义明确的用户目标,并使用目标完成作为主要成功指标。
- 测试直接 (用户都提供所有预先输入) 和引导式 (代理通过多个轮次收集输入) 完成路径。
- 首先使用对话级断言,然后添加轮次级断言,以便进行更深入的验证。
- 设计反映真实用户行为的方案,包括说明、更正和主题切换。
- 通过确保代理使用以前提供的信息而不重新询问来显式验证上下文保留。
- 包括错误处理和恢复方案,确保代理通信失败并提供后续步骤。
- 使用灵活的基于行为的断言,而不是确切的响应匹配。
- 通过定义预期行为而不是确切的措辞,确保测试可重现,同时保留真实感。
- 根据观察到的故障和不断变化的使用模式持续迭代和优化测试用例。