SEER
Paper · EMNLP 2025 · arXiv 2508.15214v3

SEER:不训练模型,让 agent 从自己的成功轨迹里检索「下一步」

多步工具调用的难点不是单轮问答,而是每一步都要在工具链上做选择。SEER 把成功轨迹连同结构化经验一起存入一个在线经验池, 再用轨迹相似度、工具链覆盖、意图匹配三条轴检索 top-k 示例;全部发生在推理时,不更新参数。

Sijia Cui, Aiyao He, Shuai Xu, Hongming Zhang, Yanna Wang, Qingyang Zhang, Yajing Wang, Bo Xu arXiv 2508.15214v3 ↗ 代码 ↗
TL;DR · 30 秒抓住核心

多步工具调用里,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、且只收成功轨迹——它优化的是「复用成功」,不是「从失败中学习」。

67.9%
ToolQA Easy 平均
ExpeL 61.8 / Hard 31.1 对 26.4
51.84%
τ-bench 平均(SEER 72B)
底座 Qwen2.5-72B 28.46 / GPT-4o 54.76
54.9%
第 10 批准确率
第 1 批 37.7 / 1530 题分 10 批
01

多步工具调用,难在每一步都要重新决定「调什么」

先把「一条轨迹」和「一次检索」说清楚:SEER 检索的不是答案,而是下一步的动作。

Function calling 让 LLM 能调用外部工具,但多步场景下,模型同时要解决三件事:选哪个工具、填什么参数、以及把多个工具串成一条链(摘要)。每一步的输入不是原始问题,而是截至当前的全部交互历史:

Ht = { o0, a0, o1, a1, …, ot }
τ = { o0, a0, o1, a1, … }
§3.1 · o 是用户输入或工具返回,a 是模型动作;轨迹 τ 是整条 o/a 序列

于是「找几个相似示例放进 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 越不够。

02

前人两条路:静态示例库,或需要训练的 RL

一路把示例当固定资产,一路把工具使用当策略学习;SEER 选的是推理时的经验复用。

静态示例 / 检索

ART、ExpeL、普通 ICL

ART 检索相似的多步推理轨迹来引导中间步骤和函数调用;ExpeL 从过往任务经验中学习。但论文 §2.2 指出,这类方法通常依赖静态的离线数据集;示例库需要预先收集或人工整理。

卡点:池子不随部署过程更新;检索大多停留在任务/查询级相似度,工具链对齐没有被显式建模。

训练型 RL

StepTool、SWiRL

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。

03

三条打分轴:轨迹像不像、工具重不重、意图同不同

SEER 的全部检索逻辑,就是三个分数加权求和,然后取 top-k。

每条经验被表示成一个四元组:

dτ = ⟨ Eτ, Eq, Iτ, Uτ ⟩
§3.2 · Eτ 是整条轨迹的 embedding;Eq 是初始 query 的 embedding;Iτ 是 LLM 推断的离散意图;Uτ 是工具调用序列

给定当前历史 Ht 和池中候选 τ′,三个分数分别是:

s1 = (1 + cos(EHt, Eτ′)) / 2
s2 = |UHt ∩ Uτ′| / |UHt|
s3 = 1[ IHt = Iτ′ ]
Scoreτ′ = λ1s1 + λ2s2 + λ3s3
§3.3 · s1 归一化到 [0,1];s2 是当前工具集被候选覆盖的比例;s3 是意图相同的指示函数

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)。
当前排序与入选项
正在计算…
候选 A 同工具链同意图;B 轨迹最像但意图不同;C 查询最像;D 工具覆盖最低;E 折中。分数统一保留 3 位小数。
手算核对:两组参数 → 排序页面 JS 与这里用同一条公式

设定 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 为准。

04

不训练参数:成本在「每步检索 + 池维护」

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,本页未转录。

为什么能「不训练」

改进来自 prompt 里的经验,不来自参数

SEER 把「从过去任务学习」放在检索层:模型每次看到的示例,是当前池里最相关的成功轨迹。论文的定位是 without additional training(§2.1);代价是经验池的多样性受底座模型能力约束(Limitations)。

这套设计有两个直接后果。第一,池子越大,每步打分越贵;论文把池子上限设为 1000,但没有给出延迟数据。第二,只有「裁判认为成功」的轨迹才会入池,所以裁判的判定质量会直接影响池子的质量;论文没有报告裁判自身的准确率。

05

一次任务的两条回路:检索给下一步,评估决定入池

上面是每一步的「检索 → 决策 → 环境反馈」,下面是任务结束后的「评估 → 入池」;两条回路通过经验池连接。

当前历史 H_t o0, a0, …, ot 表征 轨迹 embedding + 意图 三轴打分 s1 · s2 · s3 → Score top-k 经验 k = 4(§4.1) LLM 决策 a_t 环境 / 用户 o_t+1 o_t+1 更新 H_t,进入下一步 任务结束(轨迹 τ) 整条 o / a 序列 LLM 评估器 E 二分类:成功 / 失败 成功 → 抽取 d^τ E^τ, E^q, I^τ, U^τ 经验池 D ≤ 1000 条 失败 → 丢弃(不入池) 候选 d^τ′ → 打分
按 §3 与 Figure 1 的文字描述简化重绘,不是原文 Figure 1 的矢量复制。覆盖「检索 → 决策 → 环境反馈」与「评估 → 成功入池 → 再检索」两条回路;未画出 prompt 模板、embedding 模型和意图分类器的内部步骤。

读图顺序:当前历史 Ht 先做表征(轨迹 embedding + 意图分类),再对池中每条 dτ′ 算 s1/s2/s3,取 top-k 拼进 prompt,LLM 产出动作 at;环境返回 ot+1,历史更新。任务结束后,评估器 E 对整条轨迹做二分类;成功才抽取 dτ 入池,失败直接丢弃。

这张图也说明了为什么「只收成功」是一个结构性选择:失败轨迹没有进入打分候选的入口。经验池只会因成功而增长,不会因失败而修正。

06

ToolQA 平均更高;τ-bench 仍排在闭源模型之后

先看两张主表,再看自改进曲线、消融和 top-k;所有数字都带表号或图号。

ToolQA 上,所有基线都用同一个底座 Qwen2.5-72B-Instruct,温度 0(§4.1)。SEER 的平均 Easy/Hard 为 67.9 / 31.1,ExpeL 为 61.8 / 26.4。

Table 3 · ToolQA 主结果(Accuracy %),完整转录 7 个方法与 8 个域的 Easy/Hard 列;GSM8K 只有 Easy 列
Method Flight EFlight H Coffee ECoffee H Yelp EYelp H Airbnb EAirbnb H DBLP EDBLP H SciREX ESciREX H Agenda EAgenda H GSM8K E Avg EAvg H
Chameleon37.02.061.02.360.013.012.04.025.017.06.019.057.00.017.034.58.2
CoT37.022.079.013.143.052.079.019.00.01.03.022.054.00.02.037.118.4
ReAct67.06.094.025.470.017.086.017.027.022.06.018.061.00.064.059.515.1
TUMS64.09.093.022.373.015.091.011.034.030.04.014.059.00.072.061.314.5
ART73.020.099.033.181.030.094.025.033.033.03.025.01.00.073.057.123.7
ExpeL81.029.092.034.677.040.088.032.037.029.05.019.057.01.057.061.826.4
SEER (Ours)82.025.087.041.590.058.094.033.037.035.06.023.068.02.079.067.931.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%」。

Table 4 · τ-bench 主结果(pass^1 / 平均成功率 %);默认指标为 pass^1(§4.1)
MethodsAirlineRetailAvg
Claude 3.5 Sonnet48.9870.1859.58
GPT-4o42.8666.6754.76
GPT-4o-mini22.4547.3734.91
DeepSeek-v346.9467.5457.24
Qwen2.5-72B-Instruct30.6126.3228.46
Qwen2.5-7B-Instruct8.1610.539.34
SEER(7B)20.4113.1616.78
SEER(72B)38.7864.9151.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 复算是点差。

自改进:第 1 批 37.7,第 5 批 52.3,第 10 批 54.9

实验把 ToolQA 的 1530 道题随机打乱,分成 10 批、每批 153 道;每批评估完后,把答对的实例全部加入经验池,供下一批检索(§4.3)。

第 1 批

37.7%

冷启动:经验池只有初始示例,准确率低于后续批次;论文没有单独报告这一批的池大小。

第 5 批

52.3%

论文称此时已超过基线方法;比第 1 批高 14.6 个百分点。

第 10 批

54.9%

最终批次;比第 1 批高 17.2 个百分点。Figure 2 的逐批曲线本页未转录,只转录正文给出的这三个点。

消融:s3 更影响 Easy,s2 更影响 Hard

Table 6 的 Avg 两列如下。Query-based 指 s1 只比较初始 query;w/o s2、w/o s3 分别去掉工具链覆盖和意图匹配。

Table 6 · 消融(Avg Accuracy %);仅转录消融相关行的 Avg E/H 两列,其余行与 8 个域的明细列未转录
VariantAvg EAvg H
SEER67.931.1
SEER (w/o s2)64.325.5
SEER (w/o s3)56.130.1
SEER (query-based)67.530.5
SEER + Reflection69.032.0

top-k:4 条最好,但不是单调曲线

Table 5 扫了 k=0 到 8。下面只转录 Avg 两列;8 个域的明细列未转录。

Table 5 · top-k 对 Avg 的影响(Accuracy %);仅转录 Avg E/H 两列,域级明细未转录;SEER(Q) 即 query-based
VariantkAvg EAvg H
SEER(Q)037.1318.49
SEER(Q)266.3827.95
SEER(Q)467.531.51
SEER(Q)667.1333.56
SEER(Q)866.7531.23
SEER037.6319.04
SEER258.8827.26
SEER467.8831.51
SEER665.8827.12
SEER867.1330.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)。页面保留原文引述,但在数字旁统一写「个百分点」。

07

它优化的是「复用成功」,不是「学会失败」

四条边界直接来自方法本身与论文自述的 limitations;它们决定了什么时候不该用 SEER。

边界一

只收成功轨迹,失败没有入口

Algorithm 2 只在评估器判定成功时入池;失败轨迹直接丢弃。因此 SEER 无法从「什么不能做」中学习,也没有失败归因、反事实修正或负例检索。经验池的多样性只会沿着成功路径扩张。

推断(依据:§3.4 与 Algorithm 2 的入池条件)如果评估器把失败误判为成功,污染会直接进入检索候选,且没有机制自动清除。

边界二

冷启动与池上限

第 1 批只有 37.7%,需要初始示例托底:ToolQA 初始池 8 条,τ-bench 初始池 2 条(§4.1)。池子上限 1000 条;论文没有说明池满后的淘汰策略,也没有报告检索延迟。池越大,每步对全部候选打分的成本越高。

边界三

三个 λ 固定为 1/3

论文 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」。