大模型到底是怎么调用外部工具的?
大模型到底是怎么调用外部工具的?
月伴飞鱼大家好呀,我是飞鱼
现在的 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/










