Skip to content
AgentSteamer ARTICLES / WIKI
AllArticlesKnowledge Base场景 Main site

LLM大模型Token输出与工具调用真相

Last updated: September 21, 2026
模釜 · AgentSteamer 关于 LLM 大模型 Token 输出与调用真相的文章配图
· 上海临境绘谷信息科技有限公司

我印象最深的一次,是给一家客户做上线前的验收。

演示一路顺畅,直到业务同事随口问了一句:“帮我看下上个月华东区的库存。”屏幕上,智能体回了一句“好的,我这就帮您查一下”,然后,就没有然后了。那句话停在屏幕上,数字一个都没出来。

会议室里所有人都在等一个解释。而这个解释其实特别基础,基础到我们平时都懒得讲:大模型本身没有手。它唯一会做的事,是一个字一个字地往外吐。

那次之后我想明白一件事:很多关于大模型的困惑、误解、还有不切实际的期待,根子都落在两个问题上。它是怎么“说话”的,以及它所谓的“动手”到底是怎么回事。

这篇只讲这两件事。至于智能体怎么拆解任务、怎么分工、怎么被管住,后面会有专门一篇,这里不展开。

一分钟速览

  • 大模型只做一件事:预测下一个 token(词元,模型处理文字的最小单位)。 它不是一个想好整段话再输出的系统,而是一台不停接龙的机器。
  • 你看到的“逐字打字机效果”不是前端动画,而是模型的真实工作节奏。它真的就是一个词一个词往外蹦的。
  • 模型不能调用工具。 所谓工具调用,是模型输出了一段格式特殊的文字,由模型外面的程序读懂之后去执行。模型只是写了张纸条,真正动手的是门外的另一个人。
  • 这个区别不是文字游戏。它决定了权限、隔离、审计这些企业最在意的事情到底该做在哪一层,也决定了为什么模型会一本正经地说“我已经帮您查到了”。
  • 模釜(AgentSteamer) 是上海临境绘谷信息科技有限公司研发的企业级 AI 智能体平台,支持完整私有化部署,且不绑定特定大模型。

一、模型干的活只有一件:猜下一个词

先把它拆到最简单。

你给它一句“今天天气真”,它输出一个“好”。你把“今天天气真好”再递回去,它输出一个“,”。如此往复,直到它输出一个表示“我说完了”的特殊符号。

就这么个过程。译文、代码、法律意见书、安慰人的话,全都是这么一句一句接出来的。业界管这叫自回归生成,名字听着唬人,意思就是“拿自己刚才的输出当下一轮的输入”。

这里有个东西必须先解释清楚,就是 token(词元)。

模型不认识汉字,也不认识字母。它认识的是一串编号。所以文字要先被切碎、翻译成编号,模型处理完再翻译回文字。切出来的每一小块,就叫一个 token。

你可以把它理解成给一篇文章断句,只是断得比人更细、更机械。中文里一个汉字可能是一个 token,也可能两个汉字合起来才算一个,取决于这个模型的分词表怎么定的。英文同理,“understand” 可能是三个 token,也可能是两个。这件事有一个很实际的后果:同一个意思,用不同语言说,花的 token 数不一样,所以成本也不一样。

那模型是怎么“猜”的?

不是查字典。更接近的比喻是一屋子人举手投票。给定前文,模型会给词表里每一个可能的词打一个分数,分数越高的越有可能被选中,然后它按这个分数去抽签。

温度(temperature) 这个参数管的就是抽签的尺度。温度调低,它基本只挑分数最高的那个,说话四平八稳;温度调高,冷门选项也有机会上桌,文字就更活,也更飘。同一颗模型,温度不同,气质就不同。

这解释了一个被问得最多的问题:为什么同一个问题问两遍,答案不一样? 因为它本来就不是在检索唯一答案,是在抽签。

它没有“先想好再写”,它是“边写边想”

这句话是理解后面所有内容的前提。

模型吐出一个词,这个词立刻变成下一轮的输入。也就是说,它写第二句话的时候,是把第一句话当成既定事实来读的。

后果有两个,都很重要。

第一个,它不能回头改前文。已经吐出去的词,就像已经说出口的话,收不回来。所以它一旦开头跑偏,后面只会顺着偏下去,越偏越远。

第二个,它的“思考”和“输出”是同一个过程。人在写东西的时候,脑子里先有个大致框架,再落笔;模型没有这个框架,它就是靠“下一个词”一步步把框架长出来的。这也是为什么让它先把推理过程写出来,答案的正确率通常会变高,那些过程本身就成了它后面要读的前文。

顺便说清楚:幻觉是怎么来的

很多科普把幻觉说成“模型在编”,这个说法不太准,容易让人以为是态度问题。

幻觉的机制特别朴素:它每一步都在做同一件事,就是让下一个词看起来最合理。 它优化的是“像不像”,不是“对不对”。这两个目标在绝大多数时候是一致的,但在它不掌握事实的地方就会分叉。

打个比方。一个语感极好、从没去过现场的人,能凭经验写出一份格式漂亮、术语准确、数据详实的调研报告。他不是存心造假,他只是在把“一份合格的报告应该长什么样”复现出来。


二、Token 在工程上意味着三件事

理解了 token 是计量的颗粒,很多产品设计上的选择就都说得通了。

第一,它是计价单位。 计费按 token 走,不按次数走,像出租车打表按里程不按趟数。同一件事,用中文说和用英文说,贵贱可能不一样;让它长篇大论还是直接给结论,成本也差得远。

第二,它划定了模型一次能看见的范围。 这个上限叫上下文窗口(context window)。你输入的、它输出的、工具返回的、知识库检索到的,全都要挤进这块地方。

把它想成一张工作台。台面就这么大,所有材料都得摆上来它才看得见。模型并没有“记忆”,每一轮它都是重新把整张台面读一遍。

第三,台面满了就得清东西。 常见做法是丢最早的,或者按重要性丢。所以你问它“我刚才说的第三条要求是什么”,它答不上来,很可能不是它不听话,是那条已经被清出去了。

(还有一个和成本直接相关的机制叫提示缓存(Prompt Caching):每轮都重复出现的部分,比如一段很长的系统提示,系统会把已经算过的结果记在小本子上,下轮直接翻本子,不重算。省时间,也省钱。)

知道这三点之后,有个现象就好理解了:很多“模型变笨了”的抱怨,其实不是模型的问题,是上下文被撑爆了。


三、这套本领是怎么练出来的

模型能猜词,靠的不是天生的,是三段训练堆出来的。

第一段叫预训练。 拿海量文本让它反复做一件事:遮住一个词,猜是什么。做上亿次。这一段的产出不是知识,是语感,一种对“话该怎么接”的直觉。读过的东西越多,直觉越准。

第二段叫指令微调。 光会接话还不够,还得会听话。这一段是拿大量“问题加理想回答”的样例去教它:别人提要求的时候,你应该怎么回应。从“会说话”变成“会答话”。

第三段叫对齐。 教它什么时候该拒绝、哪些话不该说、什么语气更合适。你可以理解成入职培训,业务能力是前两段给的,这一段给的是行为规范。

这三段有一个共同点,值得单独拎出来:它们训练的全都是“输出什么样的文字”。 没有哪一段是在教它查数据库、连接口、开文件。一个字都没有。

这为下一节埋下了最关键的那个前提。


四、模型没有手:工具调用的真相

到这里可以回答开头那个死机的场景了。

第一步,它只有一个出口。

模型对外输出的东西只有一种形态:文字流。没有第二条通道,没有“执行”这个动作,也没有任何一根手指能碰到你的系统。

第二步,工具清单是喂给它的,不是它自带的。

在对话开始之前,调用方会往输入里塞一段说明:你能用哪些工具、每个工具是干什么的、要填哪些参数、参数是什么格式。有时还会附上几个使用示例。

这就相当于给新员工递了一本菜单。菜单上没有的菜,他点不出来;菜单上写得含糊的,他就只能瞎猜。

第三步,它决定用工具的时候,输出的还是文字。

注意,这里是最容易搞混的地方。它不是在“调用”,它是在按格式写一份申请单。

假设要查库存,它吐出来的大致是这样一段:

第一个词是表示“我要用工具了”的标记,紧接着是工具的名字,比如“查库存”,再往后是参数,比如“货号 A-1024,仓库 华东”。

这段文字不像人话,因为它本来就是给程序读的,业界一般用 JSON 这种格式。对模型来说,写出这段东西和写出“今天天气真好”是同一件事:猜下一个 token。

第四步,真正执行的是模型外面的程序。

这段文字被外面的程序接住、解析,程序去连数据库、调接口、拿结果。

第五步,结果再被喂回去。

查询结果被重新写进模型的输入。它读到了“库存 320 件”,才有依据接着说下一句:“上个月华东区库存是 320 件,其中 A-1024 剩余 46 件。”

第六步,循环。

如果还要再查一个数,它就再写一张申请单。写单子 → 执行 → 把结果塞回去 → 再写单子,这个循环是所有智能体的心跳。至于这个循环由谁编排、什么时候该停下问人,那是下一篇的内容。

用一个画面把这六步串起来:

模型像一个坐在没有窗户的房间里的顾问。它跟外界的全部通信,只有门缝里递进递出的纸条。它能读字、能写字,别的什么都不会。门外那个跑腿的助理,才是真正动手的人。

这个区别为什么值得单独讲一节

因为它不是一个实现细节,它决定了四件很实际的事。

它没法“擅自”做事。 每一个真实动作,都必须经过门外那个程序。所以“放不放行”这件事可以卡在门外:权限、审批、隔离环境、执行记录,全都装在这一层。模型再聪明也绕不过去,因为它压根就没在那扇门外面。

它会“假装”自己用过了工具。 因为它写“申请单”的能力,和它写“查询结果”的能力,是同一个能力。它完全可能写出一段格式正确、但门外没人接的单子,然后自己接下去写:“已经帮您查到了,库存是 320 件。”

开头会议室里发生的就是这件事。它不是撒谎,它是把过程和结果一起编圆了。

工具描述写得好不好,直接决定它选得对不对。 菜单上写“其他”,服务员就只能瞎猜。这也是为什么给模型写工具说明是一件需要认真对待的活,不是随便填个名字就完事。

参数是猜出来的,不是读出来的。 日期格式、编号大小写、单位这些细节,经常错。所以现在不少系统会强制它按格子填,而不是给一张白纸让它自由发挥。这个做法叫结构化输出,本质就是给它一张带格子的表格。


五、三个可以自己动手验证的现象

道理讲完,给几个能当场试的判断方法,比记住结论有用。

一、看它吐字的速度是不是均匀的。 如果均匀得像动画,多半是前端在做假效果;真正的流式输出(SSE,把生成过程实时推给前端)速度是有起伏的,因为每一轮预测的难度不一样。

二、问它一个必须查数的问题,然后看过程。 好的系统会把中间步骤摊开给你看:它先说了什么、决定调哪个工具、参数是什么、工具返回了什么。如果它只给你一个最终答案,中间什么都不露,那你没法判断这个数字是真查到的,还是它猜的。

三、换个说法问同一件事。 挑一个措辞稍有不同的问法再问一遍。如果它调的工具、填的参数变化很大,说明工具描述写得不够明确,它在靠猜。


六、几个常见误会

“它输出得忽快忽慢,是不是网络卡了?”

多数时候不是。它是一轮一轮预测的,每轮的难度不一样,快慢自然不匀。

“上下文窗口那么大,是不是可以把一整本书塞进去?”

塞是塞得进去,但代价是钱和时间。而且有个现象叫“中间迷失”:材料堆得太多的时候,开头和结尾它记得比较牢,夹在中间的那部分容易被忽略。就像桌上压了太厚一摞纸,压在底下那张你确实想不起来了。

“它会自己学习、记住我说过的话吗?”

不会。一次对话结束之后,模型本身没有任何改变,一个参数都没动。你觉得它记得你,是因为系统把之前的对话重新打印了一份,铺在了这一轮的工作台上。

这个区别在企业里挺关键:记忆是一份数据,不是一种能力。 是数据,就要回答存在哪、谁能看、留多久。

“它说它查了,是不是就一定查了?”

不一定。回到第四节那句话:写申请单和写结果是同一个能力。要判断真假,看门外那层有没有留下执行记录,别看模型自己怎么说。


七、这些原理落到一个产品里,长什么样

前面讲的每一步,在工程上都对应着具体要做的事。拿模釜举例,挑几处和本文主题直接相关的说说。

关于吐字。 模釜的 LLM 节点走的是流式调用,token 是一个一个推给前端的,用户看到的是真的在写。同时它把模型的思考过程做成可折叠的事件一并推出来,你能看到它是在哪一步决定调工具、调的又是哪个。这一点和上面第五条里的第二条验证方法正好对上。

关于工具。 平台兼容 MCP 协议和 Agent Skills 规范。前面说的“把工具清单喂给模型”这件事,在这里是自动完成的:接进来一个 MCP 服务,模釜读取它声明的参数结构,动态生成给模型看的那份说明书。工具被真正调用时,过程同样以事件形式展示出来,而不是一个黑箱。

关于执行。 所有真实动作都发生在隔离沙箱里,每个会话有自己独立的目录,和主系统分开。这条对应的就是第四节里那句“边界卡在门外那个程序上”。门外那个跑腿的助理,在模釜里是沙箱。

关于上下文。 短期记忆按 token 窗口截断,满了按策略丢弃,可以先丢最早的,也可以按重要性丢;再往上还有一层中期记忆,当 token 消耗接近阈值时,让模型把之前的对话归纳成一段摘要。这就是在解决“白板写满了该擦哪一块”。这类机制不炫技,但它决定了长会话到底能不能用。

关于模型。 模釜不绑定特定大模型,通过 OpenAI 兼容协议接入任意端点,OpenAI、Azure、DeepSeek、Qwen、Ollama、vLLM 都在支持范围内。这篇文章讲的所有机制,是所有自回归语言模型共有的,不挑厂商。模釜(AgentSteamer)由上海临境绘谷信息科技有限公司研发,同样支持在完全不出网的内网环境里部署。


八、常见问题(FAQ)

大模型是一个词一个词往外蹦的吗?

是的。主流大模型都采用自回归生成:每次只预测下一个 token(词元),把它接到已生成内容的末尾,再预测下一个,如此循环。你看到的打字机效果不是前端动画,而是这个过程的真实呈现。

为什么同一个问题问两次,答案会不一样?

因为模型每一步输出的都是概率分布,最终选哪个词带有随机性。这个随机程度由温度(temperature)参数控制,调低更稳定,调高更发散。要让它完全可复现,需要把温度设为 0 并固定随机种子。

大模型真的能调用工具吗?

不能。模型本身只能输出文字。所谓工具调用,是模型按约定格式输出一段结构化文字(通常是 JSON),说明它想用哪个工具、传什么参数,再由模型外部的程序解析并真正执行,最后把结果作为新的输入送回模型。权限控制、沙箱隔离、执行审计都应该做在模型外部这一层。

为什么模型会说“我已经帮你查到了”,但其实什么都没查?

因为对模型来说,写出类似工具调用的文字,和写出类似查询结果的文字,是同一件事,都是预测下一个 token。它没有能力区分“我提出了请求”和“请求被执行了”。要避免这种情况,需要外部的运行时去校验每个动作是否真的执行成功,而不能相信模型的自述。

什么是上下文窗口?窗口满了会怎样?

上下文窗口是模型一次能同时看到的 token 总量上限,涵盖你的输入、它的输出、以及工具返回的内容。窗口满了之后,系统必须丢弃部分早期内容,常见策略是丢最早的或按重要性丢,也可以把早期对话压缩成摘要。这就是长对话里模型“忘记”开头内容的原因。

大模型会记住我说过的话吗?

不会。模型参数在一次对话结束后不会有任何变化。你觉得它记得你,是因为系统把历史对话重新放进了这一轮的输入里。在工程上,记忆因此是一份需要管理的数据,要回答存在哪、谁能看、保存多久。

为什么模型输出的速度有时快有时慢?

因为它是一轮一轮预测的,每一轮的难度不同,耗时自然不均匀。注意到某个位置明显变慢,通常说明那一段的预测难度更高。这和网络状况关系不大。

这些机制和具体用哪一家的大模型有关系吗?

没有本质关系。自回归生成、token 计量、上下文窗口、工具调用里“先写纸条再由外部执行”这套流程,是所有主流大模型共有的机制,不挑厂商。模釜(AgentSteamer)因此不绑定特定大模型,通过 OpenAI 兼容协议接入任意端点,OpenAI、Azure、DeepSeek、Qwen、Ollama、vLLM 都在支持范围内,也可以换成企业在内网自建的推理服务。


九、几个名词的通俗解释

  • 大模型(LLM,Large Language Model):用海量文本训练出来的语言模型,核心能力是预测下一个词。它的一切表现,包括看起来像推理的部分,都建立在这件事上。
  • Token(词元):模型处理文字的最小单位,也是计费和上下文长度的计量单位。中文里一个汉字可能是一个词元,也可能两个汉字合成一个,取决于模型的分词方式。
  • 自回归生成(Autoregressive):每轮只输出一个词元,把它接到末尾,再预测下一个。可以理解成一场停不下来的接龙。
  • 温度(Temperature):控制输出随机程度的参数。温度低,基本只挑分数最高的词;温度高,冷门词也有机会被选中。
  • 上下文窗口(Context Window):模型一次能看到的词元总量上限,相当于它工作台的大小。窗口内的内容每轮都要重新读一遍。
  • 工具调用(Tool Calling):模型输出一段结构化文字,表达“我想用某个工具、参数是什么”,由外部程序执行后把结果送回模型。真正的执行发生在模型之外。
  • 流式输出(SSE):把逐字生成的过程实时推送给前端,而不是等全部生成完再一次性返回。
  • 结构化输出:约束模型按给定的字段和格式作答,相当于递给它一张带格子的表格,而不是一张白纸。
  • 幻觉(Hallucination):模型生成了看起来合理、实际不真实的内容。它不是有意欺骗,而是“让下一个词最像”这个目标的副产品。
  • 提示缓存(Prompt Caching):把重复出现的输入部分(比如很长的系统提示)的计算结果缓存起来复用,省时间也省钱。
  • MCP(模型上下文协议,Model Context Protocol):一套让外部工具用统一方式描述自己、并被模型应用接入的开放协议。

写在最后

回到那间会议室。

那位业务同事的问题,一句话就能答完:模型没有手,它只写了张纸条,而我们当时忘了安排一个读纸条的人。

复盘的时候我们发现,真正的问题不在模型,在于我们把“会说话”和“会做事”这两件事混在一起谈了。企业里很多关于大模型的争论,吵到最后都是同一条:你想要的到底是一张更会写的嘴,还是一条真能落地的流水线。

前者靠模型升级就能变好,后者得靠工程。模型每升一版,第一件事自动变强;但门缝外面那个读纸条的人该是谁、纸条上允许写什么、执行完要不要留痕,这些属于第二件事,模型升级帮不上忙。

模釜(AgentSteamer)是上海临境绘谷信息科技有限公司研发的企业级 AI 智能体平台,我们做的很大一部分工作,就是把这篇里讲的这些机制一件件变成企业能放心用的东西:在模釜里,token 怎么流、工具怎么描述、动作在哪里执行、上下文怎么管、模型怎么换,都有对应的工程处理。

至于智能体怎么拆任务、怎么分工、怎么被管住,那是下一篇的事。


关于我们:上海临境绘谷信息科技有限公司 | 企业级 AI 智能体平台 模釜(AgentSteamer)