作者:Xiang Gao, Yuguang Yao et.c
单位:Intuit AI Research;Temple University
来源:ACL 2026
时间:2026.07
链接:[RIMRULE: Improving Tool-Using Language Agents via MDL-Guided Rule Learning]
一. 研究背景
大语言模型逐渐从文本生成器发展为能够调用搜索、计算、数据库、预订和企业 API 的智能体,工具使用能力成为衡量 Agent 实用性的重要指标。
在标准化工具环境中,模型通常能够依据清晰的工具说明完成调用。但在真实业务场景中,API 往往具有特殊的命名方式、不完整的文档、复杂的参数约束,甚至包含企业内部特有的执行流程。模型即使理解了用户意图,也可能在任务分解、工具选择和参数填写环节出现系统性错误。
现有工具适应方法主要包括三类:
第一类是 Few-shot Prompting,即检索相似示例并放入上下文。它能够复用历史经验,但通常保留的是完整样本,模型不一定能从中抽象出可迁移的规律。
第二类是全局 Prompt 优化,即为所有问题生成一套统一指令。这种方法实现简单,但固定 Prompt 难以覆盖不同任务和不同工具环境。
第三类是模型微调。微调能够把工具知识写入模型参数,但需要额外训练成本;当工具接口发生变化时,模型可能需要重新训练,而且参数中的知识难以解释和迁移。
RIMRULE 关注的问题是:能否让模型像人类一样,从失败中总结出简洁、可复用的经验规则,并在遇到相似问题时动态调用这些规则?
本文认为,人类不会完整记住每一次失败,而会把失败压缩为类似遇到这种情况时,应当采取某种操作的启发式知识。RIMRULE 因此尝试将 Agent 的适应过程从模型参数中分离出来,构建一个可解释、可编辑和可迁移的外部规则库。
二. 论文概要
论文提出 RIMRULE,即 Reusable、Interpretable and MDL-guided Rules。它是一种面向工具调用智能体的失败驱动规则学习框架。本文的核心贡献主要包括四点:
失败驱动规则生成: 系统比较 Agent 的错误执行轨迹与正确轨迹,定位最上游的根因错误,并生成原子化的 if–then 规则。
自然语言与符号双重表示: 每条规则同时保存为自然语言形式和结构化符号形式。自然语言规则用于指导 LLM,符号规则用于去重、整合和检索。
MDL 引导的规则整合: 系统利用最小描述长度思想,在规则复杂度与失败纠正能力之间进行权衡,通过删除冗余规则和泛化具体规则,形成更紧凑的规则库。
动态规则检索: 在处理新任务时,系统不会注入全部规则,而是根据当前问题和可用工具检索相关规则,再将其加入 Agent Prompt。
论文在 ToolHop 和 BFCL 两个工具调用基准上进行实验。结果表明,RIMRULE 能够提高已见工具和未见工具上的调用准确率,并且可以与监督微调和原生 Function Calling 模型结合。部分规则还能够在不同模型之间复用。
本文与传统方法最大的不同在于,它并不保存完整的成功示例,也不直接修改模型参数,而是将模型从失败中获得的知识转化为一个独立的规则层: 基础大模型+领域规则库+动态规则检索。
这种设计使 Agent 的适应知识更加透明,也方便在工具变化后单独更新规则,而不必重新训练整个模型。
三、核心思想
本文的核心思想可以概括为:LLM 是失败分析器与候选规则生成器;执行反馈是规则评价器;规则库是模型之外的适应记忆。
传统 Few-shot 方法通常会检索一个与当前问题相似的历史案例,然后让模型模仿该案例。但两个问题在表面语言上可能不同,却共享相同的错误结构。
例如:
- 查询某人的外祖父;
- 查询某人的继兄弟;
- 查询某位人物的祖母出生地。
这些问题的具体人物和目标属性不同,但可能共享同一条规则:当工具不支持复杂关系直接查询时,应先逐步解析中间实体,再查询目标属性。
因此,RIMRULE 不强调检索相似问题,而更强调检索适用于当前推理结构的规则。
论文还提出了一个重要的双重表示思想。
自然语言规则便于大模型理解,例如:如果问题包含多层亲属关系,应逐级查询中间人物,并将前一步结果作为下一步工具输入。
符号规则则便于系统管理:
domain = RELATIONSHIP_RESOLUTION
qualifier = RELATIONSHIP_CHAIN_TRAVERSAL
action = [DECOMPOSE_QUERY, RESOLVE_INTERMEDIATE_ENTITY]
strength = MANDATORY
tool_category = GENEALOGY_QUERY
自然语言负责执行,符号结构负责检索和压缩。论文第 3 页的图 2 将整个过程划分为规则生成、规则整合和推理时规则注入三个阶段。
这种设计对食品配料推理也具有启发性:系统不应只记住某个品牌酸奶的具体估算结果,而应进一步总结“乳制品中蛋白质贡献与乳源配料比例之间的关系”等可迁移规则。
四、方法设计
4.1 失败经验收集与根因规则生成
RIMRULE 首先使用零样本工具 Agent 运行训练集,并保存执行失败的样本。
每个失败经验表示为:
(x,S,τ⁻,τ*)
其中:
x表示用户问题;S表示当前可用工具集合;τ⁻表示模型生成的错误执行轨迹;τ*表示正确执行轨迹。
系统让另一个 LLM 比较错误轨迹与正确轨迹,并判断错误属于以下哪一类:
- 任务分解错误;
- 工具选择错误;
- 工具参数构造错误。
规则生成过程采用 Explanation-Based Learning 的思想。模型需要区分根因错误和传播错误。
例如,Agent 没有先识别中间人物,导致后续工具查询不到数据。真正需要总结的规则是:复杂关系需要逐步分解。
生成规则后,系统还会进行两项检查:
第一,将规则重新注入原任务,确认它确实能够改善执行结果。
第二,检查规则是否简洁、原子化,并符合 if–then 形式。
如果一条规则只能修复部分错误,系统可以再次调用规则生成器,继续寻找其他根因规则。
4.2 自然语言与符号双重表示
自然语言规则可能存在大量表达差异。例如,“逐步解析中间实体”“分解复杂关系链”和“依次查询每层关系”可能表示相同策略。
为了降低这种语言差异,RIMRULE 将规则转换为五类符号字段:
Domain, Qualifier, Action, Strength, ToolCategory
其中,Domain 表示规则所属的宽泛领域,Qualifier 描述具体适用情境,Action 表示应执行的操作,Strength 表示规则优先级,ToolCategory 表示适用的工具类别。
论文首先让 LLM 从全部自然语言规则中归纳候选符号词表,再使用固定词表对每条规则进行分类。
最终,每条规则保存为:
r=(r^(NL),r^(SYM))
其中:
r^(NL)是注入 Agent Prompt 的自然语言版本;r^(SYM)是用于检索、比较和规则整合的符号版本。
这种双重表示避免了直接用自然语言长度衡量规则复杂度,也使语义相同但表达不同的规则更容易被识别。
4.3 MDL 引导的规则整合
局部规则生成会产生大量重复、相似或过度具体的规则。如果将所有规则直接注入 Prompt,不仅会增加 Token 成本,还可能导致规则相互干扰。
因此,RIMRULE 使用最小描述长度思想整合规则库。
论文定义:
MDL(H)=L(H)+L(D | H)
其中,H 表示当前规则库。
规则复杂度为:
L(H)=αΣ_(r∈ H)ℓ(r)
其中,ℓ(r) 表示规则的符号长度,α 控制对规则复杂度的惩罚。
规则对失败数据的解释代价为:
L(D | H)=-[ k_H log p̂_H+ (n-k_H) log (1-p̂_H) ]
其中:
p̂_H=(k_H)/(n)
k_H 表示规则库能够纠正的失败数量。
系统从完整候选规则库开始,反复执行两种操作:
PRUNE: 删除某条规则。
GENERALIZE: 将只适用于某个具体工具的规则,泛化为适用于某类工具的规则。
只有当操作能够降低 MDL 目标时,系统才接受该修改。整个过程持续到没有局部编辑能够进一步降低目标为止。
从工程角度看,该过程可以理解为一种“保留有效规则、删除冗余规则”的行为驱动剪枝机制。
不过,当前 MDL 数据项存在一个需要谨慎理解的问题。它本质上是二元熵:
L(D | H)=n h(k_H/n)
因此,当规则纠正全部失败或完全不纠正失败时,数据项都可能很低。当前方法之所以没有退化为空规则库,主要依赖于从高纠正率规则库出发,并采用只接受局部改进的贪心搜索。
所以更准确的表述应是:RIMRULE 使用 MDL 引导的局部规则剪枝与泛化,而不是从理论上保证获得全局最优规则库。
4.4 推理阶段的动态规则检索
面对新任务时,系统不会将所有规则放入 Prompt,而是根据当前问题和可用工具动态检索规则。
首先,系统将用户问题和工具环境转换为符号状态:
z_q=Symbolize(x_q,S_q)
随后执行两级检索。
第一级是适用性过滤。任务分解规则通常保留,而工具选择和参数规则需要检查当前工具集合中是否存在对应工具或工具类别。
第二级是符号相似度排序。系统比较查询状态与规则在 Domain、Qualifier、Action 和 ToolCategory 等字段上的语义相关性,选择 Top-k 规则。
最终注入 Agent 的仍然是规则的自然语言版本:
r^(SYM) —检索→ r^(NL) —Prompt 注入→ Tool Agent
这一设计避免了规则库过大导致的上下文噪声,也使系统能够针对不同任务组合不同规则。
五、实验设计
论文使用 ToolHop 和 BFCL 两个工具调用基准。
ToolHop 主要包含需要多步推理和组合工具调用的问题。BFCL Live-Multiple 更关注从大量相似工具中选择正确工具;BFCL Multi-Turn-Base 则用于评估低资源、多轮工具任务。
数据划分如下:
| 数据集 | 训练集 | Test-rand | Test-unseen |
|---|---|---|---|
| ToolHop | 392 | 70 | 51 |
| BFCL Live-Multiple | 735 | 175 | 143 |
| BFCL Multi-Turn-Base | 90 | 60 | 50 |
其中:
- Test-rand 是随机同分布测试集;
- Test-unseen 包含训练阶段没有出现过的工具。
论文使用的主要基线包括零样本 ReAct、Few-shot 检索、SEE Prompt 优化、LoRA 监督微调以及 GPT-4o Function Calling 模型。
评价指标主要是工具任务准确率和最终规则数量。
5.1 规则生成与规则整合效果
在 Llama 3.2 上,RIMRULE 的主要结果如下:
| 数据集 | 原始模型 | 规则生成后 | 规则整合后 |
|---|---|---|---|
| ToolHop Test-rand | 26.5% | 27.6% | 31.1% |
| ToolHop Test-unseen | 35.1% | 42.1% | 43.1% |
| BFCL Test-rand | 50.1% | 54.8% | 56.6% |
| BFCL Test-unseen | 45.0% | 47.6% | 48.5% |
ToolHop 的规则数量从 72 条减少到 67 条,BFCL 的规则数量从 151 条减少到 121 条。
从结果可以看出,初始规则生成对未见工具具有较明显的提升。例如 ToolHop Test-unseen 从 35.1% 提高到 42.1%,说明规则能够捕捉一些跨工具复用的任务分解模式。
规则整合后,规则数量减少,但准确率继续提升。这说明删除重复或干扰性规则能够改善推理时的规则检索质量。
5.2 跨模型规则迁移
论文分别从 Llama 3.2 和 GPT-4o 的失败轨迹中学习规则,再将规则应用到其他模型。
例如,使用 Llama 3.2 学到的规则后:
- Llama 4 在 ToolHop 上从 73.8% 提升到 76.7%;
- O1 从 53.2% 提升到 57.4%;
- GPT-4o 在 BFCL 上从 71.6% 提升到 75.6%。
这说明不同模型可能共享某些结构性工具错误。即使强模型整体能力更高,也可能在复杂任务分解、工具语义区分或参数构造上犯与弱模型相似的错误。
不过,跨模型迁移并非始终产生正收益。例如,Llama 3.2 学到的规则应用到 GPT-4o 的 ToolHop 任务时,准确率从 58.1% 下降到 57.4%。
因此,更准确的结论是:规则具有较强的跨模型迁移潜力,但规则库与目标模型之间可能存在不匹配,需要额外的适用性验证和负迁移检测。
5.3 小样本、Prompt 方法与微调模型
在 BFCL Multi-Turn-Base 上,论文只使用 90 个训练样本,最终学习到 4 条规则。
结果显示:
55.2%→62.1%
对应随机测试集;
46.0%→60.0%
对应未见工具测试集。
这说明少量高价值规则也可能带来明显提升,尤其是在任务中存在重复错误结构时。
与 Prompt 方法相比,RIMRULE 同样表现更好。
在 ToolHop Test-unseen 上:
43.1% RIMRULE
高于:
37.9% Few-shot
以及:
35.9% SEE
这表明,抽象规则可能比直接检索原始示例更适合跨工具泛化。
RIMRULE 还能够与微调模型结合。例如,经过监督微调的 Llama 3.2 在 ToolHop Test-unseen 上从 38.5% 提升到 45.1%;加入原生 Function Calling 的 GPT-4o 后,ToolHop Test-unseen 从 83.0% 提升到 85.4%。
这说明显式规则与参数学习并不是完全替代关系。微调可以学习整体工具调用分布,而规则可以修复微调后仍然存在的局部系统性错误。
5.4 符号检索与 MDL 整合的作用
论文还比较了不同规则检索方式。
| 检索方式 | ToolHop | BFCL |
|---|---|---|
| 自然语言检索 | 29.4% | 54.1% |
| 符号引导检索 | 31.1% | 56.6% |
符号检索优于直接使用自然语言相似度,说明结构化字段有助于降低不同语言表达带来的匹配误差。
在规则整合方面:
| 整合方式 | ToolHop | BFCL |
|---|---|---|
| LLM Prompt 合并 | 27.5% | 52.1% |
| MDL 引导整合 | 31.1% | 56.6% |
直接让 LLM 合并相似规则,只能判断规则文本是否相似;MDL 引导方法还会考虑删除规则后 Agent 的实际行为变化,因此效果更好。
5.5 案例与规则类型
论文给出的代表性案例是查询某位人物外祖父名字的相关属性。
错误 Agent 试图直接调用工具查询“外祖父”,但工具只支持直接亲属关系,因此返回无数据。
RIMRULE 生成的规则要求:当问题包含复杂亲属关系时,应先查询中间人物,例如先获得母亲,再查询母亲的父亲。
附录还展示了其他类型的规则,例如:
- 用户明确提供参数值时,应优先使用用户值,而不是 Schema 默认值;
- 查询库存、尺寸或颜色可用性时,应选择库存工具,而不是普通商品详情工具;
- 工具名称必须与 Schema 中的名称完全一致;
- 执行具有前置条件的操作前,应先分解并验证所有依赖步骤;
- 进行货币转换时,应正确区分源货币与目标货币。
这些规则说明 RIMRULE 不只是学习某个工具的固定调用方式,而是在尝试归纳工具使用中的通用推理结构。
从实验结果来看,RIMRULE 证明了失败规则学习在工具 Agent 适应中具有实际价值。
在性能上,它提升了随机测试集和未见工具测试集的准确率,并优于 Few-shot 和全局 Prompt 优化方法。
在功能上,它将模型适应知识从参数中外化,使规则可以被查看、修改和跨模型复用。
但论文也存在一些局限。
依赖高质量失败反馈。 方法通常需要错误轨迹和正确轨迹。如果真实业务中无法获得 Ground-truth 执行过程,规则生成质量会受到影响。
规则可能过度泛化。 一条对某类失败有效的强制规则,可能干扰其他任务,甚至破坏模型原本正确的行为。
符号分类可能存在噪声。 论文附录中,一条通用的工具 Schema 校验规则被划分到 TRANSPORTATION 领域,说明符号标签仍然可能受到具体样本语境影响。
贪心整合不保证全局最优。 规则之间可能存在组合依赖,逐条删除或泛化无法发现所有更优组合。
MDL 公式存在退化风险。 当前数据项没有从目标函数上严格区分“全部纠正”和“完全不纠正”,方法的有效性依赖高性能初始化和局部搜索路径。
运行成本报告不足。 规则生成、规则验证、符号转换和候选规则库评估都需要额外模型或 Agent 调用,论文没有完整报告 Token 成本和端到端延迟。
六、对齐思考
RIMRULE 与食品配料比例反演研究之间具有较强的结构相似性。
食品配料推理同样存在大量系统性失败,例如:
- 估算比例违反配料递减顺序;
- 配料营养贡献无法解释营养成分表;
- 复合配料被错误地当作单一原料;
- 单位换算错误导致成本异常;
- 食品类别先验与估算结果冲突;
- 估算原料成本明显高于商品售价。
这些失败不应只被视为单个样本的错误,而可以被进一步抽象为可复用规则。
可以构建如下流程:
食品标签与价格输入 → 初始比例反演 → 约束与误差检查 → 失败原因分析 → 候选规则生成 → 规则验证与入库 → 新食品动态检索
具体来说,系统先输入配料表、营养成分表、食品类别、净含量、售价和原料价格,由优化模型生成初始配料比例、营养贡献和理论成本。
随后,验证模块检查:
- 配料比例之和是否为 100%;
- 配料排序是否满足非增约束;
- 推算营养值是否落在标签误差范围内;
- 能量与蛋白质、脂肪、碳水化合物之间是否基本一致;
- 理论原料成本是否具有市场合理性;
- 是否违反食品类别或法规约束。
对于失败案例,可以保存:
(x,τ⁻,τ*)
其中,τ⁻ 是错误反演过程,τ* 是经过人工校正或优化求解得到的合理结果。
LLM 比较二者后,可生成如下规则:
如果配料表声明按添加量递减排列,则估算比例必须满足 w_i≥ w_(i+1)。
如果某项配料属于复合配料,则不能将其全部比例直接归入某一种营养来源,应展开子配料或建立子配料区间变量。
如果估算出的蛋白质高于当前配料组合的理论上限,则应优先检查高蛋白原料比例、干物质口径和营养数据库来源。
如果理论原料成本显著高于零售价,则应检查单位换算、含水率、可食率、加工损耗和原料价格口径。
如果饮料类产品中估算水分比例过低,同时糖、蛋白质和脂肪无法解释剩余质量,则应提高水或基础液体配料的比例下界。
这些规则可以使用类似 RIMRULE 的双重表示:
FoodCategory, ConstraintType, TriggerPattern, CorrectionAction, Strength, EvidenceSource
例如:
food_category = FERMENTED_DAIRY
constraint_type = NUTRIENT_UPPER_BOUND
trigger_pattern = PROTEIN_EXCEEDS_THEORETICAL_MAX
correction_action = [
CHECK_HIGH_PROTEIN_INGREDIENT_RATIO,
CHECK_DRY_MATTER_BASIS,
VERIFY_NUTRIENT_SOURCE
]
strength = MANDATORY
evidence_source = NUTRITION_DATABASE
自然语言规则用于生成解释,符号规则用于检索、冲突检测、规则统计和后续优化。
不过,食品领域不能直接照搬 RIMRULE 的规则评价方式。因为食品配方通常缺少完全确定的 Ground-truth,同一张标签可能对应多组可行配方。因此,需要设计两级规则评价。
第一层是合理性验证:加入规则后,结果是否仍满足质量守恒、营养约束、配料顺序、法规要求和成本边界?
第二层是推理效用验证:加入规则后,营养误差是否下降、可行解空间是否缩小、结果是否更稳定、对留出食品的预测是否改善?
只有同时具有合理性和实际推理增益的规则,才应进入正式规则库。
此外,食品规则整合时不建议直接照搬论文当前的数据代价,而可以使用:
J(H)= α L(H) + β_F N_(unfixed) + β_C N_(broken)
其中:
N_(unfixed)表示仍未修复的失败样本;N_(broken)表示加入规则后被破坏的原正确样本;L(H)表示规则库复杂度。
这样不仅鼓励规则修复历史失败,还能防止新规则损害已有正确能力。
最终可以形成一个面向食品标签推理的自迭代闭环:
失败收集 → 根因分析 → 规则生成 → 约束验证 → 效果评估 → 规则入库 → 动态检索 → 新一轮反演
RIMRULE 对食品配料研究最重要的启发,是不要只积累具体食品样本,而要进一步积累能够跨品牌、跨配方和跨食品类别复用的推理规则。这样,系统的能力增长就不再完全依赖扩大训练数据或重新训练模型,而可以通过一个可解释、可审计和可持续更新的食品领域规则库逐步实现。