工具调用演变
你在 第14章 · Agent 是怎么工作的 里看到 Agent(能自己干活的 AI)能”调用工具”。但 AI 最早是不会用工具的——它只会说话。怎么从”只会说话”变成”会用工具”的?这篇从头讲。
2022 年之前:AI 只会说话
最早的 AI 模型(GPT-3 时代,2020 年,GPT 是一种早期 AI 模型的名字)只能做一件事:你输入文字,它一个字一个字地输出。每个输出的最小单位叫 token——可以理解为一个词、一个字、或一个标点。
你可以让它”写一首诗”,“翻译一段话”,“总结一篇文章”。但你不能让它”帮我查今天的天气”或者”帮我算一下 12345 乘以 67890”——这些需要调用外部工具,AI 做不到。
唯一的办法是手动拼接——把工具的结果提前准备好,粘在问题后面。比如你想让 AI 总结一篇网页,你先自己把网页内容复制下来,贴在问题里说:“总结以下内容:…”。AI 以为自己”看到”了网页,其实是你手动塞给它的。
2023 年:AI 学会”叫工具”
2023 年 6 月,OpenAI 推出了 Function Calling(函数调用)1。这是一个巨大的变化:AI 不再只是”说话”,它可以”叫工具”。
具体怎么工作:
- 你事先定义好有哪些工具可用(比如”天气查询”、“计算器”、“搜索”)
- AI 收到你的问题时,自己判断:这个问题需要调用哪个工具?需要什么参数?
- AI 输出”请调用天气查询,城市=北京”
- 你的程序帮它执行天气查询,把结果”北京明天晴,25 度”返回给 AI
- AI 根据工具返回的结果,组织成自然语言回答:“明天北京晴天,气温 25 度左右,不用带伞。”
关键变化:AI 不再只是”处理文字”,它成了”决策中心”——判断该用什么工具、怎么用、怎么解读结果。
2024 年:标准化
OpenAI 叫 Function Calling,Anthropic(Claude 的开发商)叫 Tool Use——本质上是一回事,但名字和格式不同。
LangChain 和 LlamaIndex 这两个工具库做了标准化工作——不管底层 AI 是 OpenAI 还是 Anthropic,你定义工具的方式都一样。开发者不需要为每个 AI 重写一遍工具定义 2。
2024 年末:MCP 统一标准
2024 年 11 月,Anthropic 推出了 MCP(模型上下文协议)。它解决的不是”AI 怎么叫工具”,而是”工具的格式能不能统一”。
在 MCP 之前,你写了一个”天气查询”工具,只能在 OpenAI 的格式里用。想让它也能被 Claude 用?得再写一个版本。MCP 定了一套统一的工具描述格式——写一次,所有支持 MCP 的 AI 都能用。
一张表看懂演变
| 时间 | 叫什么 | AI 能做什么 | 怎么实现的 |
|---|---|---|---|
| 2020-2022 | 手动拼接 | 只能说话 | 人手动把工具结果粘在问题后面 |
| 2023.06 | 函数调用 | 判断该用什么工具 | AI 自己决定调用哪个工具 |
| 2024 | 标准化 | 跨平台使用同一套工具 | 工具库封装 |
| 2024.11 | MCP | 写一次工具,处处能用 | 统一的工具描述格式 |
跟你有什么关系
你每次用 AI 搜索(Perplexity、ChatGPT Search,都是 AI 搜索产品),背后就是函数调用的技术在工作——AI 判断你需要搜索,调用搜索工具,拿到结果后组织回答。
理解了 Function Calling 的演变,你就理解了 Agent 为什么能”干活”——不是 AI 本身变强了,是它学会了调用外面的工具。嘴变手的过程,就是这三年。
相关笔记
- 第14章 · Agent 是怎么工作的 — Function Calling 是 Agent 的”手”
- 第15章 · Agent 之间的通信协议 — MCP 统一了工具的标准
- 上下文管理 — 提示词注入是上下文管理的原始形态
来源
- OpenAI, “Function Calling and Other API Updates”, 2023.06, https://openai.com/index/function-calling-and-other-api-updates/
- LangChain, Tools Documentation
注释
-
OpenAI, “Function Calling and Other API Updates”, 2023.06.13, https://openai.com/index/function-calling-and-other-api-updates/ ↩
-
LangChain, Tools Documentation ↩