涉及到对历史工具调用输出结果进行省略或者总结的agent,SFT RL阶段的训练方式与常规的区别?

谢邀

长的工具链调用我没做过,简单说一些经验供参考

对于这种情况核心难点在于怎么让模型学会"有损压缩"的同时还能完成任务。

最直接的想法是标注"好的总结"作为监督信号。但是这个标注成本极高,而且没有统一标准,比如说什么叫"好的总结"?保留多少信息算合适?不同任务的标准可能完全不一样。

如果是端到端训练,让模型自己学会什么时候该总结、怎么总结。这样做的好处是统一,坏处是需要海量高质量数据,而且很难收敛。所以核心在于教会它“什么重要”。如果你的训练数据里全是那种原始的、冗长的工具返回,模型学会的就是“我只管读,不管消化”。所以训练数据可以把那种几千字的网页抓取结果,重写成几十字的“观察摘要”或者“状态快照”。而且可以在训练数据里一定要注入思维链(CoT),这样模型不能直接蹦出一个总结,而是先推理,比如“xx里包含了大量无关广告,我只需要提取xxx”。这种关于“为什么省略”的推理过程比总结本身更重要。

如果是分开训练,可以先单独训练一个总结模块,然后让Agent在"已经被总结过"的上下文里推理。这种方式工程上容易实现,但理论上不是最优的,因为总结模块不知道Agent后续需要什么信息。

这里还有个点就是上下文窗口管理。你得在训练数据里明确体现:什么时候触发总结(比如token数超过某个阈值),哪些信息必须保留(实体、关键数值、因果关系),多轮累积的历史怎么处理。这些都需要体现在数据分布里,不然模型学不会。

RL阶段我做的比较少主要就是信用分配问题,Agent在第3步总结时丢掉了关键信息,导致第5步推理失败,怎么让梯度正确地惩罚到第3步的决策,我就是直接加了一个value function,专门评估"总结后状态"的质量。

评估的话任务成功率肯定是第一位的,其他的话可以看看信息保留率,比如可以设计一些针对原始工具输出的问题,看总结后还能答对多少,是否合理。

以上供参考

原始链接: https://www.zhihu.com/question/1996245963203961281/answer/1996713038368223855
侵权请联系站方: [email protected]

相关推荐

换一批