大语言模型能写诗、能写代码、能通过司法考试——那为什么它不能帮你订一张机票?答案不是「还不够大」,而是它从一开始就缺三样东西:一双能感知现实的眼、一个能记住过去的大脑、一双能改变世界的手。
如果你只看过大语言模型的演示视频,很容易形成一种印象:它什么都懂,无所不能。但只要把它从「问答演示」搬进「真实任务」,四道硬墙就会立刻出现。
试着让一个裸 LLM 完成下面这个看似简单的任务:
「查一下明天北京到上海的高铁票,选最早的一班,帮我订座。」
它会失败,而且失败得很彻底——它不知道今天是几号,查不到任何车次,更碰不到 12306 的订票接口。它能滔滔不绝地讲解「如何订高铁票」,却一步都迈不出去。
这不是「模型还不够强」的问题。即便把参数量再放大一百倍,只要架构不变,这四道墙依然存在。它们是 LLM 与生俱来的边界。
| 局限 | 表现 | 根因 | 现实后果 |
|---|---|---|---|
| 知识截止(Knowledge Cutoff) | 不知道训练之后的新闻、价格、库存 | 训练完成后权重冻结 | 「今天的股价」答不上来 |
| 无状态(Stateless) | 每次调用独立,不记得上一次对话 | 推理时无持久化存储 | 多轮任务无法衔接 |
| 无行动力(No Action) | 只能输出文本,不能调用任何系统 | 缺乏工具与执行接口 | 「帮我订票」永远停在嘴上 |
| 幻觉(Hallucination) | 一本正经地编造不存在的事实 | 概率采样、缺乏事实校验 | 关键决策不可信 |
下面逐条拆解。
LLM 的知识来自训练数据。训练结束的那一刻,它的「世界时钟」就停了。
训练截止: 2024 年 12 月 当前时间: 2026 年 7 月 --------------------------------- 用户: 今天的比特币价格是多少? LLM: (只能猜测或拒绝回答)
⚠️ 常见误解:以为「联网搜索」就能解决知识截止。搜索只是把外部信息塞进 Prompt,模型本身仍然不知道当下。真正解决问题的是「让模型能主动去查」——这正是 Agent 第 6 章工具调用的动机。
LLM 的 API 调用是无状态的。每次请求都是一次崭新的开始,模型本身不记得你上一句说了什么。我们在对话界面里看到的「连续对话」,其实是客户端每次把历史消息重新塞进 Prompt 实现的——一旦超出上下文窗口,最早的内容就被截断遗忘。
| 维度 | 人类记忆 | LLM 调用 |
|---|---|---|
| 持久性 | 跨场景、跨时间 | 单次请求内 |
| 主动回忆 | 自由提取 | 必须塞进上下文 |
| 容量限制 | 近似无限 | Token 窗口有限 |
| 跨会话 | 自然延续 | 完全失忆 |
💡 核心结论:LLM 是一个「无状态的函数」——输入 Prompt,输出文本,仅此而已。要让它有记忆,必须在外部为它接一层存储,这正是第 5 章 Memory 模块与 RAG 的来源。
这是最致命的一条。LLM 的输出永远是文本,永远停在屏幕上。
用户: 帮我把数据库里 status='pending' 的订单全部置为 'shipped' LLM: 好的,您应该执行以下 SQL: UPDATE orders SET status='shipped' WHERE status='pending'; 用户: (内心 OS:那你倒是去执行啊)
LLM 知道「该做什么」,却完全做不到「去做」。这条边界把 LLM 永远锁死在「顾问」的位置——它能告诉你怎么做,却不能替你做。
打破这条边界需要两样东西:
这两样加起来,就是第 6 章工具使用与执行的全部主题。
LLM 的本质是「给定上文,预测下一个最可能的词」。这是一个概率过程,不是事实检索过程。当训练数据里没有明确答案时,模型倾向于编造一个听起来合理的答案,而非承认「我不知道」。
| 幻觉类型 | 典型例子 | 危险程度 |
|---|---|---|
| 事实幻觉 | 编造不存在的论文、人物、API | 高 |
| 引用幻觉 | 给出看起来真实但伪造的 URL | 高 |
| 计算幻觉 | 复杂数学题给出自信的错误答案 | 中 |
| 指令幻觉 | 工具调用时编造不存在的参数 | 高 |
⚠️ 对 Agent 的特殊危害:幻觉在「问答场景」只是答错,但在「Agent 场景」会引发真实世界的错误操作——编造一个不存在的 API 端点、给错一个删除命令的参数,后果都是灾难性的。这正是第 6.4 节安全执行、第 8.3 节系统性挑战要反复强调的问题。
把四条局限放进一个二维坐标系,能更清楚地看到 LLM 的「能力盲区」。
<svg viewBox="0 0 720 480" xmlns="http://www.w3.org/2000/svg"> <!-- 坐标轴 --> <line x1="80" y1="240" x2="680" y2="240" stroke="#475569" stroke-width="2"/> <line x1="380" y1="40" x2="380" y2="440" stroke="#475569" stroke-width="2"/> <!-- 轴标签 --> <text x="680" y="232" font-size="14" fill="#475569">信息时效 →</text> <text x="60" y="232" font-size="14" fill="#475569" text-anchor="end">← 训练冻结</text> <text x="388" y="36" font-size="14" fill="#475569">↑ 有行动力</text> <text x="388" y="452" font-size="14" fill="#475569">↓ 仅文本输出</text> <!-- 四象限标签 --> <rect x="100" y="60" width="240" height="160" fill="#fef9c3" stroke="#ca8a04" rx="8"/> <text x="220" y="90" font-size="16" fill="#713f12" text-anchor="middle" font-weight="bold">理想 Agent</text> <text x="220" y="115" font-size="12" fill="#713f12" text-anchor="middle">实时信息 + 能行动</text> <text x="220" y="140" font-size="11" fill="#713f12" text-anchor="middle">(右上 · 目标区)</text> <rect x="420" y="60" width="240" height="160" fill="#dbeafe" stroke="#2563eb" rx="8"/> <text x="540" y="90" font-size="16" fill="#1e3a8a" text-anchor="middle" font-weight="bold">实时检索系统</text> <text x="540" y="115" font-size="12" fill="#1e3a8a" text-anchor="middle">有实时信息,无行动力</text> <text x="540" y="140" font-size="11" fill="#1e3a8a" text-anchor="middle">(左上 · 搜索引擎类)</text> <rect x="100" y="280" width="240" height="160" fill="#fce7f3" stroke="#db2777" rx="8"/> <text x="220" y="310" font-size="16" fill="#831843" text-anchor="middle" font-weight="bold">裸 LLM</text> <text x="220" y="335" font-size="12" fill="#831843" text-anchor="middle">训练冻结 + 无行动力</text> <text x="220" y="360" font-size="11" fill="#831843" text-anchor="middle">(左下 · 当前位置)</text> <rect x="420" y="280" width="240" height="160" fill="#dcfce7" stroke="#16a34a" rx="8"/> <text x="540" y="310" font-size="16" fill="#14532d" text-anchor="middle" font-weight="bold">传统自动化脚本</text> <text x="540" y="335" font-size="12" fill="#14532d" text-anchor="middle">有实时数据,无智能</text> <text x="540" y="360" font-size="11" fill="#14532d" text-anchor="middle">(右下 · 硬编码流程)</text> <!-- 当前位置箭头 --> <circle cx="220" cy="360" r="8" fill="#db2777"/> <text x="240" y="395" font-size="12" fill="#db2777" font-weight="bold">LLM 起点</text> </svg>
这张图回答了一个关键问题:我们要去哪里? 从左下角的「裸 LLM」走到右上角的「理想 Agent」,需要同时跨越两条轴——给模型实时信息(横向,靠工具+记忆)、给模型行动能力(纵向,靠工具+执行环境)。整个第 2 到第 6 章,都是在搭这条跨越路径。
LLM 的四条短板,恰好对应 Agent 四大模块的诞生动机:
| LLM 短板 | 补齐方式 | 对应 Agent 模块 | 详见 |
|---|---|---|---|
| 知识截止 | 外部知识库 + 主动检索 | Memory(长期记忆 / RAG) | 第 5 章 |
| 无状态 | 跨会话存储 + 上下文管理 | Memory(短期+长期) | 第 5 章 |
| 无行动力 | 工具接口 + 执行环境 | Action(工具调用 / 代码执行) | 第 6 章 |
| 易幻觉 | 分步推理 + 观察反馈纠错 | Planning(思维链 / ReAct) | 第 3-4 章 |
这张图揭示了 Agent 的本质:它不是 LLM 的替代品,而是 LLM 的「外骨骼」。LLM 依然是大脑,但被包上了一层感知、记忆、规划与行动的外壳,从而跨越了它先天的四道边界。
💡 一句话总结:Agent 的全部技术努力,可以概括为一句话——「让 LLM 知道当下、记得过去、能做事情、少犯错误」。本书后续所有章节,都是这四句话的展开。
补齐短板之后,AI 与用户的交互方式发生了根本变化。
| 维度 | LLM 问答范式 | Agent 办事范式 |
|---|---|---|
| 用户输入 | 一个问题 | 一个目标 |
| AI 输出 | 一段文本答案 | 一系列动作 + 最终结果 |
| 交互轮数 | 单轮或少数多轮 | 可能数十乃至上百步 |
| 错误处理 | 答错就答错 | 观察 → 反思 → 重试 |
| 评价标准 | 回答是否准确 | 任务是否真正完成 |
| 现实影响 | 仅停留在对话 | 改变真实系统状态 |
这个范式切换是理解后续所有章节的钥匙。从第 3 章的思维链、第 4 章的 ReAct,到第 6 章的函数调用、第 7 章的多智能体,所有的技术机制都在服务同一个目标:让 AI 从「说得对」进化到「做得成」。
下一节《1.2 AI Agent 定义与核心循环》将正式给出 Agent 的定义,并拆解贯穿全书的「感知-规划-行动-观察」核心循环。