小白也能懂!大模型工具调用能力从何而来?收藏学习路径!
大模型虽强,但并非天生会调用工具。本文解析了SFT(示范学习)、RLHF(强化学习)和蒸馏(能力迁移)三大阶段如何赋予大模型工具调用能力,并介绍了LoRA高效微调原理。通过学习,你将理解模型如何学会输出JSON格式调用请求,以及如何判断何时调用工具,从而更好地掌握大模型技术。
大模型工具调用能力是怎么来的
它怎么就"学会"了看到工具描述之后输出一段 JSON?
本文从预训练的局限出发,逐层拆解 SFT(教动作)、RLHF(教克制)和蒸馏(教迁移)如何赋予大模型工具调用能力,并延伸到 LoRA 高效微调的原理。
一、问题起源:原始大模型为什么不会调工具
这个问题是理解后面所有内容的前提。
大模型在预训练阶段做的事情本质上只有一件:给一段文本,预测下一个 token。它在互联网上几乎所有的公开文本上训练过——百科、新闻、论文、代码、论坛帖子……但整个训练过程都发生在纯文本的世界里。模型从来没有"操作过"任何外部系统,也从来没有见过"输出一段 JSON 触发一次 API 调用"这种行为模式。
类比:只读书不动手的人
一个人从小到大只读书、不动手。他读过无数本关于烹饪的书,知道"热锅凉油"四个字怎么写,但从来没有摸过锅铲。你突然把他扔进厨房,递给他一把铲子说"炒个菜",他是没法直接上手的——他对"炒菜"的认知还停留在文字描述层面,没有变成可以执行的动作模式。
原始大模型面对工具调用的处境一样。你在 System Prompt 里告诉它"你有一个查库存的工具",它能理解这句话的意思,甚至可能回复"好的,我来帮你查一下库存"——但它不会输出一段结构化的 JSON 调用请求,因为训练数据里从来没有这种格式的输出。
**结论:工具调用能力必须靠后天专门的训练来注入。 *
二、核心原理:三阶段训练的分工逻辑
| 阶段 | 核心比喻 | 学习方式 | 解决的问题 |
|---|---|---|---|
| SFT | 师傅带徒弟 | 看标准示范,依葫芦画瓢 | 学会技能(如输出 JSON 格式) |
| RLHF | 教练看比赛 | 尝试多种方案,根据反馈优化 | 学会判断(如该不该用工具) |
| 蒸馏 | 名师出高徒 | 模仿大模型输出,小模型继承能力 | 学会迁移(小模型也能调工具) |
2.1 SFT 阶段:从"文本预测"到"逻辑填空"
在预训练阶段,模型只知道"天气"后面可能接"很好"。但在 SFT 之后,它学到了一个新的隐性模式匹配:
- 输入: System(Tools: [A, B]) + User(Query)
- 输出概率分布: 指向 {“tool_calls”: …} 的概率被大幅拉高
关键点:此时模型学会的是**“条件映射”**。它把 System Prompt 里的 JSON Schema 当成了"填空题的模版",把用户问题当成了"题干"。
SFT 的一个关键短板
SFT 教会了模型"怎么调工具",但有一个明显的盲区:模型不太会判断"该不该调"。
训练数据绝大多数都是"需要调工具"的正样本——毕竟你要教模型学会调用,当然得给它看调用的示范。但副作用是:模型训练之后会变得过度热衷调工具。
你问"3×7 等于多少",它不去直接说 21,反而去调一个计算器。你问"太阳从哪边升起",它可能去调搜索引擎。这些问题它本来就知道答案,但因为训练数据里"调工具"这个动作得到了太多正向强化,模型形成了"有工具就调"的惯性。
这个问题,SFT 自己解决不了,需要第二阶段的 RLHF 来矫正。
2.2 RLHF 阶段:建立"调用成本"意识
SFT 容易让模型变"傻"。RLHF 的本质是给模型注入一套价值函数:
| 场景 | 模型行为 | 奖励得分 | 原因 |
|---|---|---|---|
| 问"1+1",模型调计算器 | 过度调用 | -5 | 浪费 Token,响应慢 |
| 问"1+1",直接回"2" | 简洁高效 | +5 | 正确且高效 |
| 问"深圳明天穿什么",模型查天气再回答 | 必要调用 | +10 | 必要且准确 |
三、详细解析:训练流程拆解
3.1 SFT:教模型"看示范、学动作"
SFT 全称 Supervised Fine-Tuning(监督微调)。类比到职场,就像新员工入职培训的第一周:师傅领着你,手把手演示流程——“遇到这种情况该填这个表,走这个审批”,看十遍二十遍,自然就学会了。
训练样本的五部分结构
每条训练样本是一个完整的多轮对话,至少包含五个部分:
┌──────────────────────────────────────────────────────────┐ │ Part 1: 系统消息 — 工具清单 │ │ 列出每个工具的名称、功能描述、参数定义(JSON Schema) │ │ → 相当于给模型发了一份"工具使用手册" │ ├──────────────────────────────────────────────────────────┤ │ Part 2: 用户提问 │ │ 例:"帮我查一下深圳明天会不会下雨" │ ├──────────────────────────────────────────────────────────┤ │ Part 3: 模型应输出的工具调用请求(JSON 格式) │ │ {"tool_calls": [{"name": "check_weather", │ │ "arguments": {"city": "深圳", "date": "明天"}}]} │ │ → 这就是模型需要学会输出的"标准答案" │ ├──────────────────────────────────────────────────────────┤ │ Part 4: 工具执行后的返回结果(训练时模拟) │ │ → "深圳明天:小雨转多云,22-28°C" │ ├──────────────────────────────────────────────────────────┤ │ Part 5: 模型拿到结果后的最终自然语言回答 │ │ → "深圳明天有小雨,建议带把伞,气温 22-28 度。" │ └──────────────────────────────────────────────────────────┘模型在几十万甚至上百万条这样的样本上训练,就能学会整套链路:
读懂工具说明 → 判断要不要调 → 选对工具 → 把参数填对 → 拿到结果后组织自然语言回答
训练数据从哪来?
| 渠道 | 方法 | 优势 | 劣势 |
|---|---|---|---|
| 人工标注 | 工程师构造问题+标准答案 | 质量最高 | 成本高,通常用于核心种子数据 |
| 强模型生成 | 用 GPT-4 等批量生成,人工抽检 | 效率高、成本低、可规模化 | 需要抽检把控质量 |
目前业界主流做法是强模型批量生成 + 人工抽检。
3.2 RLHF:教模型"什么时候该克制"
RLHF 全称 Reinforcement Learning from Human Feedback(基于人类反馈的强化学习)。如果 SFT 是新员工的入职培训,RLHF 就是他工作几个月后,主管根据实际表现给的持续反馈:这件事处理得好,加分;那件事过度操作了,减分。时间一长,他就知道了什么场景下该积极行动、什么场景下该保持克制。
RLHF 的四步流程
Step 1: 采样多种回答 面对"法国的首都是哪里",模型生成三种回答: A. 直接回答"巴黎" B. 调搜索工具查一下再回答 C. 调了工具但参数填错了 Step 2: 人类标注排序 A > B > C(直接回答最好,过度调用次之,调用出错最差) Step 3: 训练奖励模型(Reward Model) 不回答问题,只负责评估——预测"人类会不会喜欢这个回答" Step 4: 用奖励信号优化主模型 高分策略被强化,低分策略被削弱 → 模型形成精细判断力:常识直接答,需要实时数据才调工具趋势:业界也在用RLAIF(AI Feedback)替代人类标注——用另一个大模型充当"标注员"做偏好判断,成本更低、速度更快,效果与人工标注的差距越来越小。
四、运行时机制:决策与执行解耦
理解了训练过程,再看运行时的调用流程就清晰了。
4.1 运行时闭环流程
| 步骤 | 主体 | 动作 | 产物 |
|---|---|---|---|
| 1. 决策 | 模型 | 理解意图,生成指令 | tool_calls (JSON) |
| 2. 执行 | 应用代码 | 解析 JSON,发起网络请求 | tool_result (Raw Data) |
| 3. 整合 | 模型 | 结合原始问题 + 执行结果 | 自然语言答案 |
4.2 代码层面的直观感受
# 伪代码:Function Calling 的运行时闭环 import json # 第一轮:把工具定义和用户问题一起传给模型 response = llm.chat( messages=[{"role": "user", "content": "帮我查一下杭州明天的天气"}], tools=weather_tool_schema # 工具说明书 ) # 模型判断需要调工具,返回 tool_calls if response.finish_reason == "tool_calls": call = response.tool_calls[0] func_name = call.name # "get_weather" func_args = json.loads(call.arguments) # {"city": "杭州", "date": "明天"} # 你的代码去真正执行 result = execute_tool(func_name, func_args) # 第二轮:把执行结果喂回模型 messages.append(response.message) messages.append({"role": "tool", "tool_call_id": call.id, "content": result}) final = llm.chat(messages=messages, tools=weather_tool_schema) print(final.content) # "杭州明天多云,气温 18-25°C,适合出行。"核心要点:模型全程只做决策,不做执行。它只是输出一段 JSON 说"我要调 get_weather,参数是杭州和明天"。既没有访问网络,也没有调用任何 API。真正干活的是你写的
execute_tool函数。
4.3 "决策与执行分离"的设计意义
这个架构设计非常重要——它意味着你可以在执行层做权限控制、参数校验、沙箱隔离,而不用担心模型直接操作系统资源带来的安全风险。
五、延伸:LoRA —— SFT 的高效实现手段
LoRA 属于 SFT 阶段的一种高效实现手段,不属于 RLHF,也不属于预训练。
5.1 本质理解
LoRA 全称Low-Rank Adaptation(低秩自适应)。
把大模型比作一本十万页的字典(原始参数 WW),微调的过程就是要在字典上改动一些内容:
| 方法 | 类比 | 特点 |
|---|---|---|
| 全参数微调 | 把十万页全部复印一遍,在上面改几个字,再装订成一本新字典 | 费钱、费显存 |
| LoRA | 不改原字典,拿一张透明便签纸贴在相关页码上,只在便签上写改动内容,查字典时把原书内容和便签内容加在一起看 | 极其高效 |
5.2 数学直觉:为什么叫"低秩"?
大模型参数矩阵通常是极其巨大的(高维度),但研究发现,让模型学会某个特定任务,其实不需要改动所有参数——参数的变化落在一个很小的维度空间里。
LoRA 将巨大的参数增量矩阵 ΔW 分解为两个极小的矩阵相乘:
ΔW=A×B
原始矩阵:1000 × 1000 → 1,000,000 个参数 LoRA 分解:1000 × 8 和 8 × 1000 → 16,000 个参数 → 参数量减少了 60+ 倍! → 这就是为什么你在笔记本显卡上就能微调大模型的原因。5.3 LoRA 与 SFT/RLHF 的关系
虽然 LoRA 最常用于SFT阶段,但它其实是一个通用的"减负工具":
- 在 SFT 中: 用 LoRA 来教模型学会"工具调用"、“角色扮演"或"特定领域知识”。这是目前最主流的用法。
- 在 RLHF 中: RLHF 过程也需要训练模型(训练奖励模型或优化策略模型),为了省资源,同样可以使用 LoRA 来完成这些环节中的微调。
六、延伸:知识蒸馏——让小模型也能调工具
SFT 和 RLHF 把大模型训练好了,但大模型太贵太慢。能不能让小模型也拥有工具调用能力?这就是蒸馏要解决的问题。
6.1 为什么需要蒸馏
GPT-4 级别的大模型虽然工具调用能力出色,但部署成本极高——推理慢、显存大、API 贵。而实际业务中,大量场景可以用 7B、13B 的小模型来服务,只要它们也能"看懂工具描述、输出正确 JSON、判断该不该调"。
蒸馏的核心目标:把大模型的能力迁移到小模型上,用极低的成本获得接近大模型的效果。
6.2 蒸馏的本质:从"学知识"到"学行为"
普通 SFT 教小模型用的是"标准答案"——一条条人工构造的问题→JSON调用→回答。但蒸馏不同,它让小模型直接模仿大模型的行为输出。
类比到职场:
| 方式 | 类比 | 学到的东西 |
|---|---|---|
| SFT | 读教科书学标准答案 | 知道"该怎么做",但不够灵活 |
| 蒸馏 | 跟着资深员工看他怎么处理各种情况 | 学到"怎么灵活应对",包括大模型的推理思路 |
6.3 蒸馏的三种主要方法
方法一:输出蒸馏(Response-based)
最简单直接的方式。拿一大批问题,先让大模型(Teacher)生成完整回答(包括工具调用的 JSON),再用这些<问题, 大模型回答>对作为训练数据来教小模型(Student)。
Teacher (GPT-4): 问题 → [完整回答,含 tool_calls JSON] ↓ Student (7B): 同一问题 → 学习模仿 Teacher 的输出优点:实现简单,只需调用大模型 API 生成数据缺点:只能学到最终输出,学不到大模型的中间推理过程
方法二:Logits 蒸馏(Logit-based)
比输出蒸馏更精细。不仅让小模型学大模型的最终答案,还要学大模型对每个 token 的概率分布(即 logits 或 soft labels)。
Teacher: "深圳明天天气" → P(调工具)=0.85, P(直接答)=0.12, ... ↓ KL 散度对齐 Student: "深圳明天天气" → P(调工具)=0.72, P(直接答)=0.23, ...小模型的训练目标是同时优化:
- 硬标签损失: 和标准答案的交叉熵
- 软标签损失: 和大模型 logits 的 KL 散度
关键洞察:大模型的概率分布包含丰富的"暗知识"(Dark Knowledge)——比如它认为"调工具"概率 0.85、"直接回答"0.12,这个分布本身就包含了判断边界的精细信息,而不仅仅是"该调"或"不该调"的二选一。
优点:能学到更细粒度的判断能力,小模型效果更接近大模型缺点:需要访问大模型的 logits 输出(开源模型才行,API 通常不提供)
方法三:特征蒸馏(Feature-based)
最深层的方式。不仅对齐输出,还对齐大模型中间层的隐藏状态(hidden states)和注意力模式。
Teacher 第20层: [hidden_state = [0.12, -0.34, 0.56, ...]] ↓ 均方误差对齐 Student 第10层: [hidden_state = [0.09, -0.31, 0.48, ...]]优点:小模型能学到与大模型相似的内部表征,效果最好缺点:需要大模型和小模型的架构兼容,实现复杂度高
6.4 蒸馏在工具调用中的实战策略
业界做工具调用蒸馏的典型流程:
Step 1: 准备大量真实/合成的用户提问 ↓ Step 2: 用 Teacher 模型(如 GPT-4)生成完整回答 - 包含判断:该不该调工具 - 包含调用:tool_calls JSON - 包含整合:基于工具结果的自然语言回答 ↓ Step 3: 过滤低质量样本(格式错误、幻觉回答等) ↓ Step 4: 用这批数据对 Student 模型做 SFT ↓ Step 5: (可选)再对 Student 做 RLHF 微调,进一步优化 ↓ 结果:7B 小模型也能正确调用工具,推理成本降低 10+ 倍6.5 蒸馏 vs SFT 的关键区别
| 维度 | SFT(从零教) | 蒸馏(从大模型学) |
|---|---|---|
| 训练数据来源 | 人工标注 / 规则生成 | 大模型生成 |
| 数据质量 | 依赖标注质量 | 继承大模型的判断力 |
| 学到的内容 | 标准行为模式 | 大模型的推理+判断+边界感 |
| 成本 | 标注成本高 | API 调用成本(但可批量) |
| 效果上限 | 受限于标注数据的多样性 | 接近 Teacher 模型的水平 |
| 典型场景 | 训练初始能力 | 将能力迁移到小模型 |
实际组合:业界最佳实践是SFT(建立基础能力)→ RLHF(建立边界感)→ 蒸馏(迁移到小模型)三步组合。先用 SFT+RLHF 把大模型训练好,再通过蒸馏把能力迁移到部署友好的小模型上。
七、总结:完整的认知链条
会用 Function Calling 的人很多,但大多数人的认知链条是:
定义 tools → 调 API → 解析 tool_calls → 执行 → 返回结果
这条链条是运行时的操作流程,不涉及任何原理。面试官一追问"这个能力怎么来的",链条就断了。
真正理解原理的人,脑子里的链条更深一层:
预训练阶段模型不具备工具调用能力→SFT 阶段通过示范数据教会模型输出结构化调用请求→RLHF 阶段通过偏好反馈教会模型判断什么时候该调、什么时候不该调→蒸馏阶段将大模型的能力迁移到小模型→运行时模型只做决策,宿主代码做执行
三个常见翻车点
| # | 翻车点 | 正确理解 |
|---|---|---|
| 1 | 混淆 SFT 和 RLHF 的分工 | SFT 教的是"工具调用的完整行为模式"(识别描述→判断调用→生成 JSON→整合结果);RLHF 教的是"在什么场景下应该/不应该调用"——即调用的边界感 |
| 2 | 以为 Function Calling 是模型"自己去执行" | 模型不执行任何东西,它只输出一段 JSON 指令。真正发起 HTTP 请求、访问数据库、执行代码的,始终是应用程序 |
| 3 | 说不清训练数据怎么来的 | 核心种子数据靠人工标注保证质量,大规模数据靠更强的模型批量生成再人工抽检 |
| 4 | 混淆蒸馏和 SFT | SFT 是"从标准答案学",蒸馏是"从大模型的行为学";蒸馏能继承大模型的判断边界和推理思路,而不只是格式 |
加分项:如果你在面试里能加上实战经验——“我在项目里遇到过模型过度调工具的问题,后来在 Prompt 里加了明确的指导规则,让模型只在确实需要外部数据时才触发调用,误调率降了不少”——这种补充会让面试官觉得你不是在背概念。
附:SFT vs RLHF vs 蒸馏 速查表
| 维度 | SFT | RLHF | 蒸馏 |
|---|---|---|---|
| 全称 | Supervised Fine-Tuning | Reinforcement Learning from Human Feedback | Knowledge Distillation |
| 中文 | 监督微调 | 基于人类反馈的强化学习 | 知识蒸馏 |
| 核心逻辑 | 准备"问题-答案"对,手把手教模型怎么回答 | 让人类对多个输出排序/打分,模型根据反馈调整参数 | 让小模型模仿大模型的输出/概率分布 |
| 在工具调用中 | 学会输出格式(结构化 JSON) | 学会判断边界(什么时候该调用) | 学会能力迁移(小模型也能调工具) |
| 训练数据 | 人工标注 + 强模型生成 | 人类偏好排序 / AI 偏好排序 | 大模型的输出 / logits / 特征 |
| 核心损失 | 交叉熵(与标准答案) | PPO 奖励最大化 | KL 散度 / 均方误差(与 Teacher 对齐) |
| 局限 | 容易过度调用工具 | 依赖偏好数据质量 | 受 Teacher 能力上限约束 |
| 高效实现 | LoRA | LoRA(训练奖励模型时) | 逐层蒸馏 / 渐进式蒸馏 |
| 典型应用 | 建立初始能力 | 建立判断边界感 | 将能力迁移到小模型 |
最后
对于正在迷茫择业、想转行提升,或是刚入门的程序员、编程小白来说,有一个问题几乎人人都在问:未来10年,什么领域的职业发展潜力最大?
答案只有一个:人工智能(尤其是大模型方向)
当下,人工智能行业正处于爆发式增长期,其中大模型相关岗位更是供不应求,薪资待遇直接拉满——字节跳动作为AI领域的头部玩家,给硕士毕业的优质AI人才(含大模型相关方向)开出的月基础工资高达5万—6万元;即便是非“人才计划”的普通应聘者,月基础工资也能稳定在4万元左右。
再看阿里、腾讯两大互联网大厂,非“人才计划”的AI相关岗位应聘者,月基础工资也约有3万元,远超其他行业同资历岗位的薪资水平,对于程序员、小白来说,无疑是绝佳的转型和提升赛道。
对于想入局大模型、抢占未来10年行业红利的程序员和小白来说,现在正是最好的学习时机:行业缺口大、大厂需求旺、薪资天花板高,只要找准学习方向,稳步提升技能,就能轻松摆脱“低薪困境”,抓住AI时代的职业机遇。
如果你还不知道从何开始,我自己整理一套全网最全最细的大模型零基础教程,我也是一路自学走过来的,很清楚小白前期学习的痛楚,你要是没有方向还没有好的资源,根本学不到东西!
下面是我整理的大模型学习资源,希望能帮到你。
👇👇扫码免费领取全部内容👇👇
1、大模型学习路线
2、从0到进阶大模型学习视频教程
从入门到进阶这里都有,跟着老师学习事半功倍。
3、 入门必看大模型学习书籍&文档.pdf(书面上的技术书籍确实太多了,这些是我精选出来的,还有很多不在图里)
4、AI大模型最新行业报告
2026最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5、面试试题/经验
【大厂 AI 岗位面经分享(107 道)】
【AI 大模型面试真题(102 道)】
【LLMs 面试真题(97 道)】
6、大模型项目实战&配套源码
适用人群
四阶段学习规划(共90天,可落地执行)
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
硬件选型
带你了解全球大模型
使用国产大模型服务
搭建 OpenAI 代理
热身:基于阿里云 PAI 部署 Stable Diffusion
在本地计算机运行大模型
大模型的私有化部署
基于 vLLM 部署大模型
案例:如何优雅地在阿里云私有部署开源大模型
部署一套开源 LLM 项目
内容安全
互联网信息服务算法备案
…
👇👇扫码免费领取全部内容👇👇
3、这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
