🦾 AI Agent 🟡 进阶 ⏱ 9 分钟

🎓 LLM 是怎么学会调用外部工具的

SFT 教会「怎么调」,RLHF 教会「该不该调」。运行时靠 Function Calling 落地。

1

原始 LLM 为什么不会调工具

📖 预训练只学「预测下一个词」

大模型在预训练阶段学的就是文字预测——给定前面的文字,预测下一个 token。

整个过程在文本空间里,模型从未见过「工具调用」这件事。

🎭 没训练过只会「说」

哪怕你 prompt 里写「你可以调用天气 API」,没经过专门训练的模型也只会输出自然语言描述:

「我需要调用天气 API 来回答你」

而不是可被程序解析的 JSON 调用请求。

工具调用能力不是天生的,是后天教出来的。靠两个阶段:

SFT 教会「怎么调」 + RLHF 教会「什么时候调」。

2

第一阶段:SFT,让模型「见过」工具调用

📋 监督微调:看示例学模仿

SFT(Supervised Fine-Tuning)思路很直接:给模型看大量正确的示例,让它学会模仿。

像培养新员工:先让他看几百份填好的工单,他就学会了「遇到这类问题怎么写、走哪个流程」。

🧩 一条完整训练样本

• System:工具说明书(有哪些工具、叫什么、能做什么、要什么参数)
• User:用户提问
• Assistant 调用:正确答案是结构化 JSON,不是自然语言
• Tool:模拟工具返回
• Assistant 最终回答:看到结果后的自然语言

🎬 一条训练样本长这样
System
你有工具 get_weather:查询指定城市实时天气,参数 city(城市名)
User
北京今天天气怎么样?
Assistant 调用
正确答案:{"tool_calls": [{"name": "get_weather", "arguments": {"city": "北京"}}]}
Tool
晴,15°C,东北风 3 级
Assistant 回答
北京今天天气晴朗,气温 15°C。

模型在几十万甚至上百万条这样的样本上反复训练,就学会了整套流程:识别工具定义、判断要不要调、输出格式规范的 JSON 请求。

训练数据来源:① 人工标注(成本高但质量好,做种子数据);② 用更强模型(如 GPT-4)自动批量生成再人工抽查(成本低、量大,业界主流)。

3

SFT 的短板:会调,但不知道「该不该调」

😅 过度积极调用

SFT 让模型学会了「调工具」这个动作,但不知道什么时候该调。

像刚培训完的新员工过于热情,有人问「1+1 等于几」他也要去查手册,明显多此一举。

⚖️ 为什么边界感弱

SFT 样本里「该调的场景」占绝大多数(毕竟就是要教它调),模型会过拟合这种积极调用倾向,没看过足够多的「不该调」反例。

训练信号只告诉它「这是正确答案」,没告诉它「不该调也是一种正确」。

这个问题要第二阶段的 RLHF 解决。

4

第二阶段:RLHF,用反馈建立边界感

👑 人类反馈强化学习

SFT 是让新员工看示例学规范,RLHF 是老板持续给他打分、帮他建立判断力。

🔢 四步流程

① 生成多样回答:同一问题生成几种处理(有的调工具、有的直接答、有的参数填错)
② 人类打分:评判哪种更合理
③ 训练奖励模型:用打分数据训练一个「会打分的裁判」
④ 强化学习优化:用奖励模型分数调主模型参数

🎬 边界感怎么建立
人类打分
「1+1 等于几」→ 直接回答最好(不该调工具)
人类打分
「北京天气怎么样」→ 调工具才对(需要实时数据)
奖励模型
从打分数据学会「这个回答人类会喜欢吗」
主模型
被奖励模型不断优化,学会微妙判断:能直接答就答,需实时/执行才调

RLAIF(AI Feedback)是 RLHF 的低成本变体——用另一个 AI 代替人类标注员打分,成本更低、速度更快,业界也很常用,效果和人工反馈相差不大。

⚠️ 注意:如果人类标注员标准不一致,奖励模型会学到歪的打分标准,主模型再怎么被优化也是歪的。

5

运行时:训练好之后怎么用

① 传 schema把工具定义给模型
➜
② 模型出 tool_calls输出 JSON 决策
➜
③ 代码执行调 API 拿数据
➜
④ 结果塞回挂回对话再问
➜
⑤ 模型总结自然语言回答
🔁 这套「模型输出结构化请求→代码执行→结果喂回」机制就是 Function Calling

关键认知:模型只负责「决策」,不负责「执行」。

模型在整个过程只做一件事——判断要调哪个工具、参数填什么,然后输出 JSON。真正跑函数、访问网络、查数据库的,是你的宿主程序代码。

这个分工很合理:LLM 擅长理解意图和推理,但不应有直接操作系统的权限;宿主程序负责执行,可做权限控制、参数校验、执行沙箱等安全措施。这是主流工具调用框架的核心设计原则。

一句话总结

LLM 的工具调用能力不是天生的,靠两个训练阶段:SFT 给模型看大量完整调用流程样本,学会「怎么调」(输出结构化 JSON);RLHF 用人类打分训练奖励模型再强化学习,建立「该不该调」的边界感。运行时靠 Function Calling 落地:模型输出 JSON 决策、宿主代码执行、结果喂回。核心:模型只决策不执行。

🎤 面试问答 · 口语化回答
这道题考察对工具调用底层训练机制的理解,面试官常深挖训练和运行时两层:
面试官LLM 是怎么学会调用外部工具的?
你

我分训练和运行时两块讲。训练靠两个阶段:SFT 监督微调,给模型喂大量完整的调用流程样本,就是 System 工具说明书、User 提问、Assistant 输出结构化 JSON 调用、Tool 返回、再 Assistant 总结这种,让模型学会模仿输出规范 JSON;RLHF 人类反馈强化学习,通过人类打分训练奖励模型,再用强化学习调主模型,让它建立边界感——能直接回答就别调工具。运行时就是 Function Calling:应用把工具 schema 给模型,模型判断要调就输出 tool_calls JSON,代码执行后结果塞回,模型再总结。

💡 加分点:一句话收尾很加分:SFT 教会怎么调,RLHF 教会该不该调,运行时靠 Function Calling 落地。
面试官为什么不能只靠 SFT?
你

因为 SFT 只解决「会不会调」,不解决「该不该调」。SFT 的样本里该调的场景占绝大多数,模型会过拟合这种积极调用的倾向,不知道什么时候不该调——就像刚培训完的新员工,问他一加一等于几他也去查手册。RLHF 才是建立边界感的关键,通过人类对多种处理方式的打分,训练奖励模型,再让主模型学会微妙判断:能直接回答就直接答,需要实时数据或执行操作才调。

💡 加分点:用「问 1+1 也去查手册」这个例子很生动,一下就能讲清 SFT 的边界感短板。
面试官RLAIF 是什么?
你

RLAIF 是 RLHF 的低成本变体,全称是 AI Feedback,用另一个 AI 模型代替人类标注员来打分。因为人工标注成本高、速度慢,用 AI 打分成本更低、速度更快,业界现在也很常用,效果和人工反馈相差不大。它同样用于训练奖励模型,让主模型建立工具调用的边界感。

💡 加分点:能主动补充 RLAIF 作为低成本替代方案,说明你关注工程落地而不只是懂概念。
📝 读完打卡 · 写下你的收获 读完了?来打卡吧
用一句话写下你从这篇学到的最大收获,检验自己是否真的懂了 👇
⏱ 00:00 🔥0分