Hammer: Robust Function-Calling for On-Device Language Models via Function Masking
研究问题
在真实场景中,函数名和参数名往往简短、带有个人命名风格,而且同名函数在不同系统里可能对应不同语义。模型如果过度依赖这些紧凑名称,就会出现两类典型错误:
- 函数选择错误:看到熟悉的函数名就优先匹配,即使实际功能并不一致。
- 参数填充错误:沿用训练中学到的旧参数用法,而忽略当前任务里的参数描述。
论文进一步指出,函数调用还有一个常被忽略的问题:当候选函数里根本不存在正确工具时,模型也需要学会输出空列表而不是强行调用。
技术方案
1. Function Masking:训练时主动削弱命名线索
Hammer 的训练框架通过遮蔽候选函数中的显式名称信息,让模型被迫阅读描述字段:
- 将候选函数名替换为随机字符串,降低模型对函数名模式的记忆依赖。
- 将参数名也替换为随机字符串,迫使模型依据参数描述理解参数用途。
- 将默认参数值随机化,并附加到参数描述中,继续把注意力推向描述文本。
- 同步更新训练标签中的函数名和参数名,保证监督信号与遮蔽后的候选列表一致。
这套做法的目标很明确:让模型在训练时更关注“函数做什么、参数怎么用”,而不是“它叫什么名字”。
2. Irrelevance-Augmented Dataset:专门训练“不要乱调用”
模型在函数选择任务上变强时,可能反而更不愿意承认“当前没有合适函数”。为了解决这一点,Hammer 在原始 xlam-function-calling-60k 数据上构造了一个增强集:
- 从原训练集采样 7,500 条样本。
- 故意把正确函数从候选列表里删掉。
- 将标签改为空列表。
这相当于把“相关性拒识”单独做成训练目标,使模型在没有合适工具时更可能选择 abstain,而不是输出错误调用。
实验与结果
BFCL 排名
BFCL 结果显示,Hammer-7B 的整体准确率为 83.92,仅次于三个 GPT-4 变体,高于 GPT-4-turbo-2024-04-09 的 83.89 和 GPT-4o-mini-2024-07-18 的 83.35。这说明一个 7B 级别的开源模型,在函数调用任务上已经逼近顶级闭源模型。
跨 benchmark 泛化
本文在 API-Bank、ToolAlpaca、Seal-Tools、Nexus、Raven 等多组学术 benchmark 上比较不同模型,强调 Hammer 的优势不只是单点成绩,而是跨数据集更稳定:
Hammer-7B的Func.+Args平均 F1 为76.21。- 同规模的
xLAM-7B-fc为67.65。 - 更大的
Granite-20B-FunctionCalling为72.56。
这与论文的问题设定一致:Hammer 不是只追求某个榜单最优,而是追求跨命名风格、跨 benchmark 的稳健泛化。
细粒度分析
在 BFCL 的细分任务中,本文指出 Hammer-7B 在更贴近真实使用的 Executable Function Evaluation 上甚至超过 GPT-4;在更复杂的并行多函数调用任务上,函数遮蔽训练的优势更明显。论文据此认为,任务越复杂,模型越需要真正理解函数描述,而不是依赖短名字进行模式匹配。
消融结论
- 遮蔽比例过大,会拖慢同任务场景下的学习速度。
- 但更高的遮蔽比例有助于跨场景泛化,说明函数遮蔽确实在抑制训练集命名模式上的过拟合。
- 无关函数增强数据的占比与调用能力之间存在权衡。
- 在当前实验设置下,增强数据占比约
10%时整体效果最好,这也是他们将增强集规模定为7.5k的依据。
与相关文档的对照理解
结合仓库里另外 3 篇相近文档,可以更清楚地看出 Hammer 的定位:
HammerBench指出,移动助手场景中的多轮函数调用错误里,参数名错误是重要失败来源。Hammer 则把“命名误导”直接上升为训练目标,两者在问题定义上高度一致。MobileUse处理的是移动 GUI 代理的长程执行、反思与恢复能力。Hammer 解决的是更底层的工具调用鲁棒性,因此更像代理系统中的“调用层能力模块”,而不是完整代理框架。KnowU-Bench表明真实个人助理系统的瓶颈并不只在 GUI 操作,还在偏好获取、干预时机和同意机制。Hammer 能提升“调用是否正确”,但不能替代“是否该调用、何时该询问用户”的上层决策能力。
可复用启发
这篇论文对工具使用类代理系统有几个可迁移的方法论价值:
- 当 schema 中存在大量人为命名差异时,应优先训练模型理解描述字段,而不是强化对名称模式的记忆。
- “没有可用工具时拒绝调用”应被视为独立能力,而不是函数选择能力的自然副产物。
- 评估函数调用模型时,不能只看单一 benchmark;跨 benchmark 稳定性更能反映真实可部署性。
- 对端侧或小模型而言,结构化训练策略可能比单纯扩大参数规模更有效。
局限与边界
- 本笔记主要依据 arXiv 摘要页与 HTML 正文整理,未补读 PDF 附录中的全部实验细节。
- 文中可以确认 Hammer 提供了训练框架、增强数据集和 1.5B/4B/7B 模型,但部署开销、推理延迟、端侧资源占用等工程细节在当前材料中未系统展开。
- 论文证明了函数调用鲁棒性提升,但并未解决完整 agent 系统中的规划、记忆、偏好建模与安全授权问题。
结论
Hammer 的关键价值,在于把函数调用错误中的“命名诱导偏差”明确建模,并用函数遮蔽加无关函数增强数据两个简单而直接的机制,提升小到中等规模模型的跨场景泛化能力。若目标是构建可部署的端侧工具调用模型,这篇工作提供了一个比“继续堆数据和参数”更有针对性的训练思路。
来源:[[Hammer_ Robust Function-Calling for On-Device Language Models via Function Masking]]