跳到主要内容

3 篇博文 含有标签「multi-turn」

查看所有标签

评分了每一轮对话却错过了整个交流:聊聊多轮评估的陷阱

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的评估仪表盘是一片绿色。单轮准确率(turn-level accuracy)保持在 95%,LLM 裁判(LLM judge)与你的标注人员意见一致,每一项回归测试在上线前都顺利通过。然后,一名用户提交了一个 bug:在第九轮对话中,智能体推荐了一个 Postgres 索引,但这直接违反了用户在第一轮中设定的“我们使用的是 DynamoDB”这一约束。你调出对话记录。每一轮对话如果拆开来看,都是合理的回复。但如果把整个对话作为一个整体来看,那就是一场灾难。

这是单轮评估(turn-level evaluation)的核心谎言。它对“请求-响应”对进行评分,因为这是标注成本最低的单位,并且它默认假设一段对话仅仅是你可以取平均值的独立轮次的组合。事实并非如此。第九轮的响应是以之前发生的一切为条件的,而那些真正触达用户的失败几乎从未存在于单轮对话内部——它们存在于轮次之间的缝隙中,在那里状态丢失、假设变得僵化,微小的错误复合成一个完全错误的最终答案。

长对话中的意图漂移:为什么你的智能体目标表征会失效

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数关于上下文窗口(context windows)的讨论都集中在模型能“容纳”什么。更难的问题是模型如何“处理”它所容纳的内容——具体来说,它如何追踪对话者不断演变的目标。

意图并非一成不变。用户从模糊的描述开始,通过迭代不断细化,有时会自相矛盾、离题或修正。他们在第 40 条消息时真正的需求,未必是他们在第 2 条消息中所表达的内容。如果一个智能体将上下文视为扁平的追加日志,它会堆积所有信息——但仍然会误判当前的意图。

用于多轮 Agent 评估的合成用户:当你的测试固件需要“反击”时

· 阅读需 11 分钟
Tian Pan
Software Engineer

单轮评估擅长一件事:在用户输入一次后便离开的任务中对模型进行排名。但对于你实际发布时会遇到的故障模式,它们毫无用处。比如在第三轮对话时就忘记用户目标的 Agent;在礼貌的重复询问下(“你确定吗?能再检查一下吗?”)就屈服并推翻正确答案的 Agent;或者在第四轮对话时还在问第二轮已经问过的澄清问题的 Agent,因为它读不懂自己的历史记录。这些问题都不会出现在对话仅进行一次交互就结束的基准测试中。

你可以进行真实用户评估,但每次发布都需要耗费数百小时的人工审查,而且问题往往在发布三周后才浮出水面。或者,你可以构建由 LLM 驱动的合成用户——具有人物角色 (Persona)、目标、耐心和放弃阈值的机器人——每晚针对待选 Agent 运行数千次对话。这是 τ-bench、AgentChangeBench 以及 2025–2026 年大多数生产级对话评估方案背后的方法。这种方法行之有效,直到它失效为止,而它失效的方式往往能让你更深刻地了解你的评估流水线,而不是合成用户本身。