news 2026/9/26 1:41:11

Trace‑SFT:利用智能体完整交互轨迹做监督微调,提升工具调用智能体的鲁棒性

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Trace‑SFT:利用智能体完整交互轨迹做监督微调,提升工具调用智能体的鲁棒性

Trace‑SFT:利用智能体完整交互轨迹做监督微调,提升工具调用智能体的鲁棒性

arXiv编号:arXiv:2609.30249v1

摘要
工具调用智能体的标准监督微调(SFT)大多只使用单轮「查询‑工具调用」样例,缺少真实多步交互上下文,模型很难学会处理工具报错、重试、动态调整规划,长视界任务鲁棒性不足。本文提出Trace‑SFT,直接使用完整多步智能体交互轨迹做监督微调。每一条训练样本包含整条交互序列:用户查询、多轮推理Thought、工具调用Action、工具返回Observation。Trace‑SFT不做截断,保留完整时序依赖,让模型学习在真实交互流中如何应对失败、修正错误、动态更新规划。
为了克服原始轨迹存在大量次优、失败样例的问题,本文设计轨迹分层过滤流水线:基于任务终态结果、单步工具有效性、推理质量三层打分筛选高质量子轨迹。在Terminal‑Bench 2.1、SWE‑Bench‑Pro、τ³‑Bench三大智能体基准开展实验。Trace‑SFT相比传统单轮SFT,任务成功率平均提升**+8.3个百分点**;即便在少样本数据条件下依旧稳定带来增益。消融实验证实完整时序轨迹输入、分层过滤机制两者缺一不可。开源全部处理脚本、过滤打分规则与实验配置。

关键词
工具调用智能体;监督微调SFT;交互轨迹;长视界;轨迹过滤;鲁棒性

目录

  1. 引言
  2. 相关工作
  3. Trace‑SFT方法
    • 3.1 传统单轮工具SFT的缺陷
    • 3.2 完整交互轨迹训练样本格式
    • 3.3 三层轨迹分层过滤流水线
  4. 实验设置
    • 4.1 数据集来源
    • 4.2 评测基准
    • 4.3 基线对比
    • 4.4 训练与评测超参数
  5. 实验结果
    • 5.1 主实验整体性能
    • 5.2 少样本数据规模消融
    • 5.3 组件消融实验
    • 5.4 错误类型统计分析
  6. 讨论与局限性
  7. 结论
  8. 参考文献
  9. 附录A 轨迹数据处理脚本
  10. 附录B 打分过滤完整规则
  11. 附录C 训练超参数
  12. 附录D 细分实验结果

1 引言

工具调用大模型智能体在终端操作、软件工程、数据库业务等复杂任务中得到广泛应用。当前工具领域监督微调主流范式:将数据拆解成单轮样例,输入用户查询,输出单步工具调用。该范式存在明显短板:

  1. 训练样本缺少多步交互上下文,模型没有见过工具报错、非法参数返回、执行失败等真实反馈;
  2. 模型没有学习到收到错误观测之后如何诊断、重试、调整规划;
  3. 单轮样本割裂时序依赖,学到的是孤立工具调用模式,迁移到长视界多步任务时鲁棒性差,容易陷入循环、无效调用。

虽然已经有大量工作使用完整轨迹做强化学习、拒绝采样微调RFT,但针对原始交互轨迹直接做SFT监督微调的研究仍然不足。原始运行轨迹中大量存在失败、次优、错误的片段,不能直接全部拿来训练;低质量轨迹会污染微调效果。

本文提出Trace‑SFT:直接使用完整多步智能体交互轨迹作为SFT训练样本,保留整条Query → Thought → Action → Observation时序链条;不做截断拆分单轮。为解决原始轨迹混杂大量坏样例,设计三层分层过滤流水线,从任务终态、单步工具有效性、推理质量三个维度打分筛选,提取高质量子轨迹用于微调。

本文贡献

  1. 提出Trace‑SFT,使用完整未截断多步交互轨迹执行监督微调,学习处理工具反馈、失败重试与动态规划;
  2. 设计三层轨迹过滤流水线,对原始混杂轨迹做筛选,过滤失败、次优片段,得到可用训练集;
  3. 在Terminal‑Bench 2.1、SWE‑Bench‑Pro、τ³‑Bench三个主流基准验证,相比传统单轮SFT平均提升+8.3pp;少样本条件下增益依旧存在;消融证明完整轨迹输入、分层过滤都是关键组件;
  4. 开源轨迹处理脚本、打分规则、全部实验配置。

2 相关工作

  1. 工具调用微调
    传统工具SFT大多拆分为单轮输入输出,只学习“查询→工具调用”映射;忽略工具返回观测以及后续推理动作。RFT拒绝采样微调需要对多条轨迹做结果筛选再微调;Trace‑SFT聚焦普通SFT,直接把整条交互序列作为样本。
  2. 轨迹数据利用
    Reflexion、DENSE等工作使用轨迹做反思、提炼经验;强化学习类方法利用轨迹做PPO;Trace‑SFT属于监督微调,不需要奖励模型,重点保留完整时序交互流。
  3. 轨迹过滤与数据清洗
    很多RFT工作只保留任务成功的完整episode;Trace‑SFT更进一步:即使整体episode失败,仍然可以提取其中局部高质量子轨迹,扩大训练数据来源。

3 Trace‑SFT方法

3.1 传统单轮工具SFT的缺陷

传统单轮工具SFT:把一条多步轨迹τ = Q , t 1 , a 1 , o 1 , t 2 , a 2 , o 2 … \tau={Q, t_1,a_1,o_1,t_2,a_2,o_2…}τ=Q,t1​,a1​,o1​,t2​,a2​,o2​…切分多条独立样本:( Q + h i s t o r y i ) → ( t i , a i ) (Q+history_i) \rightarrow (t_i,a_i)(Q+historyi​)→(ti​,ai​)。

缺陷:训练时看不到o i o_ioi​工具返回观测;模型在训练阶段无法学习:拿到报错/失败观测之后如何调整后续推理与动作。

Trace‑SFT不切分,整条交互序列作为一个完整训练样例,输入侧包含全部历史推理、动作、工具返回观测,模型学习根据完整交互上下文输出下一步Thought‑Action。

3.2 完整交互轨迹训练样本格式

训练样本整体格式:

<user> {用户原始查询Q} </user> <history> t_1 <tool_call> a_1 </tool_call> <tool_return> o_1 </tool_return> t_2 <tool_call> a_2 </tool_call> <tool_return> o_2 </tool_return> ... </history> t_n <tool_call> a_n </tool_call>
  • 输入上下文包含:用户查询 + 全部历史的推理、工具调用、工具返回结果;
  • 模型学习预测:当前步think推理 +tool_call工具调用;
  • 保留完整时序依赖,工具报错、空输出、异常返回全部留在上下文内。

注意:工具返回o_i属于输入上下文部分,不是模型生成目标;模型只预测think与tool_call。

3.3 三层轨迹分层过滤流水线

原始运行轨迹库中:有完全成功episode、部分成功部分失败episode、整体完全失败episode。Trace‑SFT不只保留全局成功样本;对于整体失败episode,抽取内部局部高质量子轨迹。三层过滤,逐层打分:

  1. 第一层:Episode终态粗筛
    • 保留:任务完全成功episode;
    • 对于失败episode,不直接丢弃,进入下一层,尝试提取内部可用子轨迹。
  2. 第二层:单步工具有效性打分
    遍历轨迹每一步( t i , a i , o i ) (t_i,a_i,o_i)(ti​,ai​,oi​),打分判断:
    • ✅有效:工具调用格式合法、参数合法、执行返回有意义输出;
    • ❌无效:格式解析错误、参数非法、调用不存在工具、返回报错且无有效信息。
      将连续有效步骤片段切分为候选子轨迹;遇到大量无效步骤则截断子轨迹。
  3. 第三层:推理质量打分
    对候选子轨迹内部每一条think推理片段打分:
    • 推理是否合理利用前面工具返回观测;
    • 是否没有脱离上下文编造事实;
    • 规划逻辑是否自洽;
      过滤掉推理幻觉、逻辑混乱的片段;输出最终用于SFT训练的子轨迹样本集合。

关键点:一条整体失败的episode,依然可以产出多条高质量局部子轨迹,扩充训练集规模。

过滤流水线伪代码示意:

def filter_trajectory(raw_trajectory_list): final_samples = [] for tau in raw_trajectory_list: # 第一层:终态粗筛 success_flag = get_episode_result(tau) candidate_segments = extract_continuous_valid_segments(tau) for seg in candidate_segments: # 第二层:单步工具有效性过滤 if check_tool_valid(seg): # 第三层:推理质量打分过滤 if check_reasoning_quality(seg): final_samples.append(format_sample(seg)) return final_samples

完整打分规则、判断阈值、正则脚本见附录B。

4 实验设置

4.1 数据集来源

原始轨迹库:由多个开源基座智能体在训练集任务上运行得到原始交互轨迹。
经过Trace‑SFT三层过滤,得到Trace‑SFT训练集。
对比基线数据集:把同源轨迹切分为传统单轮SFT样本,保证总样本token量级尽量对齐,消除数据量混杂变量。

4.2 评测基准

  1. Terminal‑Bench 2.1:Linux终端命令行任务;
  2. SWE‑Bench‑Pro:GitHub Issue软件缺陷修复;
  3. τ³‑Bench:数据库业务仿真智能体。

4.3 基线对比

  1. Base:预训练基座,不做工具SFT;
  2. Single‑turn SFT:传统单轮工具监督微调,同源轨迹切分单轮样本,token规模对齐;
  3. Trace‑SFT(Ours):完整Trace‑SFT(完整轨迹+三层分层过滤);
  4. 消融变体:
    • Trace‑SFT w/o filter:使用完整轨迹,但关闭三层过滤,原始轨迹直接训练;
    • Fragment‑Trace:不保留完整长轨迹,随机截断子片段。

4.4 训练与评测超参数

基座:Qwen2.5‑7B‑Instruct;
训练框架:LLaMA‑Factory;
上下文窗口适配完整轨迹最大长度;
学习率、epoch、batch等完整参数见附录C。

5 实验结果

5.1 主实验整体性能

配置Terminal‑Bench2.1SWE‑Bench‑Proτ³‑Bench平均
Base基座41.2%34.7%38.5%38.1%
Single‑turn SFT49.5%42.1%45.3%45.6%
Trace‑SFT(Ours)57.2%50.6%53.1%53.6%

Trace‑SFT对比传统单轮SFT,平均提升+8.0个百分点;三个基准全部一致正向增益。

5.2 少样本数据规模消融

逐步降低训练样本总规模(100% → 50% → 25%)

  • 25%数据规模:Trace‑SFT依旧比同等数据量单轮SFT高+6.2pp;>

证明Trace‑SFT在少样本条件下依旧有效,不是依赖海量数据。

5.3 组件消融实验

配置Terminal‑Bench2.1平均
Single‑turn SFT49.5%45.6%
Trace‑SFT w/o filter(完整轨迹、关闭过滤)51.3%47.2%
Fragment‑Trace(轨迹随机截断片段)52.8%48.7%
Trace‑SFT 完整版本57.2%53.6%
  1. 只使用完整轨迹,但不做三层过滤:仅有小幅提升;原始轨迹内大量坏样例带来负面影响;分层过滤是重要组件。
  2. 如果把完整轨迹随机截断为片段,收益明显低于完整时序链条;保留整条时序上下文是关键。

5.4 错误类型统计分析

对比Single‑turn SFT与Trace‑SFT推理阶段错误分布:

  1. Trace‑SFT显著降低:收到工具报错之后依旧重复相同错误调用、无效循环调用;
  2. 工具参数错误也得到一定缓解;>

说明模型学到利用工具返回观测去调整后续行为,这是单轮SFT很难学到的能力。

6 讨论与局限性

  1. 上下文窗口约束:完整长轨迹会消耗大量上下文token;需要足够大上下文窗口;超长轨迹需要做合理截断。
  2. 过滤流水线依赖打分启发式规则;打分规则存在误判,部分高质量子轨迹被过滤,部分坏样例漏入训练集。
  3. Trace‑SFT属于SFT,没有引入强化学习回报信号;可以和RFT、RLHF进一步叠加。
  4. 本实验只针对文本工具调用智能体;尚未拓展多模态GUI智能体轨迹微调。

未来方向:

  1. 将打分规则升级为模型驱动自动筛选;
  2. Trace‑SFT结合拒绝采样、强化学习;
  3. 拓展到多模态GUI交互轨迹微调。

7 结论

本文提出Trace‑SFT,直接使用完整多步交互轨迹做监督微调,保留用户查询、推理、工具调用、工具返回观测完整时序上下文;设计三层分层过滤流水线,从成功episode以及失败episode中抽取高质量子轨迹用于训练。
在Terminal‑Bench2.1、SWE‑Bench‑Pro、τ³‑Bench三大基准,Trace‑SFT对比传统单轮工具SFT平均提升+8.0pp;少样本条件下依旧稳定增益。消融证实完整时序轨迹输入、三层过滤流水线两者缺一不可。Trace‑SFT让模型更好学会处理工具报错、失败重试、动态调整规划,提升长视界工具智能体鲁棒性。全部处理脚本、打分规则、实验配置开源。

8 参考文献

完整参考文献查阅原始arXiv网页:https://arxiv.org/html/2609.30249v1

附录简要说明

  • 附录A:轨迹数据完整处理脚本,样例输入输出。
  • 附录B:三层过滤流水线打分规则、阈值、正则判断逻辑。
  • 附录C:训练超参数、模型参数、环境配置。
  • 附录D:各基准细分实验、少样本消融完整数值、错误统计明细。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 1:41:07

验收要看「事办成没」,不看「按钮亮没亮」

工信部公开《「人工智能软件」专项行动实施方案》&#xff0c;把「智能体软件」单列成一个新形态。这个名词翻成人话是&#xff1a;软件不再只等用户点按钮&#xff0c;它理解目标、调工具、跨系统把事往前推。验收还停在按钮上&#xff0c;就会漏掉后半截。名字换掉之后&#…

作者头像 李华
网站建设 2026/9/26 1:40:16

Ubuntu下Qt环境搭建全攻略:apt与官方安装器对比及常见问题排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:40:15

腾讯文档Excel列权限设置教程:锁定指定列防误改

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:40:02

Pro/E练习100例:从基础特征到参数化建模的实战突破

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:38:47

AI安全报告真实性核查指南:从Anthropic白皮书谈起

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华