今天我们推出 LangSmith Fine-Tuning 以及smithtune,一个帮助团队将LangSmith 轨迹转化为其智能体的自定义微调模型的 CLI。它通过一个 CLI 处理整个微调流程:从 LangSmith 轨迹创建和准备数据集、使用 Fireworks 或 Baseten 进行训练,以及使用 LangSmith 进行评估。你可以直接运行smithtune,或者与你的编码智能体协作来运行命令并检查结果。
smithtune专为后训练模型而构建。它目前支持监督微调(SFT),即使用良好行为的示例来训练模型。你向模型提供输入/输出,它通过更新模型权重来模仿该行为进行学习。LangSmith 轨迹数据旨在支持 SFT,而smithtune有助于将这些轨迹转化为有用的训练数据。
这为团队提供了一种无需手工构建数据管道即可训练专用模型的方式。基于你的示例训练出的模型,在特定任务上往往能达到与通用前沿模型相当甚至更好的表现,且通常成本更低、延迟更小。
在 GitHub 上试用 LangSmith Fine-Tuning,并通过从代码仓库安装smithtune skill,让你的编码智能体端到端地驱动整个微调流程。
微调收益最大的驱动因素之一是数据选择。随着smithtune的推出,连接这一闭环变得更加容易——从 LangSmith 中精选的生产轨迹,到托管训练,再到 Fireworks 上部署的模型。团队可以无缝地从数据走向训练再到部署,而无需沿途搭建基础设施。这正是我们期待与 LangChain 共同构建的路径。– Pranav Jain,Fireworks 产品负责人
smithtune's与 Baseten Loops 的集成让团队能够在几分钟内从数据收集走向运行微调实验。借助 Loops 提供的全托管训练基础设施,构建者能够持续收集和整理更好的数据,从而随着时间推移产出更好的模型,这样他们就能专注于为其最大的客户用例进行设计。– Aaron Ellis-Bloor,Baseten 应用研究员
智能体轨迹与后训练
在深入了解smithtune所提供的能力之前,让我们先讨论一下智能体轨迹。
轨迹(trajectory)是消息、工具调用和工具结果的有序序列,展示了智能体如何完成一项任务。LangSmith从 trace 或 thread 中组装这一序列,将支持的消息格式统一为一种通用表示,保留工具定义,并移除重复的历史记录。
LangSmith 轨迹格式在设计时就考虑到了后训练。对于 SFT,学生模型需要教师模型在产生成功结果时所拥有的确切上下文。在复杂的长时运行智能体中,工具可用性上下文往往会随着智能体的工作而发生变化(例如,延迟工具加载),而简单粗暴地导出最终消息列表会丢失这种细微差别。LangSmith 的轨迹格式精确记录了模型在每一轮所看到的内容,因此 smithtune 可以将每个动作与其真实上下文配对。

smithtune在整个工作流程中使用轨迹。你筛选出成功的示例轨迹,为所选模型准备这些数据,并基于其记录下来的响应和工具调用进行训练。被排除在训练集之外的轨迹则为评估提供上下文和参考动作。
分步操作指南

构建你的数据集
数据集包含目标模型将要拟合的“黄金”轨迹。这些数据是监督微调的基础。
使用以下工具创建数据集时,有几个关键阶段smithtune:
- 拉取数据集:
smithtune将轨迹从 LangSmith 追踪项目拉取到本地目录DIR,并支持可选的过滤器。 - 标注 Trace:
smithtune与人类(及其智能体)协作,识别“优质”trace 的特征,据此创建评分标准,然后派出一组智能体来审查并筛选出适合 SFT 的优质候选轨迹 - 存储持久化数据集:
smithtune确保任何用于训练的数据日后都能作为持久化工件被审计。它将商定好的黄金轨迹集合上传到 LangSmith 数据集,用于训练和评估。
在此过程中smithtune会处理以下细节:
- 通过过滤超出指定序列长度的 trace,确保轨迹与所选模型兼容
- 将数据划分为训练/验证/测试集,以供下游评估使用
训练模型
在正式投入训练之前,smithtune plan帮助人类审查他们的设置,例如所选模型、训练样本数量,以及学习率、批量大小和轮数等超参数。
你可以在运行之前调整这些设置smithtune train以启动微调任务。smithtune将任务提交到Fireworks managed SFT或Baseten Loops它们支持在你准备好的轨迹上进行 LoRA 训练。你这边无需管理 GPU 配置或训练基础设施。在训练期间,smithtune还会检查验证集上的性能,并选择验证损失最低的已保存检查点。
评估结果
训练完成后,运行smithtune evaluate以将所选检查点与基础模型进行比较。
smithtune使用内置的回放评估来测试基础模型与微调后的模型。评估模型能否完成黄金轨迹中的动作,并由评判者对预测结果与真实记录的样本进行打分。
CLI 会返回一个 LangSmith 对比链接,结果会随着评估进展逐步显示。你可以比较分数、检查单个响应和工具选择,并查看微调在哪些方面有所帮助或引入了退化。
部署你的模型
如果你对评估结果满意,使用smithtune deploy来服务你微调后的模型并将其连接到你的应用。
如果结果不是你想要的,就优化你的数据集或调整训练设置,然后再次训练和评估。你可以与你的编码智能体一起在 LangSmith 中查看对比,以确定哪些响应或工具选择需要更多改进。
实际运行的结果
为了评估我们的smithtune流程的质量,我们将其应用于 LangChain 中两个高频使用的智能体:
- Engine分析智能体轨迹以发现失败并归组相关问题。使用 Engine 中某个智能体的精简版本,我们测试了 SFT 能否提升其识别和组织这些问题的能力。
- OpenSWE Review审查我们真实代码仓库中的代码变更。我们测试了 SFT 能否在减少查找缺陷所需工作量的同时保持审查质量。
Engine:通过专业化实现更高的任务性能
我们整理了一组优质轨迹,并用它们对基础版 Kimi K3 进行微调。基础版 Kimi 模型本已很强,但我们已经穷尽了通过 harness engineering 进一步推动它或 GPT-5.6 Sol 的能力。微调后的模型在 IssueBench(我们内部的 issue 检测与分组基准测试)的一个子集上得分远高于基础版 Kimi 和 GPT-5.6 Sol。
| 模型 | 任务得分 ↑ |
|---|---|
| GPT-5.6 Sol | 87.0 |
| Kimi K3 | 90.0 |
| Kimi K3 + SFT | 96.0 |
OpenSWE Review:质量相近,调用更少
我们还在一个内部评估集上评估了 Qwen-3.8-27B,该评估集由真实 pull request 组成,用于衡量代码审查质量和 bug 检测能力。在这项对比中,SFT 将 F1 从48.9% 提升至 53.7%,同时使用的模型调用减少了 29.8%,工具请求减少了 29.4%。
| 模型 | F1 ↑ | 精确率 ↑ | 召回率 ↑ | 每次审查的模型调用数 ↓ | 每次审查的工具请求数 ↓ |
|---|---|---|---|---|---|
| Qwen-3.8-27B | 48.9% | 62.9% | 40.0% | 55.9 | 65.8 |
| Qwen-3.8-27B + SFT | 53.7% | 81.5% | 40.0% | 39.2 | 46.5 |
一个更早、筛选不那么严格的训练集在 SFT 后反而降低了 F1 分数。随后我们回到数据整理流水线,为每条 Trace 增加了一个审查阶段,目的是对智能体认为确实存在潜在问题的轨迹进行过采样。
实际的机会在于:以更少的模型和工具调用实现相近的审查质量。这意味着每次审查的成本更低,每个 PR 的审查时间更快。
关于后训练的考量
SFT 何时有意义
当你的应用执行重复性任务,并且你拥有它应如何表现的示例时,SFT 尤其有用。寻找你希望模型学习的一致模式,例如遵循工作流、利用工具结果决定下一步做什么,以及验证自身的工作。
我们建议团队从 harness engineering 入手,以了解一个更好的harness是否能带来良好性能。如果智能体在任务上仍然反复犯错,而你又拥有展示如何正确完成该任务的轨迹,那么 SFT 就是一个非常值得尝试的候选方案。
数据选择
我们一再发现,最成功的后训练运行来自于投入时间为训练做数据选择。smithtune明确帮助用户用智能体查看他们的数据,我们发现让领域专家与智能体一起审查 SFT 的 trace 能提高后训练运行成功的几率
LangSmith 微调入门
LangSmith 微调现已进入公开测试阶段。要开始使用,你需要:
- 一个LangSmith 账户包含来自你的智能体的 trace
- 一个 API key,用于Fireworks或Baseten
- 该
smithtuneCLI
在 GitHub 上试用smithtune,并告诉我们你接下来想看到什么。在我们持续改进 LangSmith 中的微调工作流时,我们很期待你的反馈。