100-TOOL COMMERCE AGENT · INTEGRATED SYSTEM STUDY

让复杂电商请求,
先找齐工具,再排对工具链。

面向固定 100 工具的离线系统:先完成意图分流、候选检索与有序工具链规划,再用模型外上下文编排处理自然历史回放与完整新请求切换。

100
固定工具空间
100.00%
截至意图分流 · 9,000 / 9,000
98.24%
截至候选检索 · 8,842 / 9,000
92.62%
单轮 9K 最终有序工具链 · 8,336 / 9,000
候选检索 · 固定案例演示
SINGLE-TOOL · 1 / 1
案例 01 · 物流查询 · 电商请求检索测试

帮我看看这款台灯的包裹送到哪了。

  1. 01
    意图分流电商类 · 进入工具选择
    通过
  2. 02
    混合检索BM25 + 负样本训练向量模型
    前 40
  3. 03
    重排融合精排 20 + 二级 RRF
    输出 10
已找到全部 1 个目标工具
01get_order_logistics目标
100 工具目录1 个目标工具

INTRODUCTION · 项目介绍

任务、工具与三阶段系统

面向固定 100 工具,先判断请求是否需要工具,再找齐全部必要工具,最后输出正确的有序工具链。

最终结果 系统级工具链成功率 · 92.62%

最终系统采用 0.6B 路由、完整负样本检索链与 8B Planner;Planner 先用 77,724 条两种写法的数据完成监督训练,再用当前模型真实错误完成 RPO 与 DPO。9K 逐阶段通过数为 9,000 → 8,842 → 8,336。结果止于工具 ID 序列,不含真实工具执行。

如何判定成功 · 同一批 9,000 条请求逐阶段计算

阶段 01 · 意图分流 Accuracy / Macro-F1

类型预测正确才算路由成功;运行时只有类型决定进入工具系统还是直接响应。

最终 0.6B 路由 · 9,000 / 9,000 · 100.0000%
阶段 02 · 候选检索 AllHit@K

一条请求的全部目标工具都进入 Top-K,候选集合才算完整覆盖。

电商请求 6K · 5,842 / 6,000 · 97.3667% | 9K 累计 · 8,842 / 9,000 · 98.2444%
阶段 03 · 工具链规划 集合 / 工具链全对率

集合全对要求工具集合完全一致;工具链全对进一步要求工具及其顺序完全一致。

最终有序工具链 · 8,336 / 9,000 · 92.6222%

为什么检索有两个百分比:97.3667% 只计算 6,000 条电商请求;98.2444% 还把 3,000 条被 0.6B 正确分流、无需检索的闲聊计入 9K 系统累计值。电商请求随后还要生成完全正确的有序工具链。

多轮结果单独计算:开发集为 991 段、独立测试为 993 段 2~7 轮自然短会话,每段只统计最后一个目标轮;方案 L 的独立测试整体准确率为 94.56%,不接在这条单轮 9K 曲线上。

指标示例AllHit@K 与集合 / 工具链全对率 2 组判定示例
阶段 02 · 候选检索详解

完整覆盖,才算一次命中

候选检索只负责把全部必要工具送进短名单;它不判断最终工具集合是否精确,也不评测执行顺序。

主指标AllHit@K
案例 A · 部分命中失败

“查一下订单详情、物流状态,并帮我确认退款进度。”

目标集合 get_order_detailget_order_logisticsget_refund_status
Top-K 已覆盖 get_order_detailget_order_logisticsget_refund_status · 遗漏

命中 2/3,但必要工具集合仍不完整。

案例 B · 完整命中成功

同一个请求,Top-K 覆盖全部三个必要工具。

目标集合 get_order_detailget_order_logisticsget_refund_status
Top-K 已覆盖 get_order_detailget_order_logisticsget_refund_status

目标工具 ⊆ Top-K,才记为一次成功。

阶段 03 · 工具链规划详解

工具选对,不等于顺序排对

工具链规划既要选出精确工具集合,也要按照用户要求与工具依赖生成正确顺序;因此需要同时报告集合与工具链指标。

主指标集合 / 工具链全对率
案例 A · 标准答案目标

用户要求:先查订单详情,再查物流,最后确认退款进度。

  1. get_order_detail
  2. get_order_logistics
  3. get_refund_status

工具及其顺序共同构成目标工具链。

案例 B · 模型预测顺序错误

工具集合没有遗漏,但后两步顺序被调换。

  1. get_order_detail
  2. get_refund_status
  3. get_order_logistics

集合一致;完整有序序列不一致。

工具范围

100 工具能力底座

100 个工具覆盖 8 个业务域,统一供数据生成、候选检索与工具链规划使用。

完整工具目录浏览 100 个工具及容易混淆的相关工具 8 个业务域 · 100 个工具

当前显示 100 个工具

选择任意工具查看能力描述与相关能力;使用上方业务域快速筛选目录。

实验 01 · 意图分流

先判断请求是否需要进入工具系统

区分电商请求与开放闲聊;只有电商请求进入候选检索。

01 · 规则基线关键词规则50.22%
02 · 未微调0.6B / 1.7B84.76% / 90.47%
03 · 微调后二分类0.6B / 1.7B100.00% / 99.96%
04 · 最终采用0.6B LoRAcheckpoint-2000 · 9K 分类 100.00%

采用说明:最终路由使用 Qwen3-0.6B LoRA checkpoint-2000。它在固定 9K 上分类全对,且比 1.7B 推理更快、显存更低;当前检索只读取原始请求,不使用预测关键词,因此 1.7B 的关键词优势不会传递到后续模块。1.7B 只保留为对照。

01 · 模型选择与主结果先比较路由准确率,再比较两个候选版本的关键词输出 7 个分类版本 · 2 个候选版本关键词指标 · 固定 9K

01A · 分类路由主指标

比较规则、未微调与 LoRA 版本

七个版本使用同一固定 9K 测试集;Accuracy 与 Macro-F1 衡量路由分类。绿色行是最终采用的 0.6B checkpoint-2000,1.7B 只保留作分类、关键词与成本对照。

模型训练状态模型版本AccuracyMacro-F1用途
关键词规则规则基线50.22%48.84%规则起点
Qwen3-0.6B未微调原始模型84.76%83.74%同尺寸训练前基线
Qwen3-0.6BLoRA · 同一 45.6K 样本 · 原始排列训练步 2000100.00%100.00%最终路由模型
Qwen3-0.6BLoRA · 同一 45.6K 样本 · 原始排列训练步 285299.98%99.97%同一次训练的结束版本
Qwen3-1.7B未微调原始模型90.47%88.38%更大模型对照
Qwen3-1.7BLoRA · 同一 45.6K 样本 · 类别均衡排列训练步 160099.88%99.86%最低验证损失版本
Qwen3-1.7BLoRA · 同一 45.6K 样本 · 类别均衡排列训练步 285299.96%99.95%关键词与成本对照

01B · 两个候选版本

补充比较分类判断与关键词输出

由已有预测离线复算,没有重新推理;分类指标覆盖完整 9,000 条,关键词指标只统计其中 6,000 条电商请求。

模型版本分类 Macro-P分类 Macro-R分类 Macro-F1关键词集合全对率关键词 micro-P关键词 micro-R关键词 micro-F1
0.6B · 最终路由100.00%100.00%100.00%56.13%81.01%83.19%82.08%
1.7B · 关键词输出对照99.97%99.93%99.95%57.82%81.15%87.23%84.08%

关键词按 100 个工具的规范标签做字面集合匹配,不是语义等价评分;候选检索直接使用原始请求,不消费预测关键词。因此 1.7B 的关键词 micro-F1 较高只是输出侧差异,最终系统仍选择分类全对且成本更低的 0.6B。

02 · 数据、训练与推理核对每套数据的用途、训练成本与推理效率 45.6K 训练 · 2.4K 验证 · 9K 测试 · 推理 1 × RTX 3090

02A · 每套数据的用途

区分训练、checkpoint 选择与最终路由比较

训练集更新参数,验证集产生 checkpoint-2000;固定 9K 用来比较模型并确定 0.6B 路由,随后复用于系统联合计分。
数据规模构造方法用途
监督训练与验证电商轨迹 + 独立闲聊45,606 / 2,400合计 48,006 条GPT-5.5 Agent 编写的离线生成逻辑依据 100 工具目录构造电商请求;程序化扩展通用与易混淆闲聊,再按固定随机种子划分 95% / 5%;构建时未调用外部 API训练 0.6B / 1.7B;验证集监控损失并保留检查点
意图分流与路由选择入口二分类9,0006K 电商 + 3K 闲聊6K 电商请求由同一离线生成逻辑使用独立表达簇构造;3K 闲聊由主题与句式组合生成,去重后固定打乱比较规则、未微调模型与 LoRA 版本;选出 0.6B 后复用于 9K 系统计分
关键词评测测试集电商子集6,00015,196 个目标标签直接取 9K 中的电商请求,并把目标工具 ID 映射为工具目录中的规范关键词集合计算字面集合全对率与 micro-P / R / F1;候选检索不使用预测关键词

隔离检查:训练与测试的归一化请求、轨迹 ID 和相似请求写法分组精确重合均为 0;闲聊样本独立构建。

02B · 训练记录

比较 0.6B / 1.7B 的 LoRA 训练成本

模型与样本排列最低验证损失版本页面报告版本完整训练训练信息
Qwen3-0.6B45,606 条 · 原始排列训练步 2000loss 0.00038608训练步 2000最终路由模型19 分 39 秒2,852 步BF16 · 批量 32 · 2 轮 · 学习率 1e-4LoRA r16 / α32 / dropout 0.05 · 最大长度 512
Qwen3-1.7B45,606 条 · 类别均衡排列训练步 1600loss 0.00028329训练步 2852关键词输出对照29 分 05 秒2,852 步BF16 · 批量 32 · 2 轮 · 学习率 1e-4LoRA r16 / α32 / dropout 0.05 · 最大长度 512

调参范围:意图实验没有逐项控制学习率、轮数和 LoRA 参数进行网格搜索;这里只比较同一训练参数下的两种模型规模与不同训练步数,因此不能称为“完整超参数搜索”。

02C · 离线推理

比较七个路由版本的离线推理成本

六个神经版本均使用 1 × RTX 3090 24GB;0.6B / 1.7B 的批量分别为 64 / 48。

模型版本硬件 / 批量p50 / p95样本吞吐峰值显存:已分配 / 已保留
关键词规则单线程 CPUMontage Jintide C6230R / 10.1066 / 0.1493ms8,727.45 条 / 秒
0.6B · 未微调RTX 3090 / 6437.23 / 38.35ms27.08 条 / 秒3.65 / 4.73 GiB
0.6B · LoRA · 训练步 2000最终路由模型RTX 3090 / 6445.47 / 49.05ms21.90 条 / 秒4.04 / 5.10 GiB
0.6B · LoRA · 训练步 2852RTX 3090 / 6444.83 / 54.11ms22.06 条 / 秒4.04 / 5.10 GiB
1.7B · 未微调RTX 3090 / 4854.64 / 58.57ms18.52 条 / 秒5.43 / 5.86 GiB
1.7B · LoRA · 训练步 1600最佳验证版本RTX 3090 / 4869.58 / 75.51ms14.36 条 / 秒6.09 / 6.85 GiB
1.7B · LoRA · 训练步 2852关键词输出对照RTX 3090 / 4869.24 / 75.82ms14.41 条 / 秒6.09 / 6.85 GiB

最终选择:相对 1.7B 对照,0.6B 的生成 p50 下降约 34.3%,吞吐提高约 52.0%,峰值已分配显存下降约 33.6%;同时 9K 路由由 8,996 条正确提高到 9,000 条正确。

推理环境:PyTorch 2.8.0+cu128 · Transformers 4.53.2 · PEFT 0.14.0 · 驱动 570.124.04。RTX 3090 记录只绑定推理,不代表历史训练硬件。

延迟如何计算:p50 / p95 是生成阶段在批内平均到每条请求的时间,不含 prompt 构建与分词,也不等同于线上单请求延迟。不同批量以及 CPU 规则方法不直接比较速度;显存只报告本次推理记录的 CUDA 峰值。

峰值显存:“已分配”是推理时模型实际占用的显存峰值,“已保留”是 PyTorch 为复用和缓存预留的显存峰值上限。

实验 02 · 候选检索

候选检索:从训练前基线到最终 Top-10

这一章只负责从 100 个工具中找出 10 个候选,并尽量让本轮需要的工具全部在其中;后续如何选择和排序工具,留到实验 03。

本章阅读顺序

训练前筛选 → 训练与选型 → 最终测试 → 成本与复现

全章使用同一个判断:本轮需要的每个工具都进入 Top-10 才算检索成功;少一个就失败。这里不统计后续规划模型的工具链结果。

01 · 训练前筛选确定比较起点比较向量检索、BM25、融合方法、候选深度和公开重排模型。
02 · 训练与选型训练模型并锁定参数比较负样本和融合方案,最终确定“精排 20、交付 10”。
03 · 锁定后测试检查 Top-10 是否找齐在三套测试上检查必要工具覆盖,并定位漏在哪个检索步骤。
04 · 成本与复现说明数据、时间与产物分开记录训练和测试数据,并解释各模块的计时口径。
本章最终交付 各取 40 → 精排 20 → 输出 Top-10

向量检索与 BM25 各取 40 个候选,第一次融合后精排 20 个,再经第二次融合输出 10 个;实验 02 到这里结束。

01 · 训练前基线与候选筛选先选向量与融合方案,再确定候选深度和重排模型 13 条检索基线 · 4 档一级深度 · 5 个重排模型 · 4 档重排深度

用训练前基线确定微调候选与搜索范围

以下结果均来自固定 6,000 条项目基准,用于建立训练前基线,并据此确定进入任务内微调的模型候选和参数搜索范围;最终模型仍按微调后的开发集结果选择。

01A

比较未微调向量模型与融合方案

4 组单路基线与 9 组固定 N=20 融合;按 AllHit@10 选择后续公开重排的统一候选来源。

类别模型或配置AllHit@6AllHit@10AllHit@30MRR
词面检索BM25 · 备用分词器49.40%55.75%75.95%76.84%
向量检索未微调 BAAI/bge-base-zh-v1.535.83%44.30%71.75%52.02%
向量检索未微调 BAAI/bge-large-zh-v1.538.23%47.63%73.47%56.90%
向量检索未微调 Qwen/Qwen3-Embedding-0.6B30.87%40.60%63.77%49.21%
混合检索bge-base + BM25 · Union · 每路 Top-2048.87%57.93%81.35%75.52%
混合检索bge-base + BM25 · 分数加权 · 每路 Top-2045.43%55.58%81.48%65.03%
混合检索bge-base + BM25 · RRF · 每路 Top-2050.57%60.47%81.37%74.65%
混合检索bge-large + BM25 · Union · 每路 Top-2051.73%62.30%85.67%73.73%
混合检索bge-large + BM25 · 分数加权 · 每路 Top-2046.95%59.88%85.75%67.19%
混合检索bge-large + BM25 · RRF · 每路 Top-20(重排候选来源)50.83%63.67%85.73%71.19%
混合检索Qwen3 向量模型 + BM25 · Union · 每路 Top-2050.42%61.93%86.78%73.34%
混合检索Qwen3 向量模型 + BM25 · 分数加权 · 每路 Top-2042.80%57.40%86.65%61.77%
混合检索Qwen3 向量模型 + BM25 · RRF · 每路 Top-2048.20%62.52%86.85%71.65%
01B

选定融合方案后比较一级候选深度

固定 bge-large + BM25,比较两路各自截取的候选数量。N=20 的 RRF AllHit@10 最高;N=30/50 提高候选池覆盖,但候选更多且未改善 RRF Top-10。

每路候选 N候选池 AllHit平均合并候选Union A@10加权 A@10RRF A@10RRF A@30判断
N=1072.93%16.8662.18%61.60%62.97%72.93%候选较浅
N=2087.88%32.7262.30%59.88%63.67%85.73%进入公开重排比较
N=3093.45%47.1462.32%58.20%59.63%86.50%覆盖更高,Top-10 回退
N=5097.65%71.1762.40%58.68%62.35%82.22%覆盖最高,成本最高
01C

固定候选池后筛选待微调的重排模型

5 个公开模型共享 bge-large + BM25 + RRF 候选池:两路各取 Top-20,合并后最多重排 40 个;其中 4 个进入后续任务内微调,Jina 仅作训练前对照。

模型推理框架AllHit@6AllHit@10AllHit@30MRR
BAAI/bge-reranker-baseFlagEmbedding58.18%68.83%87.68%82.50%
BAAI/bge-reranker-largeFlagEmbedding59.85%69.67%87.25%82.97%
BAAI/bge-reranker-v2-m3FlagEmbedding56.22%65.88%87.27%82.35%
jinaai/jina-reranker-v2-base-multilingualFlagEmbedding46.52%57.18%86.98%71.11%
Qwen/Qwen3-Reranker-0.6BSentenceTransformers67.02%77.32%87.65%88.45%
01D

固定未微调最优重排模型,比较候选深度收益

上表五个模型都使用 N=20;这里单独增加候选数量,只观察质量与成本如何变化。

每路候选 N平均合并候选AllHit@6AllHit@10AllHit@30MRR
N=1016.8664.68%70.58%72.93%88.35%
N=2032.7267.02%77.32%87.65%88.45%
N=3047.1467.28%78.05%91.47%88.57%
N=5071.1767.48%78.37%92.83%88.62%
02 · 训练与参数选择从向量训练方案到“精排 20、规划读取 10” 9 组向量预筛 · 5 种负样本 × 3 种子 · 1,190 → 24 条一级路线 · 14 组深度

先确定基础训练参数,再用独立开发集选出最终检索链

先预筛向量模型、学习率和训练轮数,再以同一训练设置比较负样本方案;随后选择一级检索路线和微调重排模型,联合确定精排深度 R、规划输入深度 P 与二级融合参数。

02A

预筛向量模型与基础训练参数

九组 MNRL 对比训练比较模型、轮数与学习率;共同使用 24K 训练轨迹、无显式负样本和固定随机种子 20260707。6,000 条日常电商请求的结果只用于观察参数趋势,最终向量模型由下一步独立开发集决定。

向量模型训练设置AllHit@6AllHit@10AllHit@30MRR训练耗时实验作用
bge-base-zh-v1.50.25 轮 · lr2e-5 · 批量 6477.8833%90.1167%99.4167%0.94469150.77 秒训练轮数下界
bge-base-zh-v1.50.5 轮 · lr2e-5 · 批量 6479.1833%91.7333%99.4667%0.9526551 分 45 秒中间轮数
bge-base-zh-v1.51 轮 · lr1e-5 · 批量 6478.8500%92.2500%99.3500%0.9481397 分 19 秒低学习率
bge-base-zh-v1.51 轮 · lr2e-5 · 批量 6481.0167%93.9500%99.5667%0.9570627 分 18 秒标准配置
bge-base-zh-v1.51 轮 · lr3e-5 · 批量 6481.2167%94.4500%99.6000%0.9560737 分 23 秒高学习率
bge-base-zh-v1.51.5 轮 · lr2e-5 · 批量 6481.5667%93.5667%99.5333%0.9581429 分 25 秒更长训练
bge-large-zh-v1.50.5 轮 · lr2e-5 · 批量 6485.5167%95.1500%99.6333%0.9664352 分 57 秒半轮对照
bge-large-zh-v1.51 轮 · lr2e-5 · 批量 6485.8000%95.7500%99.7167%0.96678610 分 18 秒下一步负样本比较的统一起点
Qwen3-Embedding-0.6B0.5 轮 · lr2e-5 · 批量 3282.3500%93.5833%99.5333%0.9571445 分 18 秒不同架构对照

预筛结论:bge-large 在同类预算下优于另外两种基础模型,训练 1 轮又比 0.5 轮高 0.60pp;因此固定 bge-large、1 轮、lr2e-5 和有效批量 64,继续比较显式负样本。该无负样本版本不是最终模型。

02B

在统一训练设置下比较负样本方案

固定 bge-large、1 轮、lr2e-5 与有效批量 64,五种方案各运行三个随机种子,以独立 1,200 条开发集的 AllHit@10 均值选择;采用方案每组包含 1 个正例和 2 个显式负例。

训练方案显式负样本 / 正对单步批量 / 有效批量AllHit@10 · 均值 ± 标准差AllHit@20AllHit@50MRR选择
无显式负样本 · 大批量064 / 6498.7500% ± 0.1179pp99.9167%100.0000%0.996782对照
无显式负样本 · 小批量08 / 6499.0000% ± 0.1361pp99.9445%100.0000%0.996875批量对照
跨领域与新增无关负样本28 / 6499.5556% ± 0.1416pp100.0000%100.0000%0.997292采用
同领域与部分替代负样本28 / 6499.0556% ± 0.3425pp99.9722%100.0000%0.996962种子波动较大
四类负样本全部加入48 / 6499.3611% ± 0.1039pp99.9722%100.0000%0.996493未选择
02C

筛选一级检索路线,保留联合搜索候选

固定采用向量模型,搜索候选数量、向量权重与 RRF 平滑常数;去除重复排名和被全面支配的路线后,将 24 条候选交给下一级联合评估。

阶段搜索或筛选范围路线数进入下一步的依据
完整参数网格每路候选 10 / 20 / 30 / 40 / 50 / 75 / 100 × 17 个向量权重 × 10 个 RRF 平滑常数1,190计算 AllHit@10 / @20 / @30 / @40 / @50 与 MRR
排名去重合并产生完全相同工具排名的参数配置1,043每种排名只保留一条代表路线
多指标前沿按五档 AllHit 与 MRR 去除被全面支配的路线80保留不同覆盖深度上的有效权衡
联合搜索输入综合前沿、各深度强候选与路线排序后截断24与重排架构、5 档候选深度和二级 RRF 联合评估

24 条一级检索候选路线

展示进入重排与规划联合比较的全部路线

每路候选数 N、向量权重与 RRF 平滑常数共同决定一级排名;24 条路线的 AllHit@20 / @30 / @40 / @50 均为 100%,因此表内只展开有区分度的 @6 / @10 与 MRR。最终路线还要与精排和规划联合评估。

#每路候选 N向量 / BM25 权重RRF 平滑常数平均合并候选数AllHit@6AllHit@10MRR后续用途
01300.70 / 0.30143.292595.9167%100.0000%0.997917联合搜索候选
02300.70 / 0.30243.292596.2500%100.0000%0.997917联合搜索候选
03300.70 / 0.30343.292596.1667%100.0000%0.997917联合搜索候选
04300.70 / 0.30543.292596.0000%100.0000%0.997917联合搜索候选
05300.75 / 0.25243.292595.9167%100.0000%0.997917联合搜索候选
06300.75 / 0.25343.292596.1667%100.0000%0.997917联合搜索候选
07300.75 / 0.25543.292596.2500%100.0000%0.997917联合搜索候选
08300.75 / 0.25843.292596.2500%100.0000%0.997917联合搜索候选
09300.80 / 0.20543.292596.0833%100.0000%0.997917联合搜索候选
10300.80 / 0.20843.292596.1667%100.0000%0.997917联合搜索候选
11300.80 / 0.201043.292596.1667%100.0000%0.997917联合搜索候选
12300.85 / 0.151043.292595.8333%100.0000%0.997917训练侧难例挖掘
13400.70 / 0.30156.312595.9167%100.0000%0.997917联合搜索候选
14400.70 / 0.30256.312596.2500%100.0000%0.997917联合搜索候选
15400.70 / 0.30356.312596.1667%100.0000%0.997917联合搜索候选
16400.75 / 0.25256.312595.9167%100.0000%0.997917联合搜索候选
17400.75 / 0.25356.312596.1667%100.0000%0.997917联合搜索候选
18400.75 / 0.25556.312596.2500%100.0000%0.997917联合搜索候选
19400.80 / 0.20556.312596.0833%100.0000%0.997917联合评估后正式采用
20400.80 / 0.20856.312596.1667%100.0000%0.997917联合搜索候选
21400.80 / 0.201056.312596.1667%100.0000%0.997917联合搜索候选
22400.85 / 0.151056.312595.8333%100.0000%0.997917联合搜索候选
23400.85 / 0.152056.312595.9167%100.0000%0.997917联合搜索候选
24400.85 / 0.153056.312595.8333%100.0000%0.997917联合搜索候选

阅读方式:第 12 条只用于从训练划分挖掘重排难例,不进入最终系统;第 19 条与重排模型、候选数量和最终融合共同比较后被采用。一级检索同分,不代表后续工具链准确率与成本也相同。

02D

微调四个候选重排模型,选择架构与学习率

四个模型都完成任务内微调:先为每个模型选择学习率,再比较三个随机种子的开发集均值。这里选择模型,表内延迟对应各行使用的候选数;最终精排数量在 02F 与规划输入数量一起选择。

未微调基线入围模型选中学习率AllHit@6 均值AllHit@10 均值MRR 均值重排候选数估算 p50选择
bge-reranker-base2e-597.6667%100.0000%0.998056107.72ms架构对照
bge-reranker-large6e-598.2222%99.9167%0.9984722048.89ms未选择
bge-reranker-v2-m32e-598.4722%100.0000%0.9977781024.34ms采用
Qwen3-Reranker-0.6B5e-698.3056%100.0000%0.9993061076.45ms延迟较高
02E

固定重排模型,选择负样本组合

每组固定为 1 个正例和 7 个负例;所有方案都先精排 10 个候选,并用另一种模型检查负样本结论是否一致。这里只选择训练方案,最终精排数量由下一步确定。

重排模型与负样本AllHit@6 均值AllHit@10 均值MRR 均值筛选 p50 · R=10选择
bge-reranker-v2-m3 · 3 个按工具类型挑选的负例 + 4 个检索难例98.8889%100.0000%0.99763924.42ms采用
bge-reranker-v2-m3 · 7 个检索难例98.6667%100.0000%0.99805624.38ms未选择
bge-reranker-v2-m3 · 4 个按工具类型挑选的负例 + 3 个随机负例98.4722%100.0000%0.99777824.34ms未选择
Qwen3-Reranker-0.6B · 3 个按工具类型挑选的负例 + 4 个检索难例98.5278%100.0000%0.99916776.97ms架构交互复核
02F

联合比较精排数量与规划输入数量

R 是 Cross-encoder 实际评分的候选数,P 是规划模型最终看到的候选数,并始终要求 P≤R。先保留工具链全对率与最高分相差不超过 0.5pp 的组合,再选择候选更少、输入更短的方案。

精排 R规划 P深度阶段二级 RRF第一阶段权重 / 平滑常数AllHit@P加权工具链全对率平均输入 token精排 p50判定
1050.1 / 193.8333%89.9762%322.5423.95ms覆盖不足
10100.2 / 899.3750%98.4167%454.9523.95ms与最高分差距超过预设容差
2050.2 / 893.7917%89.9643%322.5847.09ms覆盖不足
20100.4 / 2100.0000%99.3571%455.4247.09ms最终选择
20200.1 / 1100.0000%99.5833%720.1147.09ms分数接近最高,输入更长
3050.2 / 893.7917%89.9643%322.6370.98ms覆盖不足
30100.3 / 1100.0000%99.5714%455.6670.98ms分数接近最高,精排更慢
30200.1 / 8100.0000%99.6429%721.1670.98ms单点最高
30300.1 / 8100.0000%99.5000%984.8670.98ms分数接近最高,输入更长
5050.3 / 2093.8333%89.9762%322.65116.96ms覆盖不足
50100.4 / 2100.0000%99.4881%455.68116.96ms分数接近最高,精排更慢
50200.2 / 1100.0000%99.5595%722.09116.96ms分数接近最高,成本更高
50300.1 / 8100.0000%99.4762%986.89116.96ms分数接近最高,成本更高
50500.1 / 8100.0000%99.5833%1,513.03116.96ms分数接近最高,成本最高

选择依据:精排 30 / 规划 20 的单点结果高 0.2857pp,但规划输入多 58.35%,精排 p50 多 50.74%。两者差距小于预先设定的 0.5pp 容差,因此最终采用成本更低的“精排 20 / 规划 10”;不声称它的准确率显著更高。

02G

精排 20、规划读取 10 时,选择最终融合参数

在 2,400 条开发请求上搜索 11 个第一阶段权重 × 10 个 RRF 平滑常数,共 110 组。去除相同排名并检查候选覆盖后,比较 11 条有效路线;接近日常说法与明确写出工具需求的两类请求按 6:1 加权,对应最终测试的 6,000 / 1,000 比例。

一级排名权重 / RRF 平滑常数加权工具链全对率接近日常说法的请求明确写出工具需求的请求训练中未见的工具组合平均输入 token判定
第一阶段权重 0.4 · 平滑常数 899.5714%99.6667%99.0000%99.3355%461.19采用
第一阶段权重 0.4 · 平滑常数 1099.5714%99.6667%99.0000%99.3355%461.20质量同分,输入略长
第一阶段权重 0.4 · 平滑常数 299.3571%99.4167%99.0000%99.0033%461.24同深度对照
选出参数后的独立检查最终方案对照方案逐条比较结论
深度确认 · 1,200 条精排 20 / 规划 10 · 98.8571%精排 10 / 规划 10 · 97.9048%9 条改善 / 4 条回退提升 0.9524pp;预设约束全部通过
最终融合确认 · 1,200 条精排 20 / 规划 10 + 0.4 / 8 · 99.5714%精排 30 / 规划 20 · 99.4762%5 条改善 / 1 条回退McNemar p=0.2188准确率接近时采用成本更低的方案
长候选压力验证 · 1,200 条精排 20 / 规划 10 · 86.1667%精排 30 / 规划 10 · 86.3333%仅差 2 / 1,200p=0.8877;对照精排延迟高 50.74%微小波动不足以支付成本
长输入压力验证 · 1,200 条精排 20 / 规划 10 · 86.1667%精排 50 / 规划 50 · 84.9167%P50 低 1.25pp输入 token 为 3.29 倍更长输入产生干扰

注意:平滑常数 8 只控制 RRF 排名随名次衰减的速度,不代表候选数量。上表四项检查均在参数确定后运行,结果不再用于改参数;后续规划模型实验直接使用“精排 20 / 规划 10”的候选输入。

02H

汇总最终采用的检索模型与参数

表中按执行顺序列出最终方案:向量与 BM25 各取 40 个、精排 20 个,再向规划模型提供排序后的前 10 个;之后不再根据测试结果改参数。

阶段模型或方法训练 / 推理配置阶段输出
向量检索任务内微调 bge-large-zh-v1.5每个查询—正例配对单独成组:1 正 + 2 负,共 3 个工具文档采用随机种子 20260731全工具向量排序
第一阶段融合向量排序 + BM25 加权 RRF各取前 40 · 向量权重 0.8 · 平滑常数 5送入精排的 Top-20
候选精排bge-reranker-v2-m3每组 1 正 + 7 负,共 8 个工具文档3 个按工具类型挑选 + 4 个检索难例 · lr2e-5 · 采用随机种子 20260731Top-20 交互评分与名次
最终融合第一阶段名次 + 精排名次第一阶段权重 0.4 · 精排权重 0.6 · 平滑常数 8最终 Top-10全部规划候选均经过 Cross-encoder 评分
03 · 最终测试与失败分析在三套独立测试上报告覆盖率,并解释失败与推理成本 独立测试 1.2K · 日常电商 6K · 明确工具需求 1K · 精排 10 / 20 / 30 / 50

模型与参数确定后,再报告质量、失败来源与成本

最终方案确定后,依次评测 1,200 条独立请求、6,000 条日常电商请求和 1,000 条工具需求明确的请求。测试结果只用于报告和失败分析,不再用于修改模型或参数。

03A

比较三套测试集的必要工具覆盖率

6,000 条日常电商请求是 9K 系统测试中的电商部分,也是本页检索主结果;1,200 条独立请求和 1,000 条工具需求明确的请求用于补充检查。三套数据均在模型与参数确定后计分。

评测集样本数AllHit@6AllHit@7AllHit@8AllHit@9AllHit@10AllHit@20MRR
日常电商请求9K 系统测试的电商部分6,00091.3500%94.0500%95.8167%96.6667%97.3667%99.5000%0.977048
独立改写请求参数确定后首次使用1,20098.5833%99.5000%99.7500%99.8333%99.8333%100.0000%0.997778
工具需求明确的请求1,00099.6000%99.9000%100.0000%100.0000%100.0000%100.0000%0.999500
03B

分析 6,000 条日常电商请求中的 158 条检索失败

只要有一个必要工具没有进入最终 Top-10,就记为检索失败。该分析只解释测试结果,不用于后续训练或重新选择参数。

检查项结果解释
最终 Top-10 覆盖失败158 / 6,0002.6333%5,842 条请求完整覆盖全部必要工具
必要工具未进入精排 Top-2030 / 158一级 Top-20 覆盖率为 99.5000%;这 30 条在精排前已经漏掉工具
已进入精排 Top-20,但未进入最终 Top-10128 / 158主要问题发生在 20 个已精排候选压缩为最终 10 个时
一级融合 Top-1096.7167%精排前的 Top-10 完整覆盖
精排模型 Top-1095.8333%仅使用 Cross-encoder 名次的 Top-10
二级融合 Top-1097.3667%融合一级与精排名次后的最终结果

诊断结论:大多数残余失败发生在已精排的 20 个候选压缩为最终 10 个时。该结果只描述测试集,不用于构造负样本或重新调参。

03C

候选越多,精排需要多长时间

这是同机同配置的离线批处理对照:先把每批评分总耗时平摊到每条请求,再取中位数。它只用于比较 10、20、30、50 个候选的相对成本,不代表线上单请求延迟。

精排候选数 R规划可见数 P离线批均摊 p50相对精排 20用途
10≤1023.95ms−49.14%覆盖约束未通过
201047.09ms基准最终路线
30≤3070.98ms+50.74%分数接近、成本更高的对照
50≤50116.96ms+148.38%长候选压力测试

这张表只测什么:只测精排模块,不包含向量编码、BM25、规划生成或真实工具执行;最终方案仍是精排 20 个、输出 10 个。

04 · 数据、成本与复现检查说明每套数据的用途,并记录训练、推理与产物检查 24K 训练 · 1.2K 开发 · 2.4K 选择 + 1.2K 确认 · 6K / 1K / 9K 评测

04A · 每套数据的用途

训练、选参数和最终测试使用不同数据

最终测试只在模型与整条检索链确定后使用。
数据规模用途结果 / 注意事项
训练轨迹24,000 组 · 70,012 个正对训练向量模型与重排模型向量训练将每个查询—正例配对展开为 1 正 + 2 负;重排每组为 1 正 + 7 负
检索开发集1,200 条向量负样本方案与微调重排模型选择五种向量方案和四种重排架构按三随机种子比较
精排与规划候选数量开发集2,400 条联合比较精排数量、规划输入数量与最终融合规划候选不能多于已精排候选;最高分 0.5pp 内优先选低成本方案
候选数量独立确认集1,200 条确认“精排 20 / 规划 10”和最终融合参数确认完成后不再修改参数
长候选压力测试1,200 条检查增加精排或规划候选是否稳定改善结果600 条单工具 + 600 条监督训练未见组合;不参与调参
独立改写请求测试1,200 条模型与参数确定后的首次检索质量测试AllHit@10 99.8333%;查看结果后未继续调参
日常电商请求测试6,000 条报告必要工具是否全部进入 Top-10AllHit@10 97.3667%
工具需求明确的请求测试1,000 条补充检查需求写得更明确时的检索与规划AllHit@10 100.0000%
9K 分流—检索—规划联合测试9,000 条将 0.6B 路由与检索、规划预测逐条联合计分工具链成功 8,336 条;不含真实工具执行
04B · 基础模型推理

比较训练前检索与公开重排的推理成本

编码与重排延迟均为批内均摊;这些早期运行没有保存 GPU 型号、卡数或峰值显存。

类型模型 / 设置加载或构建离线推理计时计时说明
词面检索BM25备用分词器p50 1.586ms · p95 4.459ms单条查询;CPU 型号与线程数未记录
向量检索BAAI/bge-base-zh-v1.5批量 64索引构建 6.1610 秒编码均值 0.7292ms / 条;FAISS p50 / p95 0.0150 / 0.0159msBF16 编码;批内均摊
向量检索BAAI/bge-large-zh-v1.5批量 64索引构建 6.2456 秒编码均值 2.0356ms / 条;FAISS p50 / p95 0.0168 / 0.0179msBF16 编码;批内均摊
向量检索Qwen/Qwen3-Embedding-0.6B批量 64索引构建 7.6973 秒编码均值 2.2964ms / 条;FAISS p50 / p95 0.0158 / 0.0167msBF16 编码;批内均摊
公开重排BAAI/bge-reranker-baseN=20 · 6,000 条5.7550 秒p50 14.8817ms · p95 17.7625msFP16;批内均摊
公开重排BAAI/bge-reranker-largeN=20 · 6,000 条5.7761 秒p50 33.8580ms · p95 37.1013msFP16;批内均摊
公开重排BAAI/bge-reranker-v2-m3N=20 · 6,000 条5.3290 秒p50 32.4880ms · p95 36.9846msFP16;批内均摊
公开重排jinaai/jina-reranker-v2-base-multilingualN=20 · 6,000 条5.8391 秒p50 13.8825ms · p95 16.3661msFP16;批内均摊
公开重排Qwen/Qwen3-Reranker-0.6BN=20 · 6,000 条10.2432 秒p50 119.0920ms · p95 137.8053msSentenceTransformers;批内均摊
候选深度Qwen/Qwen3-Reranker-0.6BN=50 · 6,000 条 · 批量 6410.3087 秒p50 119.0949ms · p95 141.9109ms最大长度 512;批内均摊
04C · 训练与推理

记录采用模型的训练与精排推理成本

训练均为单卡;精排延迟来自联合深度实验的同硬件离线批内均摊。

阶段配置硬件训练耗时推理或资源记录
向量模型bge-large-zh-v1.5 · 1 轮 · FP16 · 有效批量 641 × RTX 3090 24GB51 分 01.5 秒最终采用版本:开发集编码均值 5.2469ms / 条;FAISS p50 / p95 0.0233 / 0.0259ms
重排模型bge-reranker-v2-m3 · 1 轮 / 1,500 步 · FP16 · 有效组批量 161 × RTX 3090 24GB46 分 04.0 秒峰值显存 10.64 / 10.98 GiB(已分配 / 已保留)
最终采用的候选输入各路 Top-40 → 精排 Top-20 → 二级 RRF → 规划 Top-10同硬件深度对照精排 p50 47.0914ms规划平均输入 455.42 token;未将模块延迟相加为在线端到端时延

04D · 最终一致性检查

确认模型、候选数与评测文件完全对应

所有检查均通过。
检查项结果核验内容
模型身份通过向量模型 97816d9a…ec86;重排模型 d1ac0366…d6d
评测行数通过独立改写请求 1,200 · 日常电商 6,000 · 明确工具需求 1,000
实际候选数通过向量与 BM25 各取 Top-40;精排 Top-20;规划读取最终 Top-10,满足 P≤R
评测清单通过三套评测均保存 manifest、输入哈希与曝光记录
部署等价性通过最终 Top-10 排名与候选裁剪实现 100% 一致
脚本语法通过最终配置生成、检索测试、效率测试与固定规划模型测试脚本均通过语法检查

结果适用范围:只适用于这套固定 100 工具的合成测试;检索耗时不包含意图分流、规划生成或真实工具执行。

实验 03 · 工具链规划

工具链规划:从监督训练到偏好优化

先验证 Top-10 候选能否帮助基础模型,再固定“精排 20、规划读取 10”的接口;8B Planner 先学习两种请求写法,再从自身真实错误中构造偏好数据,通过 RPO 主训练和 DPO 短程收敛确定最终模型。

结果口径:6,000 条日常电商请求是规划主测试,1,000 条工具需求明确的请求用于补充检查;最终系统结果把 3,000 条闲聊与 6,000 条电商请求逐条合并。偏好数据和 1,200 条开发请求均来自训练侧,6K / 1K 只在模型锁定后报告。

最终结果 · 9,000 条系统测试

92.62% 请求生成了完全正确的有序工具链

0.6B 路由先区分电商与闲聊,检索模块精排 20 个候选并向 Planner 提供前 10 个;8B Planner 使用 77,724 条两种写法的监督数据训练,再以 4,000 对真实错误偏好数据完成 RPO 与 DPO。最终 8,336 / 9,000 条请求通过,其中 6,000 条日常电商请求的工具链全对率为 88.9333%。

最终规划模型 Qwen3-8B · RPO → DPO 77,724 条 SFT → RPO 主训练 → DPO 短程收敛 · checkpoint-113
规划实验顺序

验证 Top-10 → 训练 8B Planner → 固定输入 → 挖掘真实错误 → 选择偏好训练端点

01 只改变候选范围,确认 RAG 是否帮助基础模型;02 用日常说法与工具需求明确写法训练 8B Planner;03 固定检索模块交付的 Top-10;04 从训练侧长短链请求挖出当前模型真实错误;05 比较 RPO 与 DPO,并在独立开发请求上锁定最终模型。

01 · Top-10 是否有用完整 100 工具 vs Top-10固定未微调 4B / 8B,只改变候选范围
02 · 监督训练8B · 77,724 条 · 1 轮53,725 条明确需求写法 + 23,999 条日常说法
03 · 固定候选输入精排 20 → 规划读取 10检索参数不随 Planner 训练变化
04 · 构造偏好数据8,309 个真实错误 → 4,000 对长短链均衡 · 3,600 训练 / 400 监控
05 · 偏好训练与最终测试RPO 主训练 → DPO 短程收敛8,336 / 9,000 · 92.62%
01 · Top-10 是否有用模型不变,只比较完整 100 工具与检索 Top-10 4B / 8B · 日常电商 6K + 明确工具需求 1K · 4 / 4 组工具链全对率提高

检验缩小候选范围能否帮助未微调模型

固定模型、提示模板与生成方式,只改变输入:无 RAG 展示完整 100 工具,RAG 按检索顺序提供 Top-10。该配对只量化候选检索的贡献,不参与候选深度选择。

评测集基础模型完整 100 工具集合 / 工具链 / 格式合规率当前检索 Top-10集合 / 工具链 / 格式合规率工具链提升
日常电商请求 6K未微调 4B26.9500% / 25.2167% / 84.6833%35.9667% / 33.9333% / 94.1833%+8.7167pp
未微调 8B30.7500% / 28.9333% / 92.5333%37.3333% / 35.6667% / 94.1500%+6.7333pp
工具需求明确的请求 1K未微调 4B52.3000% / 50.4000% / 93.6000%54.5000% / 53.8000% / 87.0000%+3.4000pp
未微调 8B57.4000% / 54.6000% / 96.7000%62.3000% / 60.9000% / 89.2000%+6.3000pp

本步结论:Top-10 在 4 / 4 组配对中提高工具链全对率;候选检索能缩小判断范围,但不能替代 Planner 训练。

02 · 监督训练让 8B Planner 同时学习两种请求写法 77,724 条 · 4 × RTX 5090 · 1 轮 · 9K 工具链成功率 90.4556%

02A · 监督数据同时覆盖明确需求与日常说法

所有样本都包含当前检索链生成的 Top-10 和正确有序工具链。两种写法共同训练,使模型既学会清晰接口表达,也能处理主测试中的自然请求。

数据来源条数训练作用占比
工具需求明确的请求53,725学习候选选择、相似工具排除和多工具依赖顺序69.12%
日常说法请求23,999对齐 6K 主测试的表达方式与工具链长度30.88%
合计77,724固定 Top-10 输入与有序目标100%

02B · 冻结监督训练端点

Qwen3-8B 使用 LoRA 训练 1 轮,学习率 5e-5、有效批量 32、LoRA r16 / α32 / dropout 0.05;随后以一次短 DPO 得到偏好训练的固定起点。

模型阶段日常电商请求 6K集合 / 工具链 / 格式合规率明确工具需求 1K
工具链全对率
9K 系统工具链作用
77,724 条监督训练checkpoint-242986.1333% / 85.6833% / 99.7833%99.5000%8,141 / 9,000 · 90.4556%监督训练端点
偏好训练起点checkpoint-2986.2667% / 85.8000% / 99.7833%99.5000%8,148 / 9,000 · 90.5333%用于挖掘真实错误

进入下一步的固定模型:Qwen3-8B checkpoint-29。后续偏好数据只使用它在训练侧请求上的真实可解析错误,不使用 6K / 1K 冻结测试。

03 · 固定规划模型的候选输入检索精排 20 个候选,Planner 只读取前 10 个 一级 Top-40 / 路 · 精排 Top-20 · 二级 RRF · Planner Top-10

检索模块向所有 Planner 阶段提供同一种输入

候选排序在 Planner 训练前已经锁定。监督训练、错误挖掘、开发集比较和最终测试都使用同一 Top-10 接口,不为某个 Planner checkpoint 重新调整检索参数。

处理环节最终配置作用输出
一级检索BM25 / 向量各取 Top-40 · 向量权重 0.8 · 平滑常数 5结合词面与语义信号统一候选排名
交互精排bge-reranker-v2-m3 · R=20对 Planner 可能看到的候选完整打分Top-20 精排名次
二级融合一级权重 0.4 · 精排权重 0.6 · 平滑常数 8融合两路互补名次最终 Top-10
规划输入P=10 · 保持检索顺序所有候选都已精排,满足 P≤R一次生成工具集合与顺序

固定边界:6K 日常电商请求的检索 AllHit@10 为 97.3667%;检索未命中的样本仍计入 Planner 端到端工具链全对率。

04 · 构造偏好数据从当前模型真实错误中均衡选择长短工具链 36,000 条训练侧请求 · 8,309 个去重错误 · 4,000 对偏好数据

04A · 用两个训练侧请求池找到模型会犯的错误

先只保留目标工具全部进入 Top-10 的请求,再让 checkpoint-29 贪心生成。正确答案作为 chosen,模型实际生成且格式可解析、但集合或顺序错误的输出作为 rejected。

请求范围生成请求Top-10 覆盖完整起点工具链全对率真实语义错误
偏长、多约束请求24,00023,06870.8080%6,734
1–2 工具短请求12,00011,86785.8178%1,683单工具 203 · 双工具 1,480
去重错误池共观察 8,417 个错误;按请求与来源去重8,309

04B · 选择 4,000 对,并约束工具链长度与错误类型

每个请求和来源轨迹最多保留一对,候选保持原检索顺序;数据覆盖全部 100 个工具。

维度1 工具2 工具3 工具4 工具5 工具6 工具
偏好对数200600800800800800
主要错误相似工具替换遗漏必要工具多选无关工具只错顺序训练 / 监控
对数2,0649117652603,600 / 400

04C · 独立开发请求不进入训练

1,200 条开发请求包含 600 条单工具和 600 条 2–6 工具请求,每种多工具长度各 120 条;覆盖 100 个工具。

开发集检查结果如何计分
与 SFT、偏好数据、6K / 1K 的请求、轨迹、表达簇、短语和上下文骨架重叠0仅用于 checkpoint 选择
当前检索 Top-10 覆盖率96.6667%40 条检索未命中仍计为工具链失败,不做条件过滤

数据边界:不手工拼接错误输出,也不使用冻结测试中的失败样本。最大序列长度 672,小于训练上限 768,样本截断为 0。

05 · 偏好训练与最终测试RPO 主训练推进质量,再用 DPO 短程收敛 8 个训练配方 · 28 个 checkpoint · 6K 工具链 88.9333% · 9K 工具链 92.6222%

05A · 主训练:比较纯 DPO 与正确答案概率锚点

四个配方并行训练 1 轮。RPO 在 DPO 排序损失之外加入 chosen 的生成损失,使模型在远离错误工具链的同时维持正确工具链概率;四组共同使用 beta 0.1 和同一固定参考模型。

训练目标学习率正确答案损失权重第 225 步开发集工具链全对率判定
DPO5e-7087.3333%对照
DPO + RPO5e-70.587.4167%对照
DPO + RPO5e-71.087.2500%对照
DPO + RPO1e-60.588.2500%进入短程扩展

为什么继续:主训练最高分出现在最后一个 checkpoint,说明曲线仍在边界上升;因此从该点继续 0.5 轮,并保持参考模型不变。

05B · 短程扩展:比较继续 RPO 与切换纯 DPO

从主训练 checkpoint-225 出发,比较四种 0.5 轮扩展。主阶段与扩展阶段合计 28 个 checkpoint,全部在同一 1,200 条开发请求上评测。

扩展目标学习率第 113 步集合全对率第 113 步工具链全对率格式合规率判定
DPO5e-788.9167%88.8333%99.8333%采用
DPO + RPO · 权重 0.51e-688.9167%88.8333%99.8333%聚合指标并列
DPO + RPO · 权重 0.55e-788.7500%88.5833%99.8333%未采用
DPO + RPO · 权重 0.52e-788.5833%88.5000%99.9167%未采用

锁定规则:纯 DPO 与继续 RPO 的两个端点聚合指标完全相同,逐条改善 / 回退为 2 / 2;按预先固定的确定性排序选择纯 DPO checkpoint-113。6K / 1K 冻结测试没有参与破平。

05C · 开发集确认最终端点

该 1,200 条开发集是唯一参与模型选择的端到端请求集,检索未覆盖的 40 条仍按失败计入。

模型阶段集合全对率工具链全对率格式合规率检索命中条件下工具链全对率
偏好训练起点85.8333%85.6667%99.7500%88.6207%
最终 Planner88.9167%88.8333%99.8333%91.8966%
提升+3.0834pp+3.1666pp+0.0833pp+3.2759pp

逐条证据:工具链改善 42 条、回退 4 条,净改善 38 条;exact McNemar p=5.10e-9。

05D · 模型锁定后报告 6K、1K 与 9K

三行模型使用同一个检索 Top-10 和同一批测试请求,用来展示当前训练路径的阶段增益;最终采用 checkpoint-113。

Planner 阶段日常电商请求 6K集合 / 工具链 / 格式合规率明确工具需求 1K
工具链全对率
9K 系统工具链
监督训练86.1333% / 85.6833% / 99.7833%99.5000%8,141 / 9,000 · 90.4556%
偏好训练起点86.2667% / 85.8000% / 99.7833%99.5000%8,148 / 9,000 · 90.5333%
最终 Planner · checkpoint-11389.2000% / 88.9333% / 99.8833%99.4000%8,336 / 9,000 · 92.6222%

最终增益:相对监督训练,6K 工具链提高 3.2500pp,9K 增加 195 条成功请求;相对偏好训练起点,6K 改善 / 回退 222 / 34,p=5.28e-35。1K 由 99.5% 变为 99.4%,仅 1 条改善、2 条回退,不能支持稳定变化结论。

05E · 最终系统主结果

3,000 条闲聊必须被正确分流;6,000 条电商请求还需输出完全正确的工具集合与顺序。

系统指标正确数比例是否包含真实工具执行
工具集合完全正确8,352 / 9,00092.8000%
有序工具链完全正确8,336 / 9,00092.6222%

最终端点:Qwen3-8B · 77,724 条监督训练 → 偏好训练起点 → RPO 主训练 → DPO 短程收敛 checkpoint-113。92.6222% 只表示静态分流与有序工具 ID 选择成功率。

06 · 实验数据、协议与环境核对监督数据、偏好数据、隔离规则与运行成本 SFT 77,724 条 · 偏好 4,000 对 · 开发 1,200 条 · 4 × RTX 5090

06A · 数据职责

训练、选择和最终测试彼此分开

冻结测试不进入偏好构造或 checkpoint 选择。
数据规模用途参与选型隔离与结果
SFT 训练数据两种请求写法77,724 条53,725 + 23,999训练 8B Planner 的候选选择与有序输出训练输入固定当前 Top-10 与正确工具链
偏好错误挖掘请求训练侧新生成24,000 + 12,000 条分别覆盖偏长多约束与 1–2 工具请求数据构造只从 Top-10 覆盖完整且模型实际答错的样本取 rejected
偏好数据真实错误配对4,000 对3,600 训练 / 400 监控比较 DPO、RPO 与短程扩展训练输入覆盖 1–6 工具和全部 100 工具;每个请求 / 来源最多一对
Planner 开发集训练侧独立生成1,200 条评测 28 个 checkpoint 并锁定最终端点检索 AllHit@10 96.6667%;40 条未命中仍计失败
冻结测试模型锁定后报告日常电商 6K + 明确需求 1K + 系统 9K报告规划主结果、补充结果与系统结果6K 工具链 88.9333% · 9K 工具链 92.6222%

06B · 数据与产物检查

确认没有测试回流、截断或模型身份漂移

所有关键审计均为 strict_ok=true。
检查项结果核验内容
开发集与 SFT / 偏好 / 冻结测试重合0请求、轨迹 ID、来源、表达簇、短语和上下文骨架均隔离
偏好数据与 6K / 1K 冻结测试重合0请求、轨迹 ID 和来源均不重叠
偏好样本截断0最大长度 672,训练上限 768
候选接口通过所有阶段使用当前精排 Top-20 后的 Top-10,且保持检索顺序
训练与选择记录通过8 个训练 run、28 个 checkpoint、参考模型、步数和超参数均可追溯
最终模型身份通过checkpoint-113 · adapter SHA256 68cd6eba…fc1d
06C · 训练环境

记录 SFT、RPO 与 DPO 的参数和成本

SFT 使用四卡数据并行;偏好训练同时启动四个单卡配方,因此表内每个配方的耗时不相加为串行总时长。

阶段数据与配置硬件训练耗时资源记录
监督训练checkpoint-242977,724 条 · 1 轮 · lr5e-5 · 有效批量 32 · LoRA r16 / α32 / dropout 0.054 × RTX 509057 分 41 秒2,429 步日志显存 20.23 GiB / 进程
偏好训练起点checkpoint-291,800 训练 / 200 监控 · 1 轮 · lr1e-6 · beta 0.1 · 有效批量 164 × RTX 50904 分 56 秒完整运行 113 步;采用第 29 步日志显存 18.55 GiB / 进程
RPO / DPO 主搜索4 个并行配方3,600 训练 / 400 监控 · 1 轮 · beta 0.1 · 有效批量 16 · LoRA r16 / α32 / dropout 0.054 × RTX 5090每配方 1 卡33 分 40 秒–34 分 08 秒 / 配方225 步日志显存 18.47 GiB / 进程
DPO 短程扩展最终 checkpoint-113从 RPO 主训练端点继续 0.5 轮 · lr5e-7 · beta 0.1 · 固定参考模型4 × RTX 50904 个扩展配方并行18 分 40 秒–18 分 55 秒 / 配方113 步日志显存 18.47 GiB / 进程
06D · 规划模型推理

比较完整工具目录、Top-10 与最终 Planner 的离线生成成本

均为贪心生成;行内延迟来自批内生成记录,不等同于线上单请求端到端延迟。最终模型最多生成 96 token。

模型阶段测试协议批量p50 / p95输出吞吐峰值显存
未微调 4B · Top-10早期独立请求 1K16110.8 / 154.1ms179.10 token/s9.54 / 14.87 GiB
未微调 8B · Top-10早期独立请求 1K8187.7 / 269.0ms105.83 token/s16.38 / 20.13 GiB
未微调 4B · 完整 100 工具早期独立请求 1K8528.7 / 1,334.2ms34.67 token/s12.55 / 23.81 GiB
未微调 8B · 完整 100 工具早期独立请求 1K4835.5 / 1,078.8ms23.16 token/s18.07 / 22.72 GiB
8B · 监督训练 · Top-10日常电商请求 6K16154.2 / 185.8ms126.99 token/s18.49 / 26.64 GiB
8B · 偏好训练起点 · Top-10日常电商请求 6K16157.1 / 188.1ms125.30 token/s18.49 / 26.64 GiB
8B · 最终 Planner · Top-10日常电商请求 6K16149.7 / 184.5ms125.64 token/s18.34–18.49 / 22.96–28.38 GiB

训练软件:MS-SWIFT;监督阶段使用 swift sft,偏好阶段使用 swift rlhf。偏好输入为 messages + rejected_response,采用 Qwen3 chat template。

共同训练设置:BF16、Cosine、warmup 0.05、weight decay 0.1、最大梯度 1.0;偏好训练最大长度 768,参考适配器始终固定为 checkpoint-29。

最终系统测试:检索输入始终为“精排 20 / 规划 10”。正式 8B Planner 使用 seed 20260819 的 DPO 短程扩展 checkpoint-113。

实验 04 · 自然短会话评测

多轮工具调用 Agent 框架

每段会话有 2~7 轮,只统计最后一轮:短句引用历史时要找回被引用的完整任务,当前句已经完整时不能带入旧工具。所有方案共用同一套 100 工具检索与 Planner。

01 · 核心结果 · 993 段独立测试会话

41.0% → 94.6%从只看当前句,到按需恢复被引用的完整任务

A 只看当前句;L 加入结构化记录、完整任务恢复和已验证计划复用。两者使用相同模型、Top-10、提示词与生成方式,没有修改任何模型权重。

整体提高 53.58 个百分点 583 / 612 次找对被引用轮 993 / 993 次输出格式正确
全部目标939 / 993有序工具链完全正确率 94.56%
需要读取历史568 / 612完整工具链正确率 92.81%
当前句已经完整371 / 381不带入旧工具 97.38%
Planner 调用次数993 → 394597 次复用、2 次来源未解析;减少 60.3%

整体分数怎样读:评测约含 60% 需要读取历史的目标和 40% 当前句已经完整的目标。这个比例用于同时看清两种能力,不代表线上请求分布;因此页面始终同时报告两项分数。

02 · 怎样理解这项评测

先分清会话、轮次和两类目标

前面的请求都会真实经过检索和 Planner,并写入本会话。最后一轮分为历史回放和完整新请求:前者必须找回正确任务,后者必须保持独立。

会话与轮次
同一会话中的每次用户请求叫一轮;每段包含 2~7 轮,记忆只在同一会话内读取。
计分目标
每段只统计最后一轮;工具 ID、数量和顺序全部一致才算正确。
历史回放
当前短句本身不完整,必须找到唯一被引用轮,并恢复当时的整项任务。
完整新请求
当前句已经把任务说全,即使前面有无关历史,也不能继承旧工具。
应该读取历史自然的近期续办
  1. 第 1 轮查询洗衣机信息、预售状态和评价。这一轮建立完整任务。
  2. 第 2 轮洗衣机那边,刚才说的那些事接着看下吧。短句没有重新列出三个目标。
正确有序工具链get_item_infocheck_presale_statusget_item_reviews找回第 1 轮的全部目标和原顺序。
不应该读取历史完整的新任务
  1. 第 1 轮查询账号画像、尺码、地址、收藏和通知偏好等资料。与下一轮商品任务无关。
  2. 第 2 轮看看这款电动牙刷的商品信息,再把材质、型号、尺寸等参数发我。本句已经完整,不需要补历史。
正确有序工具链get_item_infoget_item_specs只处理电动牙刷,不带入账号类工具。
开发集991 段 · 2,793 个实际轮次605 个历史回放、386 个完整新请求;只在这里选择方案。
独立测试集993 段 · 2,835 个实际轮次612 个历史回放、381 个完整新请求;方案锁定后一次性运行。
03 · A~L 十二种方案

同时比较历史任务恢复与完整新请求保护

A 只看当前句,B 直接拼接历史,C~L 逐步加入结构化处理。三项分数都来自同一独立测试,任何明显损害完整新请求的方案都不能采用。

方案本方案处理方式测试集整体历史回放完整新请求
A基线不读取历史,只看当前句41.0%5.2%98.4%
B拼接基线把最近两轮原话直接拼给模型50.5%59.2%36.5%
C把最近任务整理为结构化记录62.9%48.0%86.9%
D按固定规则保存滑出窗口的任务摘要74.1%66.2%86.9%
E按对象和关键词查询最多两条完整记录85.5%84.6%86.9%
F“刚才”等近期线索优先于宽泛历史词85.5%84.6%86.9%
G分清当前业务动作和继承历史的指令91.9%88.6%97.4%
H把被规则拆散的单工具请求还原为完整目标92.4%89.4%97.4%
I只有按固定结构写出完整工具名称时才直达92.4%89.4%97.4%
J找到被引用轮后,恢复当时的完整请求94.6%92.8%97.4%
K完整的多目标新请求不读取历史94.6%92.8%97.4%
L来源计划有效且运行配置一致时复用原计划94.6%92.8%97.4%
为什么不直接拼原文回放 5.2% → 59.2%,新请求却降到 36.5%B 证明历史确实有用,也证明无条件拼接会把旧工具带进当前任务。
主要质量增益摘要 · 按需记忆 · 请求边界 · 完整恢复D、E、G、J 分别解决窗口外任务、来源定位、误继承和任务碎片丢失。
完整恢复与计划复用J 提高质量,L 在相同准确率下减少调用J 恢复来源轮的完整任务;L 只在校验通过时复用原计划,把 Planner 调用降至 394 次。
方案怎样确定查看开发集门槛、锁定顺序与统计区间 991 段开发 · 993 段独立测试

先守住完整新请求,再提高历史回放

方案只由开发集决定:完整新请求准确率不得比 A 低超过 1 个百分点;达标后依次比较历史回放、完整新请求和输入长度。L 在测试运行前已经锁定。

完整新请求门槛至少 96.67%A 的开发集完整新请求为 97.67%。
L · 开发集整体957 / 991 · 96.57%回放 96.03%;完整新请求 97.41%。
L · 独立测试939 / 993 · 94.56%95% 区间为 92.97%~95.81%。
独立测试方案锁定后只运行一次开发选择完成时,测试候选预测文件为 0。
04 · 最终 Agent 运行框架

一个判断入口、三条处理路径、一个固定后端

Agent 不把整段历史全部塞给 Planner。当前句完整就保持原文;只有自然确认、近期续办和对象线索等可靠证据才触发历史读取。

模型外 Agent

只在同一会话中整理与当前句有关的状态

本轮输入会话编号 + 当前原句先确认本句是否已经完整,再判断它是自然确认、近期续办还是带对象线索的历史引用。
Agent 核心判断完整新请求 / 近期引用 / 较早引用没有可靠历史证据就不继承;当前业务动作不会被误解成修改上一轮任务。
组成 1 · 近期任务记录保留最近 2 轮任务分别保存原句、完整任务、候选与计划,不直接拼接原文。
组成 2 · 窗口外摘要较早任务仍可追溯按固定规则保留目标、顺序和来源,不让模型反复改写摘要。
组成 3 · 按需历史查询最多读取 2 条完整记录只在对象或关键词证据足够时查询,并始终按会话隔离。
组成 4 · 已验证计划复用有效计划才可直接使用来源状态、输出或运行配置任一不一致,就恢复请求并重新规划。
路径 1 · 当前请求已经完整保持当前原句
  1. 本句目标已经完整没有继承或取消历史任务的可靠证据。
  2. 清空无关历史证据多个明确新目标不会与旧目标合并。
  3. 原句进入默认后端自然语言请求执行意图、检索和 Planner;固定结构的完整工具名称可严格直达。
路径 2 · 历史任务需要重新规划恢复完整请求
近期记录规则摘要按需完整记录
  1. 定位唯一被引用轮利用确认关系、近期线索或对象线索;找不到可靠来源就返回空工具结果。
  2. 读取当时的完整请求保留全部目标与顺序,不重新拼装任务碎片。
  3. 完整请求进入固定后端来源计划不可用或运行配置变化时,重新检索和规划。
路径 3 · 历史计划可以直接复用校验通过后跳过后端
  1. 只回放一个完整任务没有新增、取消、局部修改或多个来源合并。
  2. 来源计划与运行配置一致计划非空并通过输出检查,检索路线、版本和 Agent 配置均未改变。
  3. 直接使用原有序工具计划不再调用固定后端;任一条件失败就回到路径 2。
路径 1 / 2 · 需要规划进入同一个固定单轮后端意图分流 → Top-10 候选 → Planner;A~L 全部保持不变
来源不足返回空工具结果,不猜其他历史
输入长度目标 640 / 硬上限 1,024 Token
会话安全按会话隔离,旧状态不能覆盖新状态
无效输出不覆盖上次有效计划
保存本轮事件原句 · 完整任务 · 来源 · 候选 · 计划下一轮可以追溯当时真正送入 Planner 的请求。
更新会话状态近期记录 · 规则摘要 · 完整记录会话有效期 30 天,支持清理和整会话删除。
独立测试运行证据612 个历史回放中有 583 个精确找到被引用轮;全部 993 个目标中有 597 次通过版本校验并直接复用先前计划,规划模型实际调用 394 次。计划复用只减少重复推理,不会修复来源计划本身的错误。
05 · 错误分析

54 个错误主要来自来源定位和来源轮原有计划

方案 L 在 993 个目标中错 54 个:44 个来自历史回放,10 个来自完整新请求。下面按可以继续改进的环节拆开,而不是把所有错误归给“上下文”。

回放错误 44 个,完整新请求错误 10 个

先看系统有没有找对被引用轮,再看来源轮当时的工具规划是否已经错误。

29没有精确找到被引用轮 15来源找对,但原计划错误 10完整新请求错误

完整新请求中,A 答对 375 / 381,L 答对 371 / 381,净回退 4 条;这 4 条差异尚不足以证明稳定下降(配对检验 p=0.125)。其中 3 条被误判为历史回放并错误命中缓存,实际部署仍需把“新请求误继承”单独监控。

最弱引用表达自然确认 89.7%183 / 204;“行,就这么办”缺少对象线索。
最弱任务长度6 工具 87.8%72 / 82;10 个错误中 8 个来自来源轮原有规划。
回放目标运行594 次复用 · 16 次规划另有 2 个目标没有解析出可靠来源。
运行记录完整性67,536 条 · 后端错误 012 个候选 × 开发 / 测试的全部逐轮预测。
评测集明细查看会话构成、自然引用、工具覆盖与数据检查 1,984 段 · 5,628 轮 · 按需展开
多轮 Agent 封存评测集 · 不参与训练

历史该读时找对任务,当前句完整时不带入旧任务

每段会话只统计最后一个目标轮;此前历史轮仍会按顺序执行,并写入同一会话的状态、摘要与记忆。

历史任务恢复短句信息不足,必须读取历史定位唯一来源轮,恢复该轮的全部工具、数量与原顺序。
完整新请求切换当前句已经完整,必须拒绝无关历史只规划当前新任务,专门检查是否误带旧任务和旧工具。
01

总体构成

开发集用于选择方案,独立测试集在方案锁定后一次性运行;两边都只统计审核通过的会话。

数据项开发集独立测试集合计
计划会话1,0001,0002,000
审核通过会话9919931,984
审核排除9716
实际执行用户轮2,7932,8355,628
普通历史轮1,8021,8423,644
最终计分目标轮9919931,984
其中:历史任务恢复6056121,217
其中:完整新请求切换386381767

历史任务恢复约占 60%,完整新请求约占 40%;这个比例用于让两类能力都有足够样本,不代表线上流量比例。

02

会话有多长,引用隔了几轮

主体是 2~4 轮的自然短会话,同时保留少量 5~7 轮和跨出近期窗口的压力样本。

会话长度

平均 2.818 / 2.855 轮

用户轮数开发集测试集合计
2 轮471462933
3 轮313307620
4 轮140152292
5 轮5252104
6 轮131831
7 轮224
历史任务恢复的引用距离

目标轮向前查找

相距轮数开发集测试集合计
1 轮344349693
2 轮136138274
3 轮8075155
4 轮343670
5 轮111425

来源与目标之间可以插入无关任务,但本次干扰任务会避开来源任务的工具和业务域,以保证自然表达仍有唯一指向;同对象、同业务域的极端歧义不在本次范围内。

03

引用怎样表达,目标工具链有多长

历史恢复使用三类自然说法;1~6 个工具的数量比例取自 24K 训练轨迹,并非人为平均分配。

自然引用表达

只统计历史任务恢复

表达类型典型形式开发集测试集
自然确认“行,就按刚才说的办”209204
近期续办“洗衣机那些事接着看下”212216
对象线索“戴森吸尘器那个售后单继续处理”184192
计分目标的工具数量

历史恢复 + 完整新请求

目标工具数开发集测试集合计
1399389788
28069149
3157172329
4122128250
5121111232
6112124236

目标句不使用“第 N 轮”“完整原样重做”“步骤和顺序都别变”等提示答案的说法;评分时,工具 ID、数量和顺序任一不一致,整条都算错误。

04

100 个工具覆盖八个业务域

开发集和测试集的计分目标都覆盖全部 100 个工具;下表后两列统计标准答案里实际出现的工具次数,因此多工具目标会贡献多次。

业务域目录工具数开发目标工具次数测试目标工具次数
商品18560600
订单15550562
售后15343334
营销15272293
配送12287269
用户10408392
购物车8248274
风控7127130
合计1002,7952,854
05

先锁定答案与隔离规则,再运行 Agent 方案

页面保留能判断数据可信度的关键步骤;完整生成日志、逐条字段和排除记录留在机器证据中。

检查环节具体做法锁定结果
先定工具答案先生成来源与干扰任务的工具链,再生成自然请求文本;固定随机种子为 2026081601。2,767 份先定好的工具链
自然性与语义审核先用规则过滤提示答案、范围不完整等问题,再由独立模型检查自然性和唯一指向。1,984 段通过,16 段保留为排除项
保护数据隔离与 42,400 条训练、冻结和独立保护数据比对请求文本、来源任务、表达类型与会话结构。请求、来源、表达与结构重合均为 0
开发与测试分开两边的完整会话和计分目标均无重合;开发集选型和实现锁定后,才允许运行独立测试集。会话 / 目标重合为 0,测试未提前打开

运行成本与工程检查

十二种候选共享固定 100 工具目录、Top-10 检索、Qwen3-8B Planner、提示词、候选顺序和贪心生成。

L · 目标轮输入平均 184.1 Token95% 的输入不超过 511.4 Token;直接拼接 B 为 665.4。
输出格式合规率A / J / K / L 均为 100%B 为 98.99%,说明原文拼接也增加格式压力。
Agent 单元测试55 / 55会话状态、恢复、缓存和写入行为全部通过。
异常场景检查8 / 8来源不足、超限、非法输出、隔离和超时均通过。

结果适用范围:数据来自模型生成并经独立审核的固定 100 工具、2~7 轮受控会话,覆盖整轮回放和完整新请求切换;不代表线上准确率,也不覆盖部分继承、参数共指、局部增删改、同业务域高度歧义干扰、真实工具执行或开放域长对话。

项目结论 · 单轮主链、多轮扩展与适用范围

工具找得齐、顺序排得对,多轮任务也接得上

单轮主线依次经过意图分流、候选检索和工具链规划,9K 结果还包含 3K 闲聊的正确分流;多轮层另行测试 993 段 2~7 轮自然短会话中的最后目标轮。两套结果使用不同评测集,都不执行真实工具。

01 · SINGLE-TURN BACKEND

单轮后端的十一个累计决策点

从没有 Intent 与闲聊出口的原始 8B Planner(19.29%)到最终 92.62%;同一 9K 工具链口径上依次加入路由、检索、重排、监督训练与偏好训练,横向模型选型不混入累计折线。

统一读图口径 空心橙点为回溯补测,只用于解释决策增益;实心绿点为当前训练路径上的系统端点。最终链路固定为 0.6B 路由 + 精排 20 / 规划 10 + 8B 监督训练、RPO 与 DPO。 小屏可横向滑动图表,查看全部 11 个点位。
02 · MULTI-TURN AGENT

多轮 Agent 的十一个累计决策点

固定同一模型与后端,绿色主线从 A 直接进入 C~L;B 是直接拼接历史的单独对照,不属于逐步累加顺序。三条曲线分别展示整体、历史任务恢复和完整新请求。

三条线怎样读 绿色统计全部 993 个目标,橙色只看 612 个历史任务恢复,黑色虚线只看 381 个完整新请求。最终方案把历史恢复提高 87.58 个百分点,同时将完整新请求保持在 97.38%,并把目标轮 Planner 调用从 993 次降至 394 次。 小屏可横向滑动图表,查看全部主线点。
最终运行决策 · Agent + 三阶段固定后端

先判断当前句是否需要历史,再选择恢复、复用或完整链路

Agent 在入口判断和整理历史,在出口保存本轮结果。当前句完整就保持原文;引用历史时恢复唯一来源的完整任务;只有严格条件满足时才复用原计划或按标准工具名称直达。下方 9K 数字仍只统计原 Intent、检索和 Planner 链路。

端到端决策链路

从当前原句到工具计划,再写回下一轮可用的状态

上方是需要模型处理时的主链路;下方四张卡说明 Agent 怎样准备请求、何时可以安全直达,以及来源不足时如何停止猜测。

入口用户请求当前原句 + 会话编号
模型外 Agent判断并准备本轮任务当前句完整则保持原文;引用历史时定位唯一来源
意图判断电商 / 闲聊0.6B Intent
候选检索双路检索 + 重排融合后向 Planner 提供 Top-10
工具链规划8B Planner选择工具并确定顺序
输出与收尾检查结果并写回返回合法计划;本轮事件和会话状态一次性保存
路径 1 · 当前句完整 保持原句进入固定后端

没有可靠历史依赖证据就不继承旧工具;电商请求继续检索和规划,闲聊在意图判断后结束。

路径 2 · 引用历史 定位来源并恢复完整任务

找到唯一来源后,以完整请求进入同一后端;纯引用找不到可靠来源时返回合法空工具结果,不猜测其他历史。

路径 3 · 历史计划可以直接复用 校验通过后跳过后端

来源状态正常、计划非空且通过输出检查,同时检索路线、检索版本和 Agent 配置一致时直接复用;任一条件失败,就恢复完整请求并走固定后端。

结构化快速路径 完整标准工具名称严格直达

只有每个目标都按固定结构完整写出目录中的标准能力名称,并且唯一命中时才直接输出;任一目标不确定,整轮回到固定后端。

怎样读这张图路径 1 和找到唯一来源的路径 2,如果没有命中结构化直达,就进入上方模型主链;路径 3 未通过复用校验时回到路径 2。纯引用找不到可靠来源则返回空工具结果,闲聊在意图判断后结束。浅绿色只标记两类可以跳过固定后端的安全直达,不表示准确率更高;标准工具名称直达没有增加正确数,计划复用保持 94.6% 不变,并把目标轮 Planner 调用降到 394 次。

模型主链与会话收尾这张图描述组合后的运行架构。实验 04 在 993 个会话的最后目标轮评价 Agent;下方 9K 沿用单轮 Intent → 检索 → Planner 口径,不把 Agent 另算为一个得分阶段。

  1. 步骤 01 · Agent 入口判断并准备本轮任务原句不变 / 恢复完整请求 / 安全直达
  2. 步骤 02 · 后端阶段 01请求分流0.6B LoRA · checkpoint-2000
  3. 步骤 03 · 后端阶段 02混合检索向量模型 + BM25
  4. 步骤 04 · 后端阶段 02重排与融合bge-reranker-v2-m3 + RRF
  5. 步骤 05 · 后端阶段 03选择并排序工具8B · SFT + RPO + DPO · 一次生成
  6. 步骤 06 · Agent 收尾严格检查并写回状态无效计划不覆盖上次有效结果
固定后端阶段 01 · 意图分流

入口意图分流

截至分流 · 9,000 / 9,000 · 100.0000%

输入原句或恢复后的请求普通请求保持原文;历史依赖已由 Agent 补全
最终路由模型Qwen3-0.6B LoRAcheckpoint-2000 · 电商请求继续处理,闲聊输出空工具计划并结束
阶段输出结构化分流仅电商请求进入候选检索
电商请求进入候选检索
固定后端阶段 02 · 候选检索

必要工具完整覆盖

截至检索 · 8,842 / 9,000 · 98.2444%

输入电商请求单工具或多工具请求
步骤 03 · 检索并行检索
词面检索BM25补充词面信号
语义检索bge-large-zh-v1.5跨领域与新增无关负样本
第一阶段排序加权 RRF各路 Top-40 · 向量权重 0.8 · k=5
步骤 04 · 评分候选交互评分
Top-20 候选bge-reranker-v2-m31 正 + 7 负(3 个按类型挑选、4 个检索难例)
输出重排名次
步骤 04 · 融合双路排序融合
第一阶段名次 · 0.4 精排名次 · 0.6
最终 RRF互补名次融合平滑常数 8
阶段输出Top-10 候选保持检索顺序进入工具链规划
保留第一阶段名次同步进入最终 RRF
本轮完整请求与 Top-10 候选进入规划
固定后端阶段 03 · 工具链规划

精确工具集合与有序工具链生成

最终结果 · 集合 8,352 / 9,000 · 92.8000% | 有序工具链 8,336 / 9,000 · 92.6222%

请求上下文本轮完整请求保留用户要求与顺序约束
候选检索精排 20 → Top-10 · 检索顺序截至检索 · 8,842 / 9,000 · 98.2444%
固定规划模型 · Top-10 输入 Qwen3-8B · RPO → DPO 77,724 条 SFT → RPO 主训练 → DPO 短程收敛 · checkpoint-113
有序输出 有序工具 ID 集合全对率 · 工具链全对率 · 严格 JSON 输出

规划模型一次生成同时完成工具选择与排序;集合全对率与工具链全对率是对同一输出的两种评分。实验只评测有序工具 ID,不包含参数生成、真实工具调用或调用失败恢复。

单轮最终结果 · 系统级工具链测试集 9,000 条

9K 累计 · 意图分流

Qwen3-0.6B LoRA · checkpoint-2000

100.00%

9,000 / 9,000

6,000 条电商和 3,000 条闲聊均正确分流
9K 累计 · 候选检索

负样本向量检索 + Top-20 交互精排

98.24%

8,842 / 9,000

新增失败 158 条 · 6K 日常电商中 97.37% 找齐 Top-10 必要工具
9K 最终 · 有序工具链

0.6B 路由 + 精排 20 / 规划 10 + 8B RPO / DPO

92.62%

8,336 / 9,000

规划阶段新增失败 506 条 · 日常电商请求 6K 工具链全对率 88.93%

三张卡如何计算:都使用同一 9K 测试集,并把上一阶段失败保留到下一阶段。0.6B 路由型号也依据这套 9K 比较确定,因此 100% 与 92.62% 是固定合成测试结果,不是完全未见的线上验证;Planner 只在训练侧独立开发请求上选型,6K 与 1K 在模型锁定后报告。

项目总数据表每套数据有多少条、用于训练还是测试 20 类数据 · 训练 / 选择参数 / 最终测试

项目级汇总

按使用顺序列出全部数据

各实验章节就近展示完整结果;这里集中说明规模和用途。
数据来源与内容规模与划分用途使用限制或结果
工具目录与文档三个实验共用8 个电商业务域;每项工具包含名称、描述与接口信息100 项工具
52 项查询类 / 48 项操作类
定义固定的 100 个候选工具并生成检索文档工具目录本身不是评测请求,也不测试新增工具
工具调用轨迹同时用于意图与检索实验单工具与多工具电商请求及目标工具链30,000 条
12K 单工具 / 18K 多工具
24K 训练 / 6K 测试
生成意图监督数据以及检索训练、测试样本请求、轨迹 ID 与相似请求写法分组按稳定规则隔离
意图监督数据实验 01训练侧电商轨迹、独立闲聊样本与 6 条容易混淆的请求48,006 条总计
45,606 训练 / 2,400 验证
固定同一组参数训练 0.6B 与 1.7B;验证集监控损失同一样本全集、不同排列;未逐项搜索学习率、轮数和 LoRA 参数
意图分流与路由选择集实验 016K 电商请求 + 3K 独立闲聊9,000 条比较规则、未微调模型与 LoRA 版本,并选出 0.6B checkpoint-2000同一 9K 后续用于系统级测试;已经用于型号选择,不是未见线上流量
向量与重排训练数据实验 0224K 训练轨迹与 100 份工具文档组成请求—工具样本70,012 个正对
向量:每个正对 1 正 + 2 负
重排:每组 1 正 + 7 负
向量负例来自跨领域与新增无关工具;重排负例包括 3 个按工具类型挑选的样本与 4 个检索难例负样本只来自训练划分;两类模型分别训练
检索模型开发集实验 02明确工具需求与简洁日常说法各 600 条;工具数 1–6 均衡1,200 条请求比较 5 种向量训练方案和 4 种微调重排架构选完模型后才使用 1.2K、6K、1K 与 9K 最终测试
候选数量与融合开发集实验 02日常说法与明确工具需求两类请求,包含单工具和训练未见组合2,400 条开发 + 1,200 条确认比较精排 10/20/30/50、规划 5/10/20/30/50 和最终融合参数规划候选必须全部经过精排;最高分 0.5pp 内优先低成本方案
长候选压力测试实验 02 · 参数确定后600 条单工具 + 600 条监督训练未见多工具组合1,200 条请求检查增加候选是否稳定改善规划准确率参数确定后运行,不参与模型或参数选择
日常电商请求测试集实验 02 / 033K 单工具 + 3K 多工具;多工具含已见与未见组合6,000 条请求
15,196 个目标工具
报告最终检索覆盖率与规划工具链全对率Top-10 找齐必要工具 97.3667%;最终 8B 工具链全对率 88.9333%
检索独立改写请求测试实验 02 · 参数确定后独立构造的两类写法,工具数 1–6 均衡1,200 条请求补充检查最终检索链的 AllHit@K 与 MRRAllHit@10 99.8333%;查看结果后未继续调参
Planner 监督训练数据实验 03工具需求明确写法与日常说法,均配当前检索 Top-10 和正确有序工具链77,724 条
53,725 + 23,999
训练 Qwen3-8B Planner 的工具选择与顺序规划1 轮 LoRA;与开发、6K、1K 无请求或轨迹重合
偏好训练起点数据实验 03正确工具链与监督模型在同一训练侧请求上的实际错误输出2,000 对
1,800 训练 / 200 监控
得到用于真实错误挖掘的固定 checkpoint-29不含冻结测试;保持当前 Top-10 顺序
偏好错误挖掘请求实验 03 · 训练侧新生成24K 偏长多约束请求 + 12K 一至两工具请求36,000 条
8,309 个去重语义错误
构造长短链均衡的 chosen / rejectedrejected 均为 checkpoint-29 的实际贪心输出,不手工伪造
RPO / DPO 偏好数据实验 03 · 当前模型真实错误覆盖 1–6 工具;包含替换、遗漏、多选与纯顺序错误4,000 对
3,600 训练 / 400 监控
比较四个主训练配方与四个短程扩展配方覆盖全部 100 工具;每个请求和来源最多一对;截断为 0
Planner 开发集实验 03600 条单工具 + 600 条 2–6 工具请求1,200 条评测 28 个 checkpoint,并锁定最终 checkpoint-113检索 AllHit@10 96.6667%;与训练和冻结测试均隔离
工具需求明确的请求测试集实验 02 / 03明确写出所需能力与顺序,并配目标工具与最终 Top-101,000 条请求补充测试最终检索和 8B PlannerTop-10 找齐必要工具 100%;最终工具链全对率 99.4000%
完整 100 工具 / Top-10 配对测试实验 03 · 基础模型日常电商 6K + 明确工具需求 1K;未微调 4B / 8B 分别比较两种候选范围7,000 条请求 × 2 种输入
4 组配对 · 8 份结果
验证 Top-10 候选是否帮助未微调 Planner4 / 4 组工具链全对率提高
系统级工具链测试集单轮最终结果3K 闲聊 + 6K 电商;0.6B checkpoint-2000 路由、精排 20 / 规划 10 与最终 8B Planner9,000 条逐样本联合计分;工具链成功 8,336 / 9,000集合 / 工具链成功率 92.8000% / 92.6222%;未执行真实工具
多轮 Agent 开发集实验 04 · 方案形成模型生成并经独立语义审核的 2~7 轮自然短会话;历史轮真实执行,每段只计最后目标轮991 个会话 · 2,793 个执行轮
605 个回放 / 386 个完整新请求
固定后端,在 A~L 十二种候选中先守住新请求,再提高历史回放方案 L:957 / 991 · 96.57%
多轮 Agent 独立测试集实验 04 · 一次性确认与开发集和 42,400 条保护数据完成请求、来源轨迹、表达簇与会话结构隔离993 个会话 · 2,835 个执行轮
612 个回放 / 381 个完整新请求
方案锁定后统一运行十二种候选,并报告两类目标、错误来源与 Planner 调用L:94.56%;回放 92.81%;完整新请求 97.38%
后续规划

下一轮优化方向

  1. 01 · 准确性真实请求与多随机种子重复实验引入匿名真实请求和口语噪声,并量化训练随机性
  2. 02 · 速度统一端到端性能压测同一请求协议测 p50 / p95、吞吐、冷启动与各阶段显存
  3. 03 · 业务覆盖新工具与冷启动加入未参与训练的新工具,验证目录扩展、工具定义变化时的适配与维护成本
  4. 04 · 执行闭环真实调用与执行失败恢复加入工具参数、返回值、失败分支与执行状态依赖;多轮工具目标恢复已在模型外框架中单独评测
工程证据 · 复现工程资产与复现 20 项证据 · 7 条 CPU 校验命令
核心结果10 项
补充报告10 项

CPU 数据构建与校验

校验工具目录、生成轨迹并检查训练与测试是否重叠;GPU 实验入口见项目仓库。

TERMINAL · $PROJECT_ROOT
cd "$PROJECT_ROOT"
python3 \
  PROJECT/scripts/catalog/validate_tool_catalog.py
python3 \
  PROJECT/scripts/dataset/generate_diverse_tool_trace.py \
  --train-context-salt 0 --test-context-salt 100003
python3 \
  PROJECT/scripts/dataset/audit_generation_leakage.py \
  --tokenizer fallback
python3 \
  PROJECT/scripts/dataset/audit_datasets.py \
  --strict-min-test-per-tool 30
python3 -m unittest discover \
  -s PROJECT/tests -v
python3 \
  PROJECT/scripts/agent/audit_agent_static_regression.py
python3 \
  PROJECT/scripts/agent/audit_agent_failure_guards.py

项目快照2026-08-16
工具目录版本100 个工具 · 2026-07-06

100-TOOL COMMERCE AGENT

从单轮选链,到多轮目标恢复。

回到项目概览 ↑