如何将轨迹转化为训练数据集?
摘要
本文介绍了一个将AI代理轨迹转化为带标签训练数据集的过程,详细说明了自动捕获、策略采样和基于标准的明确标记等步骤。
以下是一个使用退款代理的实际示例,展示每个阶段具体涉及什么。
步骤1:将每次运行捕获为轨迹
如果你的代理已经设置了监控,那么这一步你已经完成了。每次运行都会生成一个轨迹:给定的目标、每次模型调用、每次工具调用、来自环境的每次观察以及最终结果。这个轨迹是下游所有工作依赖的原材料。
行业正在为此建立共同的术语表。OpenTelemetry的GenAI工作组自2024年起一直在为LLM调用构建标准span属性,将模型名称、token数量、延迟和工具执行作为一等字段,而不是每个团队从头发明的东西。这比听起来更重要,因为每次切换可观测性供应商都必须重新设计的轨迹模式,是没有人足够信任来在其上构建数据集的。
这也是像Overmind这样的工具通常所在之处。它的SDK直接包装模型调用接口,因此一个overmind.init()调用就能捕获跨OpenAI、Anthropic、Google Gemini和Agno的所有LLM调用,记录输入、输出、延迟、token数量和错误,而无需你额外配置。关键不在于SDK本身,而在于捕获必须是自动且全面的,否则下游的采样和标记阶段永远得不到所需的原材料。
步骤2:采样,因为你无法标记一切
你不应该尝试标记每次运行。代理在给定一周内所做的大部分事情都是平庸的,审查所有内容不会教给标记团队任何新知识。这个阶段的任务是挑选哪些运行值得人类关注。三种策略涵盖了大多数情况:
采样策略 | 给你什么 | 何时使用
随机采样 | 对代理在普通一天行为的真实基线 | 每个周期,作为比较其他所有内容的对照切片
分层采样 | 刻意覆盖你已经关注的案例,如特定退款原因、客户层级或经常超时的工具 | 当已知细分比平均运行更重要时
失败加权采样 | 每次运行信号最多,因为出错的运行携带最多信息 | 当你有错误标志或满意度分数可用于排序时
在退款代理每周50,000次运行中,合理的抽样量约为500次:一个随机切片加上所有遇到错误或低满意度分数的运行。无论你选择哪种策略,都要定期运行,开始时每周一次,而不是将其视为生产中断后才记得做的一次性导出。
步骤3:基于实际的良好标准进行标记
这是几乎所有人都跳过的步骤,也是决定数据集是否有价值的关键一步。直觉是凭感觉标记:浏览一次运行,觉得它没问题,就移动到下一个。这在一百次运行时有效,但在一万次时完全崩溃,主要因为“觉得没问题”对每个审查者来说意义略有不同,即使对同一个审查者也会随时间漂移。
替代方案是明确写下什么是良好的,并根据该标准对每次抽样的运行进行评分。你并非从零开始。你代理的代码库已经编码了大部分它应该做的事情:它应该产生的输出、允许调用的工具、行动前运行的检查、应该和不应该走的路径。先读代码,大多数标记标准就直接出来了。
对于退款代理,阅读后产生一个如下清单:
标准 | 要求 | 示例违规
退款在条款内 | 金额在订单价值和30天窗口内 | 退款了90天前的订单
不发明条款 | 仅引用发布的退款条款 | 引用了不存在的退货规则
升级争议 | 将拒付交给人工处理 | 自动退款了争议费用
自动化评分步骤是LLM-as-judge技术成为实用默认方案的地方,因为手动根据标准审查数千次运行无法扩展。这种方法有真实的限制值得了解:研究比较LLM法官与人工标记的相关性数据发现强排名相关性,但仅公平一致于精确标签,准确性在更细致的类别上急剧下降,而不是简单的通过/失败调用。对LLM-as-judge方法的调查指出,它特别出现是因为手动评估训练数据中的有用性变得太昂贵而无法大规模手动进行,这正是标记管道正在做的权衡。
Overmind将此评分作为评估器运行,基于你编写的标准。六种评估器类型涵盖从确定性检查到LLM法官,每次运行都在结果计入前根据基线进行评分。无论客户之后点击什么,未通过标准的运行都是你拥有的最高价值训练数据。标签编码了你对什么是良好的判断,而这个判断是通用工具无法为你提供的。
在第一个月自己完成第一轮。这是找出你实际标准的最快方式,而不是你在编写清单时假设的标准。
步骤4:构建训练集
标记的运行还不是训练示例。最后一步根据你要运行的方法塑造它们,而方法决定形状。
监督微调(SFT) | 强化学习(RL)
保留哪些运行 | 通过所有标准的运行
每行内容 | 你想要重复的行为的输入-输出对
模型学习什么 | 模仿一组固定的良好示例
标记必须产生 | 每个标准的通过/失败裁决
无论哪种方式,格式都需要一致且机器可读,每个运行都附有目标和结果。
这也是小型、专用模型的理由变得具体的地方。Overmind自己的研究认为,代理工作流中的每次模型调用都是高质量训练数据的自然来源,正是因为提示词是狭窄且明确定义的,通过/失败信号清晰,不像开放式聊天数据。一个团队监控其模型调用,对产生的模式进行聚类,并在其上微调专用模型,最终得到一个随着每次生产运行而改进的系统,而不是一个在预训练时从通用模型偶然学习后就冻结的系统。
你喂给哪个方法,监督微调或RL,是另一个单独的决定。来自步骤1到3的数据集就是喂给任一个的。
为什么这是困难的部分
这四个步骤本身都不 exotic。让整件事困难的是它永不停止。生产不断产生新轨迹,你的标准随着发现未预料到的边缘案例而变得更加精确,数据集必须根据用户本周的实际行为重建,而不是上个季度的行为。图表顶部的虚线反馈线就是整个工作。
这也正是大多数可观测性工具留下的空白。Datadog自己关于GenAI追踪的文章直接提到了这一点:团队被鼓励将有趣的生产轨迹提升为精选的、版本控制的“黄金”数据集,并在其上叠加评估元数据,这本质上是从可观测性方面描述的相同捕获到标记管道。
可观测性平台给你轨迹并停止。将生产轨迹缝合到行为训练数据再到部署的改进模型的工作,如今大多发生在电子表格和一次性脚本中,这正是像Overmind这样的平台旨在弥合的特定差距,端到端运行优化-评估-接受循环,而不是将其留作手动导出。
拥有那个标记的数据集很重要,因为代理AI的差异化越来越体现在专有行为数据上,而不是你使用的哪个基础模型。
相似文章
@henrytdowling:这是一篇精彩的文章,介绍了你可能没有正确使用你的agent traces。
这篇文章讨论了在使用AI agent traces时的常见错误,并提供了正确实施的建议。
OpenDiscoveryTrace: 用于评估AI科学家工作流的过程追踪
OpenDiscoveryTrace 是一个公开数据集,包含558条AI科学代理轨迹,不仅捕捉输出,还捕捉推理过程,以便在多个模型和领域间对科学方法进行审计和评估。
通过执行轨迹解释AI代理
本文介绍了一个事后可解释AI框架,该框架将AI代理执行轨迹转换为结构化报告和自然语言解释,以实现透明度和可审计性。
@lhoestq: 未来是将代理轨迹转换为SFT数据集。为此有一个很棒的库:pip install teich
一个名为teich的库可以将代理轨迹转换为有监督微调(SFT)数据集,简化了AI训练的数据集准备。
构建智能体轨迹数据集的实用指南
一份构建结构化智能体轨迹数据集的实用指南,用于训练使用工具的智能体,强调设计包含六个关键部分的轨迹的重要性,并将轨迹视为数据资产而非日志。