给 AI 装上「手」:会调工具,才算真开始干活
“先说结论,省得你往下划:会想只是前提,能动手,才谈得上生产力。
一个只会聊天的 AI,能力再强,也困在自己的知识边界里。它读过海量文本,能推理、能表达,却读不到你本地的文件,看不见此刻的实时信息,也做不了一次可靠的精确计算——因为大模型的本质是预测下一个词,而不是执行一次运算。
工具调用(function calling),就是把这堵墙拆开的那道口子。给 AI 接上工具,它才第一次能触及模型之外的真实世界:调用搜索、读写文件、运行代码、操作网页。业内把这种让模型输出锚定在真实数据上的做法叫接地(grounding),它也是压制模型幻觉(hallucination)最直接的手段。跨过这一步,AI 的角色才从陪你想变成替你做。这篇,专门拆这道口子是怎么打开的。

01一、没有工具,AI 的天花板在哪
你多半见过这样的画面:家里老人对着手机喊一声「豆包、豆包」,问它今天穿什么、让它用方言唠两句;小孩抱着平板,跟豆包没完没了地聊天、讲故事。这几乎是眼下最普及的 AI 用法——张口就问,它张口就答,连字都不用打。
可你留意一下,这种用法再顺手,骨子里还是一问一答:改文案、答疑、翻译、陪聊。模型要用的信息全靠你开口喂进去,产出也停在它这句回答里。不管你是打字还是语音,它始终是纯粹的文本进、文本出,不接触任何外部状态——它够不到你手机里那份表格,也没法替你把一件事从头跑到尾。
一旦任务牵扯到外部世界,天花板立刻显形。让它汇总你这个月的账目,数据在本地表格里,模型读不到;让它判断某个页面今天有没有降价,模型没有实时联网的入口;让它做一组多步计算,它给的数字很可能看起来对、其实错——这正是大模型最容易被误解的地方:它擅长语言,不擅长算术,一旦硬算,就会一本正经地报出错误答案。
这些瓶颈的根源是同一个:模型只能在自己的参数里检索,既无法主动获取新信息,也无法对外产生动作。补上这一课的唯一办法,是给它一套能与外部交互的工具。
02二、工具调用的机制:一次请求,一次回填
工具调用听着玄,机制其实相当清晰,核心是一个闭环。
第一步,你预先向模型声明可用的工具:每个工具叫什么、干什么、要哪些参数、返回什么格式——这份声明相当于一张工具说明书。这条路是一步步走出来的:2023 年年中,工具调用能力才头一回进了主流大模型的 API;后来各家各写各的接法、太乱,2024 年 11 月 Anthropic 拿出 MCP(Model Context Protocol,模型上下文协议),把工具怎么描述、怎么被接入这件事统一成一个标准,省得每接一个工具都重造一遍轮子,如今已被业界广泛采用。第二步,模型推理时若发现自己缺信息,它不硬编答案,而是输出一段结构化的调用请求,比如「调用搜索,参数:关键词=某某」。这段请求通常是一段贴着你预定义 JSON Schema 的 JSON,运行时能直接解析。这里得说句准的:普通的工具调用只是尽量贴合这个格式,偶尔也会漏字段、错类型;要想 100% 保证格式不出岔,还得再开一层更严格的模式(业内叫 strict 模式,靠约束解码强制符合)。另外要划重点:模型本身并不执行任何操作,它只负责提出请求。第三步,运行时(承载模型的那套系统)真正去执行这次搜索,把结果按约定格式回填给模型。第四步,模型拿到真实结果,接着往下推理。
这个请求、执行、回填、再继续的循环,就是一个 Agent 能干活的最小引擎。这套推理与行动交替推进的范式,学界和工业界给了它一个通用名字——ReAct(Reasoning + Acting):让模型一边推理、一边按需行动,再拿行动的真实结果去修正下一步推理。今天绝大多数 Agent 框架,底层跑的都是它的变体。
它带来的最大改变,是模型学会了一件事:承认自己不知道,然后去查。一个只凭记忆作答的模型并不可靠,它会用流畅的语言掩盖事实性的错误,这正是模型幻觉最危险的形态——错得理直气壮;一个会主动说这个我得查一下的模型,才具备落地的前提。工具调用装上的不只是能力,还有一种可核查性——它的每一步动作都留了痕、有据可查。

03三、从单工具到工具编排:判断力比工具更稀缺
真实任务很少靠一个工具解决,往往要多个工具接力;而决定每一步该用哪个工具的能力,才是 Agent 真正的分水岭。
以我发这篇文章的实际流程为例。系统全程几乎没让我动手:它先用搜索工具核验了文中几处事实表述,再逐段生成正文,接着调用生图工具产出配图,最后通过接口连上公众号后台,完成草稿创建和封面上传。我做的只有三件事——给目标、审阅、拍板。
真正的门槛不在于会用某个工具,而在于知道每一步该用哪个、按什么顺序。查证据时不会误去画图,排版时不会跑去执行代码——这种在多个工具之间做规划与调度的能力,业内称为工具编排(orchestration)。工具箱越大,编排的价值越高:工具本身可以采购,判断力不能。而且编排不只是排先后——如今主流模型还能在一轮里同时发起好几个工具调用,比如同时查天气、查日历,运行时并发跑完再一起回填,比一个个排队又快一层。这就像一位资深技师,值钱的从来不是他有多少把扳手,而是他一眼就能定位该用哪一把、哪几把能一起上。
落地时也不必贪多。可行的路径是:先给你最高频的那类任务接上一个工具,跑顺之后,再逐步扩展工具集。

04四、给 AI 装手,必须同时装上的三道工程约束
工具赋予 AI 行动力,也同时放大了它出错的后果。这里还得先泼盆冷水:别把工具当成幻觉的免死金牌。前面说接地能压制幻觉,但那是压制不是根除——工具本身要是返回了过时或错的数据(比如查了个内容本就错的网页),模型照样会有理有据地说错话。正因为工具不是万能的,下面三条工程底线,一条都不能省。
先说权限——最小化,高危动作留人工闸。这在安全工程里叫最小权限原则(least privilege):能读文件的工具,往往也能删文件;能发网络请求的工具,也能把数据发去错误的地址。所以每接入一个工具,都要划清它的权限边界——哪些操作可以自动执行,哪些必须先经人工确认(也就是业界说的人在回路,human-in-the-loop),哪些绝对禁止。让 AI 拥有行动力的前提,是先框定它最坏能造成多大的破坏。
再说报错——工具失败必须吼出来(fail-loud),严禁静默吞掉。搜索无结果、文件读取失败,工具都得如实返回一个明确的失败信号,而不是含糊地回传空值。因为下游的模型会默认没报错就是成功,一旦它拿着一个虚假的成功继续推理,错误就会顺着调用链不断放大。工程上最危险的从来不是故障本身,而是被静默掩盖的故障(fail-silent)。
最后,该调工具时就得强制调用,杜绝凭空作答。装了工具,就得保证它在该用的时候真被用上。当一个问题明显需要查询、计算或读取文件,绝不能纵容模型图省事、凭记忆给个答案。成熟的系统会用规则或提示把模型约束到工具上:属于事实和运算的部分,必须交给工具,而不是交给语言的流畅度。

装上工具,AI 才算真正跨出干活的第一步。但只有手还不够——受限于有限的上下文窗口(context window),它做完一件事就会遗忘,每次都要你从头交代来龙去脉,效率依旧有限。工具解决的是够得着,下一个要解决的是记得住。
下一篇,我拆第二块:如何为 AI 搭一套跨越对话的记忆系统,让它稳定地记住你是谁、要什么、以及过往踩过的坑。
如果你不满足于让 AI 停在对话,而是想让它真正承担起执行,欢迎继续跟着这个系列往下拆。

夜雨聆风