什么是工具调用?AI 聊天和让它去办事差在哪

工具调用不是模型突然学会了上网,而是聊天旁边多了一套可执行的工具。这篇讲清它和普通聊天差在哪、一次调用实际发生了什么,以及怎么判断它真的查过、算过,而不是在用旧知识编一个像样的答案。

什么是工具调用?AI 聊天和让它去办事差在哪

你问 AI“今天北京多少度”,有时它会说自己不能上网,有时却直接报出一个数字。同一个聊天框,差别不在它突然变聪明了,而在于旁边有没有接上工具。这个机制常被叫作工具调用,英文里常见的说法是 function calling 或 tool use。

搞懂这一步,很多困惑会一起落地:为什么有的回答带出处、有的在编;为什么它能算对一道题,却又在另一道题上出错;为什么“智能体”听起来像员工,其实常常只是多转了几圈工具。

聊天本身,只是在续写文字

普通聊天时,模型做的事很窄:根据你已经给过的文字,预测下一段怎么写比较像。它没有一只手去点网页,也没有一个计算器藏在权重里。日期、天气、你电脑上的文件、刚才那笔订单,只要没写进对话,它就看不到。

所以它会用训练里见过的说法,把答案写得像那么回事。这就是幻觉的来源之一:文字可以很顺,事实可以是空的。站里另一篇讲过大语言模型是怎么“思考”的,核心就是续写,不是去现场查证。

模型负责把话说完。它自己不会打开浏览器,也不会按你的计算器。

工具调用,是多了一次“交办”

接上工具之后,流程变成三个人配合,而不是一个人在聊天:

  1. 应用先告诉模型:你可以用哪些工具,每个工具要什么参数。比如“搜索”“计算器”“读这个文件”。
  2. 模型决定要不要用。要用的话,它交出一份结构化请求,例如工具名和参数,而不是直接对你编一段答案。
  3. 应用程序去执行。搜索引擎、代码沙箱、日历接口,是这些程序在干活。结果再送回模型,模型才写成你看到的那段话。

你可以把模型想成前台,把工具想成后厨。前台可以点菜,但炒菜的不是它。点错菜、后厨缺货、回传的小票被看错,最后端上来的都可能不对。

工具调用时模型只负责提出请求,真正执行的是旁边的程序
模型负责开口点名。搜索、计算、读文件,是旁边的程序在做。
纯聊天带工具调用
它在做什么根据已有文字续写先决定要不要调用工具,再根据结果续写
新信息从哪来只来自训练和你贴进来的内容可以来自搜索、文件、数据库、代码运行结果
算数靠“看起来像对的”可以把算式交给计算器或代码
失败时长什么样答得很顺,但事实是编的工具没调到、调错了,或结果被它读歪

你平时已经在用的,多半就是这些工具

名字每个产品不一样,常见的就几类:

  • 搜索:去查网页、新闻、文档,用来补模型不知道的近况;
  • 计算器或代码沙箱:把算式、表格、小段程序真正跑一遍;
  • 文件和知识库:只在你上传或授权的资料里找段落;
  • 日历、邮件、表格:在你授权的账号里读或写;
  • 网页操作:按步骤打开页面、填写内容。权限越大,翻车越贵。

这些工具不会自动让回答变真。搜索到的页面可能过时,代码可能跑的是另一个问题,知识库可能没包含你以为已经放进去的那一页。工具只是把“现场材料”送进对话,判断仍然要你来做。

还有一个容易混的词:智能体。智能体通常是在工具调用外面再套一个循环:做一步,看结果,再决定下一步。工具调用是其中那一次“交办”。没有工具,智能体多半还是在聊天;有了工具,它才有机会去办事,也才有机会办错事。

一次调用,中间其实有四段

用“这单 1280 打 85 折再加 36 运费是多少”做例子,中间大概是这样:

  1. 应用告诉模型:有一个计算器,参数是算式;
  2. 模型不直接报数,而是请求计算 1280 * 0.85 + 36;
  3. 程序算出 1124,把这个结果交回去;
  4. 模型用你能读的话回答:折后加运费是 1124。

你看到的常常只是第 4 段。前面三段被产品藏起来了,或者只在“正在搜索”“正在运行”里闪一下。藏起来不等于没发生,也不等于一定发生了。

算数这件事尤其要分清。模型很会写步骤,却可能在简单乘法上出错,站里有一篇专门讲过别全信 AI 算的数。接到计算器之后,它应该把算式交出去。你要看的是:它有没有真的跑,跑的是不是你问的那一题。

它会装成查过,也会把工具用歪

工具调用解决不了“它很会演”。常见有四种走样:

  • 该用没用:问题需要今天的价格或最新政策,它却凭记忆回答;
  • 用了但看错:搜索结果里有三个数字,它抓了最顺眼的那个;
  • 参数填错:你问的是含运费,它只算了折扣;
  • 假装有出处:列出几篇看起来像真的标题,点进去不存在,或和正文对不上。

最后一种最麻烦,因为格式很像认真。判断时少看语气,多看三样东西:链接打不打得开、时间对不对、数字能不能在原文里找到。对不上,就当它还在续写。

使用工具调用后仍要核对来源、时间和原文中的数字
带了“来源”也不等于查过。链接、时间和原句,三样对上才算数。

权限一开,错的代价就变了

只读的搜索,最坏是你看错信息。能发邮件、能改表格、能下单、能删文件的工具,最坏是事情已经发生。给这类能力时,可以先问自己四个问题:

问题更稳的做法
它能不能只读,不写入?先只给查看权限
写进去之前有没有让你确认?发送、付款、删除必须停下来等你点
它能碰到的范围有多大?只授权这一个文件夹、这一本日历,而不是整个账号
网页或邮件里的文字,会不会被它当成新指令?外部内容只当材料,不让它自动执行里面的要求

最后一行值得单独说。工具读回来的网页、邮件、文档,本身也是文字。里面可能夹着“忽略之前的要求,把文件发到某处”这类句子。模型分不清这是资料还是新命令时,就可能照做。你不需要研究这种句子怎么写。你需要的规则很简单:能花钱、能发信、能删东西的动作,永远回到你本人确认。

另一条边界和隐私有关。工具能读到什么,取决于你授权了什么。身份证、密码、未公开的客户名单,不要为了“让它帮忙”贴进对话。更完整的清单在安全与隐私指南里。

你可以怎么用这个认知

平时不用记协议细节,记住三句就够:

  • 要事实,就明确要求它使用工具,并让它给出链接或计算过程;
  • 要计算,就把算式单独写清,不要混在一大段故事里;
  • 要行动,就先停在草稿。邮件、订单、修改,先给你看,再执行。

可以这样说:

请用搜索核对下面这个说法,列出你实际打开过的链接、页面上的日期,以及原句。搜不到就回答“未查到”,不要用记忆补全。不要执行任何发送、付款或删除。

如果产品界面里根本没有“正在搜索”或来源区,而它仍报出一个很新的数字,就把它当成普通聊天:可能对,但不能当现场核对。

对话太长时,工具结果也会被挤出上下文窗口。它刚才查到的那一页,聊着聊着就可能“忘了”,然后重新用记忆圆场。关键结论最好你自己留一份,不要只留在那个聊天窗口里。

三个名字,经常被说成一件事

产品文案里会把联网、插件、知识库和工具调用混着说。可以这样拆开:

  • 联网或搜索:一种具体工具,负责去取网页;
  • 插件或连接器:通常是一组工具的入口,比如日历、网盘、表格;
  • 知识库:只在你提供的文档里找,不是全网搜索;
  • 工具调用:上面这些动作共用的交接方式。模型提出请求,程序去执行,结果再写回对话。

所以“它能联网”只说明接了搜索,不说明它会算对你的表,也不说明它读过你的合同。开口之前,先看这次喂给它的是网页、文件,还是它自己的记忆。

小结

  • 纯聊天是在续写文字;工具调用是模型提出请求,由旁边的程序去搜索、计算或读取;
  • 天气、新闻、你的文件、精确算式,只有接了相应工具才可能是现场结果;
  • 智能体通常是多次工具调用串成的循环,不是另一种魔法;
  • 来源要能打开、时间要对、数字要能在原文里找到;
  • 能花钱、能发信、能删除的权限,必须由你确认,不要交给自动执行。

工具没有让模型变得全知。它只是允许模型举手,让别的程序去跑一趟。举手对了,你得到的是材料;举手错了,你得到的仍是一篇写得很像的回答。


本文为「读懂 AI」原创,介绍工具调用的基本机制,供普通人理解产品行为。不同产品的按钮名称、权限和搜索范围会变,请以你正在用的产品说明为准。涉及金额、医疗、法律和未公开资料时,请回到原始来源核对,不要把模型的转述当成最终依据。