Learn AI · 模型硬功底(由内而外)
第 22 课 / 经典论文 P21  ·  阶段五:检索与 Agent(收官 · Schick et al., 2023)

Toolformer:
模型自己学会「该在哪调工具」
——function calling 的由来(全课收官 🎉)

上一课 ReAct 教你用 prompt 编排工具调用的循环。但还剩一问:模型怎么自己学会——该在哪个位置、用什么参数调哪个工具——而且不靠海量人工标注「这里该调」? 这一课 Toolformer 给出一个漂亮的自监督答案:让模型在文本里到处试着插 API 调用,只保留那些「插了结果能让它把后面的词预测得更准」的调用,再拿这些去微调。 它回答 agent 时代最底层的一问,也为整门课收尾:「调用工具」是怎么从一个 prompt 技巧,变成模型原生的本事(function calling)的?
一句话:Toolformer 让模型用「自己的训练目标」当筛子,自监督地学会调工具。
四步:① 在文本各处试插候选 API 调用 → ② 执行拿到结果 → ③ 筛选:只留下「插入结果后,能让模型把接下来的词预测得更准(loss 下降)」的调用 → ④ 拿这些增强文本微调
妙在第 ③ 步:「这个工具调用有没有用」= 「它有没有降低预测 loss」——复用模型自己的「猜下一个词」当判据,无需人工标注、可规模化这就是 function calling 成为模型原生能力的根:模型成了一个「推理内核」,用工具把自己扩展到冻结权重之外。

一、立靶:模型不擅长的事,它会硬编而不是「去查」

有些事工具天生比模型强:精确算术、最新事实、精确查询、日期计算、生僻翻译。模型遇到这些,常常不调工具、直接凭权重里的模糊记忆硬编(幻觉)。

立靶:怎么让模型「自己」学会该在哪伸手拿工具?

ReAct 用 prompt 当场教模型走「想-做-看」循环——但那是推理时的编排,没把能力训进模型。 要把工具调用变成模型的原生本事,得训练;可「在每个该调工具的位置都人工标注」贵到不可行。 Toolformer 的赌注:能不能让模型自己判断「哪里调工具有用」,自监督地生成训练数据?

二、抽框架:自监督四步,让模型自学调工具

做什么
① 试插给定一段文本,用几个示例引导模型,在各种位置提出「这里也许该调某 API(带某参数)」的候选
② 执行把候选 API 调用真的跑一遍,拿到结果(计算器算出值、搜索返回事实…)
③ 筛选(核心)判据:把结果插进去,能不能让模型对「后面的词」预测得更准?能(loss 下降)→ 有用,保留;不能 → 丢弃
④ 微调拿通过筛选的「带 API 调用的文本」去微调模型——它就把「在有用处调工具」学进了权重
核心:用「降不降 loss」当「有没有用」的自动判据

最妙的一步是 ③。怎么判断一个工具调用「值不值得」?Toolformer 说:看它有没有帮模型把后续文本预测得更准。 比如文本「…通过率是 ___%」,插入 [计算器(400/1400)→28.6] 后,模型对「28.6%」的预测笃定了(loss 暴降)→ 这次调用有用,留下;若插在无关处、对后文预测没帮助 → 丢掉它复用了模型自己的训练目标(猜下一个词)当筛子——所以全程自监督、不用人标。

三、核心洞察:自监督、烤进权重、推理内核

三个洞察,第一个是方法之妙,后两个把整个 agent 阶段串成一句话。

洞察说明
① 「有用」= 「降 loss」,自监督不用人去标「这里该调工具」,而是让模型用自己的预测误差来评判每个候选调用值不值——把「猜下一个词」这个老目标,变成了「工具有没有用」的免费、可规模化的判据
② 工具能力烤进权重(vs ReAct 靠 prompt)ReAct推理时用 prompt 编排;Toolformer 在训练时把「何时/如何调工具」学进权重。这就是 function calling 成为模型原生能力的路径。
③ 模型 = 推理内核,工具 = 它的延伸模型负责推理与编排,把自己不擅长/权重里没有的事(算术、最新事实、动作)外包给工具——用工具把能力扩展到冻结权重之外

四、动手玩:一个候选调用,为什么被保留 / 被丢弃

看 Toolformer 的「筛选」怎么工作。同一句话,点三种情况,看「降不降 loss」如何决定一个 API 调用的去留。

文本:这场考试 1400 人参加、400 人通过,通过率是 ___%。
选情况: 

看出门道了吗:筛选不看「人觉得该不该调」,只看「调了之后模型预测后文准不准」。有用的调用(降 loss)被留下、拿去微调,模型于是学会了「在会算错的地方,自己伸手拿计算器」——而不是硬编一个数。

五、对照表(一):ReAct vs Toolformer

维度ReAct(P20)Toolformer(P21)
工具能力怎么来prompt 当场编排(想-做-看循环)自监督训进权重
作用时机推理时训练时(之后推理就会用)
要训练吗不要要(但数据自监督生成)
解决的问题用工具的推理循环长啥样模型怎么学会该在哪/怎么调工具
今天的样子合流:模型被训得会调工具(Toolformer 精神)+ 在 ReAct 式循环里用

六、对照表(二):工具把模型扩展到「权重之外」

模型不擅长 / 权重里没有外包给哪个工具
精确算术计算器
最新 / 私有事实搜索 / 检索(RAG)
当前日期 / 时间推算日历
生僻语言翻译翻译 API
改变世界的动作各种 API / 执行器

🔮 这正是整个阶段五的母题:模型的权重是冻结且有限的,于是想办法把它「扩展出去」——RAG检索扩展知识、ReAct循环扩展行动、Toolformer 用自监督训练把调工具变成原生本事。三者合起来,就是一个现代 agent 的完整底座:一个推理内核 + 一圈它会自己调用的工具。

七、映射到你的项目

你工作里的东西其实就是这篇论文的什么
你用的模型「会 function calling就是 Toolformer 精神的产品化:模型被训得能在合适处吐出工具调用——这能力的由来在这篇
你给 agent 挂哪些工具、在哪挂判据正是 Toolformer 的筛选逻辑:在「模型会瞎猜/会算错/会过时」的地方提供工具;一个不减少不确定性的工具就是噪声
你的语音客服 / 对话 agent 整体架构推理内核 + 工具延伸:模型管理对话与推理,把查知识库、算价格、查日程等外包给工具——别让它硬编它该去查的东西
「工具越多越好吗」不是:工具多了模型选择困难、易选错。按 Toolformer 的精神——只挂「确实能降低模型出错」的工具,且描述要让模型分得清何时用哪个
更通用:模型不会算数 / 不知道今天几号别指望 prompt 教会它算——那是工具的活。判断「这事该靠模型还是靠工具」,是 agent 设计的核心功夫

八、检索练习(关掉上文,凭记忆答)

1. Toolformer 怎么判断一个工具调用「值得保留」?
2. ReAct 和 Toolformer 的根本区别?
3. Toolformer 方法最妙的地方是?

九、常见问题 FAQ

把这一课接到你真实工作上的几个关键问。点开看答。

我用现成的 function-calling 模型,还需要懂 Toolformer 吗?

你不用自己训,但它的判据直接指导你「怎么挂工具」。Toolformer 的核心是「工具在能降低模型不确定性的地方才有价值」——翻译成你的实操:① 在模型会瞎猜的地方挂工具(算术、实时数据、私有事实、动作),它本来就擅长的别硬塞工具;② 工具描述要让模型分得清何时该用(参数、用途写清楚),这相当于帮它复现 Toolformer 学到的「调用时机」判断。

一句话:你不训练模型选工具,但你设计的「工具集 + 描述」就是模型当场判断的依据——挂得准不准,直接决定 function calling 灵不灵。

工具是不是越多越好?挂一堆 API 给 agent 会怎样?

不是,常常更糟。工具一多:① 模型选择困难、易选错(相似工具尤其);② 每个工具的描述都占上下文,挤压有效空间、增延迟;③ 调试与失败面变大。Toolformer 的精神恰恰是「只留有用的」(降 loss 才保留)。

实操:挂最小够用的工具集;相似功能合并;用清晰、互斥的描述帮模型区分;工具多到一定程度,考虑分层/路由(先让模型选一个工具类别,再在类别内选具体的)。少而准 > 多而杂——和你做 RAG 「精度 ≥ 召回」是同一种克制。

Toolformer / RAG / ReAct 三者到底怎么分工?一句话理清
解决什么一句话
RAG知识不够把对的知识检索进上下文
ReAct怎么用工具的循环想-做-看,编排多步工具调用
Toolformer模型怎么学会调工具自监督把调工具的本事训进权重

合起来:Toolformer 让模型调工具(含 RAG 的检索也是一种工具)→ ReAct 提供怎么循环着调的骨架 → 你的 agent 就跑起来了。它们不是竞品,是一套栈的不同层。

本课主源

读原典:Schick et al. — Toolformer: Language Models Can Teach Themselves to Use Tools(2023)

配套回看:ReAct(工具循环) + RAG(检索也是一种工具)——三篇合起来就是你 agent 的完整底座。

🎉 全课收官:21 篇经典论文,全通关

你从「一个 token 怎么被吐出来」,一路读到「一个 agent 怎么自己调工具」。回望五个阶段,每一阶段回答了一个根本问题:

阶段回答的问题关键论文
一 · 地基模型怎么算(注意力/Transformer 怎么来的)Attention / NMT / seq2seq / word2vec
二 · 预训练范式能力怎么长出来(预训练→涌现→ICL)BERT / GPT-1/2/3 / T5
三 · 规模与效率怎么又强又便宜(量化→修配比→省微调/注意力/激活)Scaling / Chinchilla / LoRA / FlashAttn / MoE
四 · 对齐与推理怎么让它听话 + 会想RLHF / CoT / DPO / Constitutional AI
五 · 检索与 Agent怎么把它扩展到权重之外、变成 agentRAG / ReAct / Toolformer

Mission 回看:你现在能在白纸上画 self-attention、能说清一篇新模型改了哪、能判断「这做不了/这很贵」的真假、能把 agent 输出不稳定拆到具体机制——「由内而外的物理直觉」,到手了。

下一步建议:① 关掉 AI,默写最该练的两处——self-attention(P01)RLHF 三步(P15);② 挑 2-3 篇做真实项目复盘(你的 RAG 知识库、语音 agent、LLM 评分器各对应哪几课);③ 想继续深挖可加读选读地基(AlexNet/ResNet/Adam…)或前沿新作。

我是你的老师,随时提问。 比如:「我想把 21 篇连成一张「现代 LLM 全景图」,怎么画?」「想验收自己学得怎样,给我出一套综合默写题?」 「我的某个真实项目(RAG 知识库/语音 agent/LLM 评分器),用这门课的框架该怎么重新审视?」——通关了,但学习不止于此。

参考:
Schick et al., Toolformer: Language Models Can Teach Themselves to Use Tools, 2023.