# 从聊天机器人到智能体：一个循环的差距

LLM 只会预测下一个 token，为什么套上「观察→思考→行动」循环和工具后就能干活了？

> ReAct 循环 · 智能体定义 · LLM 局限性 · 约 6 分钟 · 07 月 08 日

## 本篇要点

1. LLM 的本质是文字接龙机：它不能上网、不能执行操作、一次回答完就停——这是聊天机器人的天花板。
2. 聊天机器人与智能体的根本区别在于谁决定「下一步」：用户决定还是模型自己决定。
3. 智能体的最小定义 = 模型 + 循环 + 工具；ReAct 循环（观察→思考→行动→观察）让 LLM 从生成文本变为完成目标。

---

你有没有遇到过这种情况：跟 ChatGPT 聊得热火朝天，让它帮你规划周末行程，它列了一份漂亮的清单——但到了周六，你发现其中一个景点今天闭馆，酒店价格也变了。你有点失落：它明明那么聪明，为什么不能自己查一下实时信息呢？

答案藏在 LLM 的底层工作原理里。今天这一篇，我们就来搞清楚：为什么聊天机器人不等于智能体（Agent），以及加上什么东西之后，一个只会“猜下一个词”的模型，就能变成帮你干活的智能体。

## LLM 的真相：它只是一个“文字接龙机”

不管大模型看起来多聪明，它的核心能力只有一句话：**根据已有上下文，预测下一个最合理的 token（词元）**。

当你问“北京的天气怎么样？”，模型内部发生的事情不是去查天气预报，而是：从训练数据中学到的模式里，推算出“北京”“天气”“怎么样”这几个 token 后面，最可能出现的 token 序列——“北京今天晴，气温 15–22°C”。它生成的是**一个在语言上流畅、在训练数据里常见的回答**，而不是一个事实核查的结果。

这意味着三个重要结论：

1. **模型不能上网。** 它不知道此时此刻的天气、新闻、股价——它的知识停留在训练数据截止日。
2. **模型不能执行操作。** 它不会调用 API、不会发邮件、不会写数据库。它只能输出文本。
3. **模型一次回答完就结束。** 它不会主动追问、不会自我纠错、不会说“等一下，我再查一个数据”——除非你在提示词里写了明确的指令。

这三个限制，就是聊天机器人的天花板。它像一个知识渊博但四肢瘫痪的学者：能回答问题、提出方案，但无法动手操作、无法感知实时变化、也无法在执行过程中调整行为[[1]](#ref1)。

## 聊天机器人 vs. 智能体：谁来决定“下一步”？

如果把聊天机器人和智能体放在一起对比，最本质的区别只有一个：**谁来决定下一步做什么**。

在聊天机器人里，**用户**决定下一步。用户问一个问题，模型回答一次；用户追问，模型再答——每一次交互都是独立的“你问→它答”。模型从来没有自己说“我需要先查一下资料再回答”的能力，因为它根本没有“下一步”这个概念。

在智能体里，**模型自己**决定下一步。用户在开头给了目标（比如“帮我规划周末北京游”），然后模型进入一个循环：它看当前状态（已经知道什么、还缺什么），决定下一步动作（查天气？查酒店？查交通？），调用一个工具去执行，观察结果，然后再次决定下一步。这个循环一直持续到任务完成。

这就是智能体的最小定义：**模型 + 循环 + 工具**[[2]](#ref2)。

## 套上循环之后：从“回答”变成“执行”

这个循环在学术上叫 **ReAct（Reasoning + Acting）**，来自 2023 年的一篇论文[[3]](#ref3)。它的结构很简单：

**观察（Observe）→ 思考（Think）→ 行动（Act）→ 观察 → 思考 → 行动……直到任务完成。**

每一步的具体含义是：

- **观察**：模型读取当前上下文——用户的目标、之前工具调用的结果、对话历史。这是它“感知环境”的方式。
- **思考**：模型推理下一步该做什么。它可能想：“我已经知道了天气，但还不知道酒店价格，所以我应该先查酒店。”
- **行动**：模型输出一个结构化的工具调用指令（比如 `{"tool": "search_hotel", "args": {"city": "北京", "date": "2026-03-15"}}`），由外部的运行时（runtime）去真正执行这个调用。
- **观察结果**：工具返回的数据（比如酒店列表）被追加到上下文中，模型再次进入“观察→思考”阶段。

这个循环把 LLM 从“一次回答完就停”变成了“持续执行直到任务完成”。模型不再是等用户追问，而是自己驱动下一步。

下图展示的就是这个循环的完整形态：

![Agent 的观察-思考-行动循环图](https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit1/AgentCycle.gif)

## 为什么这个循环是质变？

没有循环之前，聊天机器人能做的是**生成文本**。有了循环之后，智能体能做的是**完成目标**。这两个层次完全不同：

| 聊天机器人 | 智能体 |
|-----------|--------|
| 每次输入触发一次回答 | 一次目标驱动多次迭代 |
| 输出是文本 | 输出是行动 + 文本 |
| 不执行任何操作 | 通过工具执行操作（搜索、查库、发请求） |
| 无法感知操作结果 | 观察结果后调整下一步 |
| 用户必须推进对话 | 模型自己推进执行 |

举一个具体的例子：你让助手“帮我查一下最新的 Python 3.13 新特性，并对比 3.12 的差异”。

- **聊天机器人模式**：模型直接基于训练数据里的知识，写出一个回答。如果它的训练数据截止于 3.12 发布时，那它根本不知道 3.13 有什么新东西，但依然会流畅地编造一个答案（这就是“幻觉”的来源）。
- **智能体模式**：模型先观察——“我缺少 3.13 的官方发布信息，需要查一下。”然后行动——调用搜索工具查找“Python 3.13 release notes”。观察结果——阅读搜索到的文档。再思考——“现在我有了 3.13 的信息，还需要与 3.12 对比。”再行动——调用另一个工具搜索或读取相关文档。观察结果后，最终生成一份基于真实数据的对比报告。

两次模式下，模型生成的文本看起来一样流畅，但智能体版本的每一条信息都有真实来源支撑。

## 小结

当你跟一个纯聊天机器人对话时，你面对的是一个**语言接口**——它擅长理解你的问题并生成优美的回答，但它永远无法跨出文本的世界。

智能体做的就是**给这个语言接口装上手脚和传感器**：用循环让它持续运转，用工具让它触碰真实世界。模型仍然只做一件事——预测下一个 token——但因为它每次预测时，上下文里都多了工具返回的真实数据，“下一个 token”就从“听起来合理的下一个词”变成了“基于真实信息的下一个行动”。

下一期我们会深入这个循环的内部，看看工具调用（Tool Calling / Function Calling）的具体机制——模型到底是怎么“说出”一个工具调用指令的，runtime 又是怎么执行的。

## 来源

1. [原生大模型为什么做不了智能 Agent — 分析了 LLM 缺失执行能力、环境感知、规划与恢复三大能力](https://devcfg.com/agent/why-llm-is-not-agent/)
2. [What Are AI Agents? Concepts, Architecture, and How They Work — 智能体的最小定义与循环图示](https://agentguides.dev/ai-agents/)
3. [The Agent Loop Explained: Think, Act, Observe — ReAct 模式的实践详解与循环机制](https://ai-tldr.dev/learn/ai-agents/agent-fundamentals/agent-loop-explained/)

---

原文：https://pangzhengboyin.com/articles/from-chatbot-to-agent-the-loop-8b77fa4b

> **庞征博引** · 想学的，慢慢都会
>
> 庞征博引是把想学的东西写成连载的 AI 学习工具。说出想学什么，它会先了解你的基础，再把主题写成一篇篇 5–10 分钟能读完的文章；边读边问，接下来学什么跟着你走。这篇就是这样写出来的。
>
> 开始你自己的连载 → https://pangzhengboyin.com
