多步工具调用的难点不是单轮问答,而是每一步都要在工具链上做选择。SEER 把成功轨迹连同结构化经验一起存入一个在线经验池, 再用轨迹相似度、工具链覆盖、意图匹配三条轴检索 top-k 示例;全部发生在推理时,不更新参数。
多步工具调用里,prompt 中的固定示例覆盖不了不断变化的工具组合;只按初始问题的语义相似度检索,也抓不到「工具怎么串起来」这件事。
SEER 做两件事:每次任务成功后,用 LLM 裁判判断是否成功,成功就把整条交互轨迹入池;下一次任务每一步,按轨迹相似度 s1、工具链覆盖 s2、意图匹配 s3 给池中候选打分,取 top-k 拼进 prompt。
在 ToolQA 上,SEER 的平均 Easy/Hard 为 67.9 / 31.1,高于 ExpeL 的 61.8 / 26.4;在 τ-bench 上,Qwen2.5-72B 从 28.46 升到 51.84,但仍低于 GPT-4o 54.76、DeepSeek-v3 57.24 与 Claude 3.5 Sonnet 59.58。
自改进曲线从第 1 批 37.7 升到第 10 批 54.9。代价是:经验池最多 1000 条、检索权重固定 1/3、且只收成功轨迹——它优化的是「复用成功」,不是「从失败中学习」。
先把「一条轨迹」和「一次检索」说清楚:SEER 检索的不是答案,而是下一步的动作。
Function calling 让 LLM 能调用外部工具,但多步场景下,模型同时要解决三件事:选哪个工具、填什么参数、以及把多个工具串成一条链(摘要)。每一步的输入不是原始问题,而是截至当前的全部交互历史:
于是「找几个相似示例放进 prompt」这件事有两个天然缺陷。第一,prompt 有长度上限,示例不可能覆盖所有工具和问题类型;示例的相关性与复杂度又直接影响模型表现(§1)。第二,人工筛选或预先收集的示例库是静态的,工具和任务一变就失效,而且维护成本高(§1、§2.2)。
两个任务的初始问题可能几乎一样,但一个只需要查数据库,另一个还要先查航班、再查酒店、最后下单。按初始 query 的语义相似度检索,会把前者排在前面;真正有用的经验,是那条走通了完整工具链的轨迹。
论文把检索单元定义成「轨迹经验」:不只存问题和答案,还存整条交互过程、初始 query、推断出的用户意图、以及工具调用序列。这样检索才有机会对齐「解决过程」,而不只是「问题表面」。
规模上,ToolQA 有 800 道 Easy、730 道 Hard(55 / 62 个模板,8 个域);τ-bench 有 165 道题(airline 50、retail 115,以 Table 2 为准)。交互步数上限:ToolQA T=6,τ-bench T=30。步数越多,单看初始 query 越不够。
一路把示例当固定资产,一路把工具使用当策略学习;SEER 选的是推理时的经验复用。
ART 检索相似的多步推理轨迹来引导中间步骤和函数调用;ExpeL 从过往任务经验中学习。但论文 §2.2 指出,这类方法通常依赖静态的离线数据集;示例库需要预先收集或人工整理。
卡点:池子不随部署过程更新;检索大多停留在任务/查询级相似度,工具链对齐没有被显式建模。
StepTool 用步级 reward shaping 和 policy gradient;SWiRL 生成合成多步工具数据,再用 reward model 做步级 RL。它们把工具使用当成策略学习问题。
卡点:需要训练(奖励模型或参数更新),部署成本和数据准备都更重;论文要的是「不加训练」的推理时方案。
SEER 的增量因此不是一个新的训练目标,而是两件事:把经验池改成在线更新,把检索改成三轴细粒度打分。它仍然依赖底座 LLM 和 in-context learning,但不改参数。
这也解释了为什么 ToolQA 上最强的对照是 ExpeL:它同样利用过往经验,差别在于 SEER 的池子是在线长的、检索维度更多。Table 3 里 ExpeL 的 Easy/Hard 平均为 61.8 / 26.4,SEER 为 67.9 / 31.1。
SEER 的全部检索逻辑,就是三个分数加权求和,然后取 top-k。
每条经验被表示成一个四元组:
给定当前历史 Ht 和池中候选 τ′,三个分数分别是:
s1 轨迹相似度比较的是整条交互历史的 embedding 与候选轨迹的 embedding,归一化为 (1+cos)/2。它让检索超过「初始 query 匹配」,能捞到结构推进和决策模式相似的轨迹。论文在消融里还做了一个 query-based 变体:只比较初始 query 的 embedding,用来隔离「全轨迹」与「仅查询」的差别(§4.4)。
s2 工具链覆盖是当前任务已用工具集合被候选覆盖的比例。计算时忽略工具出现的方向,把 U 当成无序集合(§3.3);工具顺序的相似性由 s1 的轨迹表示承担。当前用了 3 个工具、候选覆盖 2 个,s2 就是 2/3。
s3 意图匹配是二值指示函数:当前意图与候选意图是否相同。意图不是人工标注,而是由 LLM 根据初始 query 从预定义离散意图集中分类(§3.2;提示模板见 Appendix A.1 的 Figure 4,本页未转录)。
最终得分是加权和。实验里 λ1=λ2=λ3=1/3,默认取 top-k = 4;这 4 条经验作为 in-context 示例,引导模型输出下一步动作 at(Algorithm 1)。
下面是一个机制演示,不是论文实验的复现。当前任务固定为「意图 travel_booking,已用 3 个工具」;候选 A–E 的 cos 值、工具集合与意图都是示意输入。切换消融开关,看排序和 top-4 入选名单怎么变。
travel_booking;工具集 flight_search、hotel_search、hotel_book。候选 A–E 见下;k 固定为 4(§4.1)。
设定 1(完整 SEER,λ=(1/3, 1/3, 1/3)),候选 A:
cos=0.64 → s1=(1+0.64)/2=0.820;工具交集 3/3 → s2=1.000;意图相同 → s3=1。
Score=(0.820+1.000+1)/3=0.940。
设定 2(w/o s3,λ=(1/2, 1/2, 0)),候选 B:
cos=0.91 → s1=(1+0.91)/2=0.955;工具交集 2/3 → s2=0.6667;s3 不参与。
Score=(0.955+0.6667)/2=0.8108,页面显示 0.811。同一设定下候选 A=(0.820+1.000)/2=0.910,所以 B 从末位升到第 2。
显示口径:四舍五入到 3 位小数,JS 用 toFixed(3);本交互不涉及标准差。
覆盖:按 Algorithm 1 第 4–8 步实现 s1 的归一化余弦、s2 的集合覆盖率、s3 的指示函数、加权求和、降序排序和 top-k 截断。消融开关按「把对应维度的权重置 0,其余两维等权归一化」实现。
未覆盖:没有实现真正的 embedding 模型与意图分类器,cos 值和意图都是预设的;没有从原始交互文本里抽取工具序列,也没有实现经验池的在线写入。因此页面只演示打分与排序机制,推断(依据:候选为示意输入,且消融权重处理为页面自定)不能把这里的排序当作 Figure 3 / Table 6 的数值对照。
另外,原文没有说明 w/o s2、w/o s3 消融时剩余两维权重如何处理;上面的「等权归一化」是页面为可交互而自定的规则,不是论文规则。原论文的消融结果以 Table 6 为准。
SEER 是推理时方法;工程上要关心经验池大小、检索频率和裁判调用,而不是反向传播。
实验配置(§4.1):底座 Qwen2.5-72B-Instruct,温度 0;embedding 用 bge-large-en-v1.5;默认 top-k = 4;λ1=λ2=λ3=1/3;经验池上限 1000 条;ToolQA 初始池 8 条示例,τ-bench 初始池 2 条,并用 GPT-4o 扮演用户。
每一步的检索成本:把当前历史编码成向量和意图,对池中至多 1000 条经验逐条算 s1/s2/s3 并排序,取前 4 条拼进 prompt。没有梯度、没有参数更新;成本随池大小和交互步数增长。论文没有报告检索耗时,也没有说明池满 1000 条后的淘汰策略。
任务结束后才进入经验池回路:LLM 评估器把模型输出与参考答案比对,给出二分类成功/失败;评估逻辑容忍格式差异和轻微数值差异(§3.4)。成功才抽取四元组入池(Algorithm 2),失败轨迹丢弃。评估器的提示模板见 Appendix A.2 的 Figure 5,本页未转录。
SEER 把「从过去任务学习」放在检索层:模型每次看到的示例,是当前池里最相关的成功轨迹。论文的定位是 without additional training(§2.1);代价是经验池的多样性受底座模型能力约束(Limitations)。
这套设计有两个直接后果。第一,池子越大,每步打分越贵;论文把池子上限设为 1000,但没有给出延迟数据。第二,只有「裁判认为成功」的轨迹才会入池,所以裁判的判定质量会直接影响池子的质量;论文没有报告裁判自身的准确率。
上面是每一步的「检索 → 决策 → 环境反馈」,下面是任务结束后的「评估 → 入池」;两条回路通过经验池连接。
读图顺序:当前历史 Ht 先做表征(轨迹 embedding + 意图分类),再对池中每条 dτ′ 算 s1/s2/s3,取 top-k 拼进 prompt,LLM 产出动作 at;环境返回 ot+1,历史更新。任务结束后,评估器 E 对整条轨迹做二分类;成功才抽取 dτ 入池,失败直接丢弃。
这张图也说明了为什么「只收成功」是一个结构性选择:失败轨迹没有进入打分候选的入口。经验池只会因成功而增长,不会因失败而修正。
先看两张主表,再看自改进曲线、消融和 top-k;所有数字都带表号或图号。
ToolQA 上,所有基线都用同一个底座 Qwen2.5-72B-Instruct,温度 0(§4.1)。SEER 的平均 Easy/Hard 为 67.9 / 31.1,ExpeL 为 61.8 / 26.4。
| Method | Flight E | Flight H | Coffee E | Coffee H | Yelp E | Yelp H | Airbnb E | Airbnb H | DBLP E | DBLP H | SciREX E | SciREX H | Agenda E | Agenda H | GSM8K E | Avg E | Avg H |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chameleon | 37.0 | 2.0 | 61.0 | 2.3 | 60.0 | 13.0 | 12.0 | 4.0 | 25.0 | 17.0 | 6.0 | 19.0 | 57.0 | 0.0 | 17.0 | 34.5 | 8.2 |
| CoT | 37.0 | 22.0 | 79.0 | 13.1 | 43.0 | 52.0 | 79.0 | 19.0 | 0.0 | 1.0 | 3.0 | 22.0 | 54.0 | 0.0 | 2.0 | 37.1 | 18.4 |
| ReAct | 67.0 | 6.0 | 94.0 | 25.4 | 70.0 | 17.0 | 86.0 | 17.0 | 27.0 | 22.0 | 6.0 | 18.0 | 61.0 | 0.0 | 64.0 | 59.5 | 15.1 |
| TUMS | 64.0 | 9.0 | 93.0 | 22.3 | 73.0 | 15.0 | 91.0 | 11.0 | 34.0 | 30.0 | 4.0 | 14.0 | 59.0 | 0.0 | 72.0 | 61.3 | 14.5 |
| ART | 73.0 | 20.0 | 99.0 | 33.1 | 81.0 | 30.0 | 94.0 | 25.0 | 33.0 | 33.0 | 3.0 | 25.0 | 1.0 | 0.0 | 73.0 | 57.1 | 23.7 |
| ExpeL | 81.0 | 29.0 | 92.0 | 34.6 | 77.0 | 40.0 | 88.0 | 32.0 | 37.0 | 29.0 | 5.0 | 19.0 | 57.0 | 1.0 | 57.0 | 61.8 | 26.4 |
| SEER (Ours) | 82.0 | 25.0 | 87.0 | 41.5 | 90.0 | 58.0 | 94.0 | 33.0 | 37.0 | 35.0 | 6.0 | 23.0 | 68.0 | 2.0 | 79.0 | 67.9 | 31.1 |
τ-bench 的结果更能看出上限。Table 4 里,SEER(72B) 的平均为 51.84,比底座 Qwen2.5-72B 的 28.46 高 23.38 个百分点;但 GPT-4o 是 54.76,还高 2.92 个百分点;Claude 3.5 Sonnet 59.58、DeepSeek-v3 57.24 也都更高。论文 Table 4 的 caption 写的是「approaching the performance of GPT-4o at 54.76%」。
| Methods | Airline | Retail | Avg |
|---|---|---|---|
| Claude 3.5 Sonnet | 48.98 | 70.18 | 59.58 |
| GPT-4o | 42.86 | 66.67 | 54.76 |
| GPT-4o-mini | 22.45 | 47.37 | 34.91 |
| DeepSeek-v3 | 46.94 | 67.54 | 57.24 |
| Qwen2.5-72B-Instruct | 30.61 | 26.32 | 28.46 |
| Qwen2.5-7B-Instruct | 8.16 | 10.53 | 9.34 |
| SEER(7B) | 20.41 | 13.16 | 16.78 |
| SEER(72B) | 38.78 | 64.91 | 51.84 |
7B 模型的提升是 7.44 个百分点(16.78 − 9.34),72B 是 23.38 个百分点(51.84 − 28.46)。两个数字在摘要里都写作「accuracy gains of 7.44% and 23.38%」;按 Table 4 复算是点差。
实验把 ToolQA 的 1530 道题随机打乱,分成 10 批、每批 153 道;每批评估完后,把答对的实例全部加入经验池,供下一批检索(§4.3)。
冷启动:经验池只有初始示例,准确率低于后续批次;论文没有单独报告这一批的池大小。
论文称此时已超过基线方法;比第 1 批高 14.6 个百分点。
最终批次;比第 1 批高 17.2 个百分点。Figure 2 的逐批曲线本页未转录,只转录正文给出的这三个点。
Table 6 的 Avg 两列如下。Query-based 指 s1 只比较初始 query;w/o s2、w/o s3 分别去掉工具链覆盖和意图匹配。
| Variant | Avg E | Avg H |
|---|---|---|
| SEER | 67.9 | 31.1 |
| SEER (w/o s2) | 64.3 | 25.5 |
| SEER (w/o s3) | 56.1 | 30.1 |
| SEER (query-based) | 67.5 | 30.5 |
| SEER + Reflection | 69.0 | 32.0 |
Table 5 扫了 k=0 到 8。下面只转录 Avg 两列;8 个域的明细列未转录。
| Variant | k | Avg E | Avg H |
|---|---|---|---|
| SEER(Q) | 0 | 37.13 | 18.49 |
| SEER(Q) | 2 | 66.38 | 27.95 |
| SEER(Q) | 4 | 67.5 | 31.51 |
| SEER(Q) | 6 | 67.13 | 33.56 |
| SEER(Q) | 8 | 66.75 | 31.23 |
| SEER | 0 | 37.63 | 19.04 |
| SEER | 2 | 58.88 | 27.26 |
| SEER | 4 | 67.88 | 31.51 |
| SEER | 6 | 65.88 | 27.12 |
| SEER | 8 | 67.13 | 30.14 |
1. query-based 的 Hard 平均出现三个数:Table 6 写 30.5;Table 5 的 k=4 行写 31.51;Appendix D 写「best with 4 demonstrations … 33.56 hard」,而 33.56 对应 Table 5 的 k=6 行。三处出处并列,页面不选取其中一个当定论。
2. τ-bench 的域规模:§4.1 写「airline (115 tasks, 15 tools) and retail (50 tasks, 13 tools)」;Table 2 写 τ-retail 115 questions / 15 tools、τ-airline 50 questions / 13 tools。两处把域与规模对调,本页在正文引用时以 Table 2 为准。
3. 点差写成百分比:摘要与 §4.2 的 6.1% / 4.7%,以及摘要的 7.44% / 23.38%,按表值复算都是百分点差(67.9−61.8、31.1−26.4、16.78−9.34、51.84−28.46)。页面保留原文引述,但在数字旁统一写「个百分点」。
四条边界直接来自方法本身与论文自述的 limitations;它们决定了什么时候不该用 SEER。
Algorithm 2 只在评估器判定成功时入池;失败轨迹直接丢弃。因此 SEER 无法从「什么不能做」中学习,也没有失败归因、反事实修正或负例检索。经验池的多样性只会沿着成功路径扩张。
推断(依据:§3.4 与 Algorithm 2 的入池条件)如果评估器把失败误判为成功,污染会直接进入检索候选,且没有机制自动清除。
第 1 批只有 37.7%,需要初始示例托底:ToolQA 初始池 8 条,τ-bench 初始池 2 条(§4.1)。池子上限 1000 条;论文没有说明池满后的淘汰策略,也没有报告检索延迟。池越大,每步对全部候选打分的成本越高。
论文 Limitations 明确写:SEER 在所有任务上用 fixed retrieval weighting scheme,对异质领域或任务类型可能不是最优;动态调整检索策略(task-aware weighting、不确定性估计)留作未来工作。页面交互里的权重变化是演示,不是论文的方法。
论文 Limitations 的第一条是:经验记忆的多样性受底座 LLM 能力约束;超出 in-context learning 能覆盖的复杂或边缘 query,会遇到瓶颈。评估器是二分类 LLM,论文没有报告它自身的准确率;裁判质量直接决定入池质量。
Benchmark 范围也要算进边界:ToolQA 是单轮多步(T=6),τ-bench 是两个真实域(airline / retail,T=30);没有覆盖更长的 horizon、工具 API 变更或需要从失败中修正的场景。
推断(依据:方法只收成功轨迹、权重固定、池上限 1000)如果场景没有可靠参考答案/评估器,或工具集频繁变化、对每步检索延迟敏感,SEER 的收益会先被这些条件吃掉;这时它不是「更聪明的 agent」,只是「更贵的 RAG」。