零基础认识大语言模型(LLM)工作原理(10.Tool Calling:让 AI 第一次拥有行动能力)

第十章 Tool Calling:让 AI 第一次拥有行动能力


目录

零基础认识大语言模型(LLM)工作原理目录 - GuZhenYin - 博客园

本章导读

在前面的章节中,我们已经了解了大语言模型(LLM)的工作原理。

无论模型多么强大,它始终只能完成一件事情:根据已有上下文,预测下一个 Token。

因此,对于模型来说,整个世界只有两件事情:

复制代码
输入文本
    ↓
生成文本

如果只是聊天、翻译、总结、写代码,这已经足够了。

但是,当我们开始尝试让 AI 帮助完成真实工作时,很快就会遇到一个问题

当我们问模型:

帮我查询今天武汉天气。

模型知道武汉吗?

知道。

模型知道天气是什么吗?

知道。

但是它知道今天武汉到底有没有下雨吗?

不知道。

因为今天的天气属于实时信息,训练模型的时候还没有发生。

再比如:帮我计算下面 Excel 的销售总额。

模型会计算吗?

当然会。

但是它能够直接打开你的 Excel 文件吗?

不能。

又比如:帮我查询数据库中库存不足的商品。

模型懂 SQL 吗?

懂。

但是它能够直接连接你的 MySQL 数据库吗?

仍然不能。

于是,一个越来越明显的问题出现了:LLM 很聪明,但它无法直接与现实世界交互。


10.1 LLM 为什么不会使用工具?

这一点其实很好理解。

回忆一下第二章介绍过的内容。

模型看到的输入其实并不是:

复制代码
今天天气怎么样?

而是经过 Tokenizer 处理之后的一串 Token ID。

例如(示意):

复制代码
[4512,10345,821,...]

模型最后输出的也不是:

复制代码
今天武汉小雨。

而是另一串 Token ID。

整个推理过程中,Transformer 从头到尾处理的都是数字向量。

模型既不会访问互联网,也不会打开浏览器,更不会执行操作系统命令。

换句话说,对于 LLM 来说:

世界上不存在"API""数据库""浏览器"这些概念,它只认识 Token。

因此,下面这些动作:

  • 查询天气

  • 调用地图

  • 执行 Python

  • 打开浏览器

  • 查询数据库

  • 发送邮件

对于模型来说,本质上都是模型之外发生的事情


10.2 如果让模型自己完成,会发生什么?

来看一个简单的例子。

假设用户输入:

复制代码
今天武汉天气怎么样?

模型开始推理。

根据训练数据,它可能知道:

  • 武汉夏天比较热;

  • 七月份经常下雨;

  • 天气回答通常包含温度、湿度等内容。

于是,它可能生成:

复制代码
今天武汉多云,最高气温33℃......

问题是,这是真的吗?

模型根本不知道。

它只是根据历史统计规律,生成了一段最像天气预报的文字。

这就是我们第八章提到的幻觉(Hallucination)

如果模型能够真正访问天气 API,它就不需要猜了。

因此,工具调用(Tool Calling)的本质,就是让模型停止猜测,转而获取真实数据。


10.3 Tool Calling 到底是什么?

很多人第一次接触 Tool Calling,会觉得非常好用。

例如:

你在 ChatGPT 中输入:北京今天会下雨吗?

几秒钟后,它真的告诉你:今天北京有小雨......

甚至还能给出未来几天的天气。

很多人以为:ChatGPT 学会了查询天气。

实际上,并不是它学会了某项技能。

真正调用的流程其实是:

复制代码
用户输入
    │
    ▼
LLM 判断:
需要查询天气
    │
    ▼
调用天气 API
    │
    ▼
获得真实天气数据
    │
    ▼
再次交给 LLM
    │
    ▼
生成最终回答

这里,请注意真正查询天气的不是 LLM,而是外部程序。

LLM 做的事情只有两件:

  1. 判断是否需要调用工具;

  2. 根据工具返回的结果重新组织语言。

这就是 Tool Calling 的本质。


10.4 Tool Calling 是谁调用谁?

很多初学者容易产生一个误区:是不是模型自己调用 API?

答案是否定的。

真正调用工具的是 Agent Runtime(或者聊天应用)。

模型只是生成了一段特殊的信息,例如:

复制代码
{
  "tool":"weather",
  "city":"北京"
}

程序看到这段内容之后,会根据返回的值做下面的事情:

  1. 调用天气接口;

  2. 获得返回结果;

  3. 再把结果放回上下文;

  4. 继续让模型推理。

因此,一个完整流程其实是:

复制代码
          用户
            │
            ▼
          LLM
            │
     是否需要工具?
            │
     ┌──────┴──────┐
     │             │
    否            是
     │             │
     ▼             ▼
直接回答      Agent Runtime
                    │
                    ▼
              调用真实工具
                    │
                    ▼
              返回执行结果
                    │
                    ▼
               再次调用 LLM
                    │
                    ▼
               输出最终答案

这里有一个非常重要的角色第一次出现了:

Agent Runtime(智能体运行时)

它就像整个系统的"调度中心"。

模型负责思考,Runtime 负责执行。


10.5 Tool Calling 为什么如此重要?

Tool Calling 的出现,可以说是 AI 应用发展的一个重要分水岭。

在它出现之前,大模型更像一个知识渊博的顾问:

  • 能解释概念;

  • 能回答问题;

  • 能写文章;

  • 能生成代码。

但所有能力都停留在"说"的层面。

有了 Tool Calling 之后,大模型第一次拥有了与外部世界交互的能力:

  • 查询实时天气;

  • 搜索互联网;

  • 调用企业 API;

  • 查询数据库;

  • 执行 Python 程序;

  • 控制浏览器;

  • 操作本地文件。

虽然真正执行这些动作的依然是外部程序,但从用户的角度来看,AI 已经不再只是一个聊天机器人,而开始像一个真正能够"做事"的助手。

因此可以说Tool Calling 并没有改变 LLM 的工作原理,却极大扩展了 LLM 的能力边界。


本章总结

本章我们回答了三个问题:

  1. 为什么 LLM 无法直接操作现实世界?

    • 因为模型本质上只能处理 Token,无法直接访问外部系统。
  2. Tool Calling 到底是什么?

    • 模型负责判断"是否需要工具",真正执行工具的是外部程序(Agent Runtime)。
  3. 为什么 Tool Calling 如此重要?

    • 它让 AI 从"只会说"迈向了"能够做",成为现代 AI Agent 的基础能力。

下一章预告

下一章,我们将继续回答一个自然产生的问题:

如果每个 AI 平台都要重新开发一套工具接口,为什么不制定一套统一标准?

这正是 MCP(Model Context Protocol) 出现的原因。下一章我们将从"为什么需要 MCP"开始,一步步讲清楚它如何成为 AI 世界连接工具和模型的通用协议。