从“方程扩列”到让大模型“动手”:一堂课吃透工具调用(Tool Calling)
导语:课上老师一开口就抖了个有趣的口语梗——“方程扩列”。先别慌,这不是高数补习,而是Function Calling(函数/工具调用)的音译“后遗症”。从只会“动嘴”聊天,到能“动手”帮你点奶茶、查天气、发邮件,大模型到底是怎么跨过这道鸿沟的?这篇文章把课堂上的核心逻辑、工作流程乃至零碎知识点,尽量完整地梳理给你。
一、什么是工具调用?三个关键角色的“铁三角”
1.1 定义:给大模型装上“手”
老师给了一个非常接地气的定义:工具调用,就是让大模型学会使用工具。
在没有工具调用之前,大模型基本停留在“你说一句,我回一句”的文本对话里。而工具调用赋子了它真正的“动手能力”——它可以帮你点奶茶(比如来一杯棒打鲜橙)、发邮件、查天气,甚至调起浏览器去联网检索。本质上,这是把大模型从“纯语言交互”推向了“实际行动”。
1.2 核心逻辑:大模型是“大脑”,不是“手”
别看名字里带了“调用”二字,大模型并不会真的自己去执行那些操作。老师反复强调,这里必须厘清三个关键点,它们构成了工具调用的铁三角:
| 角色 | 职责 | 课堂原话/举例 |
|---|---|---|
| 决策主体 | 接收请求,分析意图,决定“要不要调、调哪个” | 大模型本身负责“识别请求本质”,核心是做决策 |
| 输出形式 | 只输出一段结构化指令(通常是 JSON),里面包含函数名和参数 | 例如输出get_weather,参数city=北京, unit=摄氏度 |
| 执行主体 | 真正跑工具、调 API 的是外部系统 | 豆瓣程序调用豆瓣 API、BBC 网站调用 BBC 系统、LangChain 框架、豆包或 DVC 卡等业务后台 |
也就是说,大模型收到用户请求后,关键动作是“识别”与“决策”。它本质是在判断用户的真实意图,然后“喊一嗓子”——生成一段 JSON 指令告诉外部系统去干活。大模型只输出指令,绝不直接触碰真实的工具或 API。
二、完整工作流程:闭环里的四次接力(本节课核心重点)
这是整节课展开最细、老师也要求我们必须掌握细节的部分。工具调用不是“一步直达”,而是一个严密的闭环系统,可以拆解成四个步骤:
Step 1:输入与注册(工具先“上牌”)
当你向一个网页或 APP 发起请求时,背后的应用程序已经预先给大模型注册了一张“可用工具列表”,就像给工具上了车牌:天气查询、计算器、浏览器、邮件发送……应有尽有。
老师画了一个顶层流程概览:
- 用户把问题抛给大模型;
- 大模型先去匹配已注册的工具列表;
- 如果“无牌可查”(没有对应工具),它就老老实实回复“不知道”或无法回答;
- 如果匹配成功,才由应用程序代为查询,进入下一步。
Step 2:意图识别与指令生成(大模型“做决策”)
这里发生了第一次核心交互。业务系统会同时发送两包数据给大模型:
- 当前可用工具列表(浏览器、计算器、墨迹天气等);
- 用户的具体问题(例如:“北京天气如何?需要穿外套吗?”)。
大模型发挥自己的强项——语义分析,判断:“这是在问天气,我这里有get_weather这个工具!”于是它输出一段结构化指令:
// 课上老师举的精确例子{"function":"get_weather","parameters":{"city":"北京","unit":"摄氏度"}}到这一步,大模型的工作已经结束了——它只负责输出这段 JSON,绝不亲自去天气服务器抓数据。
Step 3:外部执行(业务系统“跑腿”)
接下来轮到应用程序/业务系统干活。以老师提到的 “DVC 卡” 网站或豆包后端系统为例,程序解析这段 JSON,然后亲自去调用外部 API——比如请求墨迹天气的接口。
此时外部服务返回的是原始 JSON 数据,里面充斥着引号、冒号、嵌套字段,根本不适合直接丢给用户看。
Step 4:结果加工与返回(二次加工的“魔法”)
这是最容易被忽略、但老师特别强调的一步:“加法”与二次加工。
系统不会直接把墨迹天气的原始 JSON 甩给你。它先做了一个“加法”——把外部返回的原始结果,和用户的历史会话(比如之前问的“北京目前的天气情况”)重新揉在一起,再送回给大模型进行第二轮加工。
这时候,大模型扮演的是“专业天气播报员”(或对应场景的专业角色)。它把冰冷的12℃润色成流畅的自然语言:
“北京目前气温12摄氏度,建议您可以穿一件薄外套。”
你会发现,同样是“12摄氏度”,经过二次加工后,专业度和体验感完全不同。第一次是决策,第二次是润色,两轮大模型参与,才构成了完整的用户体验闭环。
三、为什么非要工具调用不可?三大“止痛片”
老师用很直白的语言解释了引入工具调用的必要性,对应大模型的三大先天短板:
痛点 1:信息过时——“我的知识只到去年6月”
大模型的训练数据存在明确的截止时间。老师课上调侃:“你问它现在 9 月的天气,它会告诉你‘我的数据只到 6 月’。”
怎么办?只能靠联网搜索或调用实时 API(浏览器、天气接口)去抓最新数据,才能补上信息滞后这块短板。
痛点 2:数学与精确逻辑——“概率预测的魔咒”
大模型是基于概率预测“下一个字”的,这天生就不适合做精确数学运算。老师现场做了一个“翻车”演示:某道复杂计算题,大模型未经搜索直接给出了一个答案(课与精确结果差异甚远)。你让它“心算”多位数乘法,它极有可能给你一个看起来合理、实则偏差很大的数值。
解决方案不是逼大模型硬算,而是让它生成Python 或 Java 代码,交给代码解释器去跑。就像使用豆包这类产品时,遇到复杂数学题,它背后其实是先写一段 Python 代码,打印出精确结果,再呈现给你。这样就把“语言模型”和“精确计算”解耦了,避免模型自己推算导致数值错误。
痛点 3:缺乏行动力——“只会说话,不会下单”
这是最本质的局限。原生大模型只能进行文本输入输出,它不知道门店在哪,也不会下单。老师举了一个非常生活化的例子:点奶茶。如果你想点一杯“棒打鲜橙”,模型自己是摸不到奶茶店的。
但借助 API,大模型就能连接真实世界的业务系统。老师提到,曾有平台在 APP 刚上线做活动时,全国人民在上面点奶茶,背后正是大模型接入了大量下单、定位、支付 API,把“对话能力”真正转化成了“业务行动力”。
四、术语演变:从 Function Calling 到 Tool Calling
课上还梳理了一个很容易混淆的概念变迁,老师建议我们把它拎清楚:
2023 年 6 月,OpenAI 最早推出的是 “Function Calling”。
这个名称非常“研发视角”:开发者一听就知道是在调用具体函数——扫描本地文件、写代码、查天气、发邮件,本质上都是跑一段函数。2023 年底至 2024 年左右,逐渐演变为 “Tool Use / Tool Calling(工具调用)”。
当技术走向大众和商业客户时,说“你的模型具备调用工具的能力”比“具备调用函数的能力”直观得多。客户不需要懂代码,但需要知道模型能“动手干活”。
当前共识:在研发圈子里,大家通常把两者视为同一类能力;严格意义上讲,Tool Use 的范畴包含 Function Calling。而在产品宣传和通用场景中,“工具调用”已经成了更主流的表述。无论是豆包、DVC 卡还是其他平台,底层遵循的都是这套统一的标准格式。
五、课堂零碎知识点拾遗
除了上面四大板块,老师还散落了不少“小知识点”,我也一并打包记在这里,方便回头查阅:
- “出口链”:老师把工具调用形容为大模型的出口链,意味着它是模型能力向外延伸的关键通道。
- 程序图上的四方角色:完整的系统里有前端界面、业务系统(应用程序)、部署在机房 GPU 上的模型本体,以及外部 API 服务方(如墨迹天气)。
- 角色化播报:二次加工时,大模型不仅在“翻译”JSON,更是在扮演特定角色(如专业天气播报员),让回复更贴合真实场景。
- 注册表机制:大模型脑子里不是空的,应用程序会先把“我有哪些工具”这张清单提前给它,这叫工具注册。
- 历史会话的“加法”:二次加工时不是单看 API 返回,而是把用户原来的问话历史和返回结果相加,再输入模型加工。
写在最后
一堂课听下来,我对大模型工具调用的认知从“好像就是调个 API”变成了“决策 → 指令 → 执行 → 润色”的完整闭环。
大模型还是那个大模型,它依然不直接碰奶茶铺、不直接碰天气服务器。但正是通过输出一段 JSON 结构化指令这个看似简单的动作,它成功地把自身体系和外部万千 API 无缝焊接在了一起。
如果说之前的 AI 只有头脑,那工具调用就是帮它把四肢整理好的过程。从“函数调用”到“工具调用”,变的不仅是名字,更是我们对 AI 边界的一次重新理解。期待下一节课,继续探索那些更深层的协议与突破点。