大模型到底是怎么调用外部工具的?

大家好呀,我是飞鱼

现在的 AI 已经能帮大家办公、写代码、操作电脑了。

但是事实上大模型从来没有调用过任何工具,它从头到尾只做了一件事:输出文字。

它没有真的去搜过谷歌,没有真的执行过代码,没有真的读过你的电脑文件。

可是我们知道 ChatGPT 能实时查股价, Claude 能跑代码, 能在你的电脑上读文件改代码。

那这些是怎么发生的?

其实核心是有一个叫做 Harness 的机制:

大模型本身只是在合适时机输出特定格式的文字。

真正让输出文字变成实际行动的,是模型外面那个永不疲倦的循环程序。

这个程序加上它管理的工具,上下文等等,合起来就叫 Harness。

Harness 是一种被专门训练出来的能力。

大模型在后期训练时都喂过大量工具调用样本:什么场景该输出调用,什么场景该正常回答,收到工具结果该如何整合?

OpenAI 把这能力叫 Function Calling,Anthropic 叫 Tool Use,但本质都一样:

为了让模型学会一种新的输出模式,在某些时机,它的下一段输出不是给人看的自然语言,而是给程序看的结构化指令。

但无论训练的多好,模型本身还是只在输出文字解析执行,把结果送回的工作全部由 Harness 完成。

Harness 就是围绕模型搭建的所有外部基础设施。

一个完整的Harness,至少做这几件事:

主循环最核心的部分流程是把上下文给模型接收输出,判断是普通回复还是工具调用。

如果是工具调用就解析执行,把结果加回上下文,回到第一步。

通过让模型反复说话, Harness 反复执行,再把结果喂回去。

还有工具注册表,用来记录有哪些工具可用,每个工具的名称描述,参数定义,实际执行函数。

每次请求时把工具列表作为元信息发给模型,它才知道自己有哪些能力。

还有上下文管理:

大模型跑久了,结果加思考过程会撑爆上下文窗口。

Harness 必须决定哪些保留全文,哪些压缩成摘要,什么时候开始总结等等?

以前大家都在比拼模型谁更聪明,谁写代码更好,谁 BenchMark 更高。

但从 2026 年开始,已经在比拼 Harness 了。

同一个模型套不同 Harness 实际表现差好几个量级。

之前 Harness 的设计哲学是:Harness 应该尽可能不把决策权留给模型。

像早期的 LangChain 框架倾向于用硬编码规则去指挥模型,结果模型一升级这些规则反而成了束缚。

新一代 Harness 的思路是只提供基础设施,不规定决策逻辑。

让模型自己决定怎么用工具。

有时候 Agent 在长任务里会失忆或跑偏?通常不是模型变笨了,是 Harness 的上下文管理出了问题。

这是工程问题,不是模型问题。

最后想看技术文章的,可以去我的个人网站:http://hardyfish.top/