什么是工具调用?AI 聊天和让它去办事差在哪
工具调用不是模型突然学会了上网,而是聊天旁边多了一套可执行的工具。这篇讲清它和普通聊天差在哪、一次调用实际发生了什么,以及怎么判断它真的查过、算过,而不是在用旧知识编一个像样的答案。
你问 AI“今天北京多少度”,有时它会说自己不能上网,有时却直接报出一个数字。同一个聊天框,差别不在它突然变聪明了,而在于旁边有没有接上工具。这个机制常被叫作工具调用,英文里常见的说法是 function calling 或 tool use。
搞懂这一步,很多困惑会一起落地:为什么有的回答带出处、有的在编;为什么它能算对一道题,却又在另一道题上出错;为什么“智能体”听起来像员工,其实常常只是多转了几圈工具。
聊天本身,只是在续写文字
普通聊天时,模型做的事很窄:根据你已经给过的文字,预测下一段怎么写比较像。它没有一只手去点网页,也没有一个计算器藏在权重里。日期、天气、你电脑上的文件、刚才那笔订单,只要没写进对话,它就看不到。
所以它会用训练里见过的说法,把答案写得像那么回事。这就是幻觉的来源之一:文字可以很顺,事实可以是空的。站里另一篇讲过大语言模型是怎么“思考”的,核心就是续写,不是去现场查证。
模型负责把话说完。它自己不会打开浏览器,也不会按你的计算器。
工具调用,是多了一次“交办”
接上工具之后,流程变成三个人配合,而不是一个人在聊天:
- 应用先告诉模型:你可以用哪些工具,每个工具要什么参数。比如“搜索”“计算器”“读这个文件”。
- 模型决定要不要用。要用的话,它交出一份结构化请求,例如工具名和参数,而不是直接对你编一段答案。
- 应用程序去执行。搜索引擎、代码沙箱、日历接口,是这些程序在干活。结果再送回模型,模型才写成你看到的那段话。
你可以把模型想成前台,把工具想成后厨。前台可以点菜,但炒菜的不是它。点错菜、后厨缺货、回传的小票被看错,最后端上来的都可能不对。

| 纯聊天 | 带工具调用 | |
|---|---|---|
| 它在做什么 | 根据已有文字续写 | 先决定要不要调用工具,再根据结果续写 |
| 新信息从哪来 | 只来自训练和你贴进来的内容 | 可以来自搜索、文件、数据库、代码运行结果 |
| 算数 | 靠“看起来像对的” | 可以把算式交给计算器或代码 |
| 失败时长什么样 | 答得很顺,但事实是编的 | 工具没调到、调错了,或结果被它读歪 |
你平时已经在用的,多半就是这些工具
名字每个产品不一样,常见的就几类:
- 搜索:去查网页、新闻、文档,用来补模型不知道的近况;
- 计算器或代码沙箱:把算式、表格、小段程序真正跑一遍;
- 文件和知识库:只在你上传或授权的资料里找段落;
- 日历、邮件、表格:在你授权的账号里读或写;
- 网页操作:按步骤打开页面、填写内容。权限越大,翻车越贵。
这些工具不会自动让回答变真。搜索到的页面可能过时,代码可能跑的是另一个问题,知识库可能没包含你以为已经放进去的那一页。工具只是把“现场材料”送进对话,判断仍然要你来做。
还有一个容易混的词:智能体。智能体通常是在工具调用外面再套一个循环:做一步,看结果,再决定下一步。工具调用是其中那一次“交办”。没有工具,智能体多半还是在聊天;有了工具,它才有机会去办事,也才有机会办错事。
一次调用,中间其实有四段
用“这单 1280 打 85 折再加 36 运费是多少”做例子,中间大概是这样:
- 应用告诉模型:有一个计算器,参数是算式;
- 模型不直接报数,而是请求计算
1280 * 0.85 + 36; - 程序算出 1124,把这个结果交回去;
- 模型用你能读的话回答:折后加运费是 1124。
你看到的常常只是第 4 段。前面三段被产品藏起来了,或者只在“正在搜索”“正在运行”里闪一下。藏起来不等于没发生,也不等于一定发生了。
算数这件事尤其要分清。模型很会写步骤,却可能在简单乘法上出错,站里有一篇专门讲过别全信 AI 算的数。接到计算器之后,它应该把算式交出去。你要看的是:它有没有真的跑,跑的是不是你问的那一题。
它会装成查过,也会把工具用歪
工具调用解决不了“它很会演”。常见有四种走样:
- 该用没用:问题需要今天的价格或最新政策,它却凭记忆回答;
- 用了但看错:搜索结果里有三个数字,它抓了最顺眼的那个;
- 参数填错:你问的是含运费,它只算了折扣;
- 假装有出处:列出几篇看起来像真的标题,点进去不存在,或和正文对不上。
最后一种最麻烦,因为格式很像认真。判断时少看语气,多看三样东西:链接打不打得开、时间对不对、数字能不能在原文里找到。对不上,就当它还在续写。

权限一开,错的代价就变了
只读的搜索,最坏是你看错信息。能发邮件、能改表格、能下单、能删文件的工具,最坏是事情已经发生。给这类能力时,可以先问自己四个问题:
| 问题 | 更稳的做法 |
|---|---|
| 它能不能只读,不写入? | 先只给查看权限 |
| 写进去之前有没有让你确认? | 发送、付款、删除必须停下来等你点 |
| 它能碰到的范围有多大? | 只授权这一个文件夹、这一本日历,而不是整个账号 |
| 网页或邮件里的文字,会不会被它当成新指令? | 外部内容只当材料,不让它自动执行里面的要求 |
最后一行值得单独说。工具读回来的网页、邮件、文档,本身也是文字。里面可能夹着“忽略之前的要求,把文件发到某处”这类句子。模型分不清这是资料还是新命令时,就可能照做。你不需要研究这种句子怎么写。你需要的规则很简单:能花钱、能发信、能删东西的动作,永远回到你本人确认。
另一条边界和隐私有关。工具能读到什么,取决于你授权了什么。身份证、密码、未公开的客户名单,不要为了“让它帮忙”贴进对话。更完整的清单在安全与隐私指南里。
你可以怎么用这个认知
平时不用记协议细节,记住三句就够:
- 要事实,就明确要求它使用工具,并让它给出链接或计算过程;
- 要计算,就把算式单独写清,不要混在一大段故事里;
- 要行动,就先停在草稿。邮件、订单、修改,先给你看,再执行。
可以这样说:
请用搜索核对下面这个说法,列出你实际打开过的链接、页面上的日期,以及原句。搜不到就回答“未查到”,不要用记忆补全。不要执行任何发送、付款或删除。
如果产品界面里根本没有“正在搜索”或来源区,而它仍报出一个很新的数字,就把它当成普通聊天:可能对,但不能当现场核对。
对话太长时,工具结果也会被挤出上下文窗口。它刚才查到的那一页,聊着聊着就可能“忘了”,然后重新用记忆圆场。关键结论最好你自己留一份,不要只留在那个聊天窗口里。
三个名字,经常被说成一件事
产品文案里会把联网、插件、知识库和工具调用混着说。可以这样拆开:
- 联网或搜索:一种具体工具,负责去取网页;
- 插件或连接器:通常是一组工具的入口,比如日历、网盘、表格;
- 知识库:只在你提供的文档里找,不是全网搜索;
- 工具调用:上面这些动作共用的交接方式。模型提出请求,程序去执行,结果再写回对话。
所以“它能联网”只说明接了搜索,不说明它会算对你的表,也不说明它读过你的合同。开口之前,先看这次喂给它的是网页、文件,还是它自己的记忆。
小结
- 纯聊天是在续写文字;工具调用是模型提出请求,由旁边的程序去搜索、计算或读取;
- 天气、新闻、你的文件、精确算式,只有接了相应工具才可能是现场结果;
- 智能体通常是多次工具调用串成的循环,不是另一种魔法;
- 来源要能打开、时间要对、数字要能在原文里找到;
- 能花钱、能发信、能删除的权限,必须由你确认,不要交给自动执行。
工具没有让模型变得全知。它只是允许模型举手,让别的程序去跑一趟。举手对了,你得到的是材料;举手错了,你得到的仍是一篇写得很像的回答。
本文为「读懂 AI」原创,介绍工具调用的基本机制,供普通人理解产品行为。不同产品的按钮名称、权限和搜索范围会变,请以你正在用的产品说明为准。涉及金额、医疗、法律和未公开资料时,请回到原始来源核对,不要把模型的转述当成最终依据。