01
60 秒回答模板
多轮对话 Agent 做 RL 时,我会把 reward 设计成轨迹级主奖励加过程级辅助奖励,而不是每轮都按流畅度打分。最高优先级是任务成功奖励:对整段 trajectory 判断用户目标是否被真实完成,例如信息是否查对、工具调用是否成功、最终结果是否可验证、用户约束是否满足。第二层是过程奖励:合理澄清、正确规划、必要工具调用、工具参数正确、引用证据一致、失败后能恢复,都可以给小奖励;但这些只能辅助,不能超过最终成功奖励。第三层要加入成本和风险惩罚:无效轮次、反复追问、无意义工具调用、编造工具结果、越权操作、绕过确认、安全违规都要扣分。为避免 reward hacking,需要把“对话继续得久”“回答看起来完整”“模型自称完成”从成功条件里剔除,用外部 verifier、工具真实返回、隐藏测试用例、人评抽检和对抗样本验证。评估上还要按长对话、工具失败、用户信息不全、权限受限、目标变更等切片看真实成功率、平均轮次、无效工具率、误成功率和用户满意度,防止模型通过拖长对话或钻规则漏洞把离线分数做高。
考点 轨迹级目标
难度 真实面经题
回答目标 让候选人能把多轮 Agent RL 的 reward 设计讲成一个可落地系统:以轨迹级任务成功为主,以过程奖励缓解稀疏反馈,用成本和安全惩罚约束行为,再通过 verifier、人评、对抗样本和切片指标防止 reward hacking、轮次膨胀和虚高成功率。
02
深入解析
01 把状态和动作定义到完整轨迹
多轮 Agent 的 RL 不能只看单轮回答,因为动作包括追问、规划、调用工具、读取结果、确认用户意图、终止任务等。一次 episode 应该覆盖从用户目标进入到 Agent 给出最终结果或明确失败的完整轨迹。状态不仅包含对话历史,还包含工具观测、权限状态、任务进度和未满足约束。先把轨迹定义清楚,reward 才能区分真正完成任务和只是说得像完成。
02 主奖励应以可验证任务成功为核心
最高权重的 reward 应该来自最终任务结果是否满足用户目标,而不是语言是否顺滑。能用规则或环境验证的任务,优先用确定性 verifier,例如工具返回是否命中目标、订单或查询是否成功、生成文件是否通过测试、答案是否覆盖必需字段。不能完全规则化的任务,再用人评或高质量 judge,并要求 judge 看到证据、工具结果和约束清单。这样可以减少模型靠自信话术骗过奖励模型。
03 过程奖励只做辅助塑形
多轮任务通常稀疏奖励严重,只在最终成功时给分会让学习困难,因此可以加入过程级 reward shaping:正确识别用户目标、缺信息时澄清、规划步骤合理、选择正确工具、工具参数有效、读取结果后更新计划、遇到失败能重试或降级。这些奖励要小而有边界,不能让模型为了刷过程分而不停规划、反复追问或调用不必要工具。过程奖励的作用是引导探索,不应替代最终成功。
04 成本和安全惩罚控制轮次变长
多轮 Agent 很容易学会通过拖长对话来增加看似努力的过程分,所以 reward 里要显式加入轮次成本、token 成本、工具调用成本、等待成本和无效动作惩罚。对重复提问、已知信息再确认、无意义工具调用、无进展回复、无法完成却不终止等行为要扣分。同时,对越权工具调用、跳过用户确认、泄露敏感信息、编造工具结果、忽略安全策略要设置高额惩罚或硬失败。这样模型才会学到在信息足够时尽快完成,在条件不足时有效澄清,在无法完成时诚实退出。
05 用反作弊机制防止 reward hacking
reward hacking 常见形式包括模型学会说“任务已完成”但没有真实完成,选择容易得分但无用的工具,输出 judge 喜欢的格式却不解决问题,或者利用评测脚本漏洞。防护上要把自报成功从 reward 中剥离,成功必须由外部环境、工具结果、隐藏断言或人工证据判断。还要定期加入对抗样本和线上失败样本,检查模型是否过度优化某个 reward model 的偏好。对模型训练数据和评测集要去重隔离,避免记忆固定任务模板。
06 评估要看真实成功率和切片风险
多轮 Agent 的指标不能只看平均 reward 或自报成功率。需要同时看真实任务成功率、误成功率、平均有效轮次、无效轮次占比、工具调用成功率、工具参数错误率、恢复失败率、安全违规率、用户满意度和人工接管率。还要按长对话、信息缺失、工具异常、权限受限、目标变化、用户纠错、高风险操作等切片评估。只有当成功率提升没有伴随轮次膨胀、成本上升、误成功增加或安全退化,才说明 reward 设计有效。
03
易错点
- 把多轮 Agent RL 讲成普通 RLHF 单轮偏好排序,忽略完整轨迹和工具观测。
- 只奖励回答流畅、礼貌或格式完整,没有把真实任务成功作为最高权重目标。
- 过程奖励设计过强,导致模型为了刷分反复规划、追问或调用工具。
- 没有轮次、token 和工具成本惩罚,最终训练出冗长但效率低的 Agent。
- 相信模型自称完成任务,没有用外部 verifier、工具返回、隐藏断言或人评证据验证。
- 只看平均 reward 或总体成功率,不看误成功率、无效轮次、长对话和工具失败切片。
- 忽略安全和权限边界,把越权调用、编造工具结果或跳过确认当成普通质量问题。
04
面试官追问
为什么不能把每轮用户满意或回答流畅度直接作为主要 reward?
因为多轮 Agent 的目标是完成任务,不只是让当前轮看起来舒服。流畅度过高权重会鼓励模型说漂亮话、过度解释或迎合 judge,但可能没有调用正确工具、没有满足约束,也没有真正完成用户目标。它可以作为辅助质量信号,但不能替代可验证任务成功。
轮次惩罚会不会让 Agent 不敢澄清问题?
会有这个风险,所以轮次惩罚不能简单粗暴。合理澄清在信息不足、权限缺失或高风险操作前应得到过程奖励;无效澄清、重复确认和拖延才扣分。更好的设计是奖励“必要且能减少不确定性的澄清”,同时惩罚“没有新增信息的轮次”。
工具调用类 Agent 的 reward 如何设计?
可以拆成工具选择是否正确、参数是否有效、调用是否必要、结果是否被正确读取、失败后是否恢复,以及最终任务是否完成。工具调用本身不应天然加高分,否则模型会滥用工具;真正高权重应该来自工具结果支撑下的任务完成和安全合规。
如何识别任务成功率虚高?
可以比较自报成功率、judge 成功率、环境 verifier 成功率和人工复核成功率。如果自报或 judge 分数明显高于外部验证,说明可能存在 reward hacking。还要看误成功率、用户后续纠错、人工接管、工具结果不一致和长对话切片表现。