AI Agent 概述:从聊天机器人到自主智能体
第 1 章 AI Agent 概述:从聊天机器人到自主智能体
打开浏览器,输入"帮我规划一次周末去杭州的三天行程",按下回车——这是 2023 年之后任何一个普通用户都会做的事情。但接下来的故事,决定了你接触到的究竟是"聊天机器人"还是"AI Agent"。
如果屏幕里弹出的只是一份现成的旅游攻略模板,里面混着"西湖一日游""灵隐寺烧香""宋城千古情"这些通用建议,结尾还附了一句"以上信息仅供参考,请以实际情况为准"——你面对的是聊天机器人(Chatbot)。它的本质是"问一句、答一句",你问什么它就答什么,不问就不动。
但如果你看到的回复是这样的:"我注意到你没说明出发地和同行人数。我先查一下杭州未来三天的天气,再去查高铁票和酒店价格,然后根据你的预算给出三套不同档位的方案。整个过程大约需要两分钟,请稍等。"紧接着它开始调用天气 API、票务 API、酒店比价工具,最后真的把三套行程方案连同预算明细一起摆到你面前——你面对的是AI Agent。它的本质是"接到目标后,自主规划步骤、调用工具、直到任务完成"。
这两种体验的差异,就是本章要回答的核心问题:Agent 究竟是什么?它和聊天机器人之间的鸿沟,到底由哪些技术要素构成?
1.1 重新理解"Agent"这个词
"Agent"是人工智能领域被滥用得最严重的术语之一。在不同的语境下,它可能是强化学习里的智能体、可能是分布式系统里的代理进程、也可能是哲学讨论中的意向性主体。本书所说的 Agent,特指基于大语言模型驱动、具备自主决策与工具调用能力的人工智能实体。在行文中如果不加特别说明,"Agent"一律指代这个含义。
理解这个定义需要抓住三个关键词:大语言模型驱动、自主决策、工具调用。
第一,大语言模型(LLM)驱动。Agent 的大脑是 LLM。它负责理解自然语言指令、进行逻辑推理、生成下一步动作的判断。LLM 的能力上限,几乎直接决定了 Agent 的能力上限。这也是为什么 2023 年 GPT-4 发布之后,Agent 概念会突然爆发——并不是因为 Agent 这个想法新颖,而是因为大脑终于成熟了。
第二,自主决策。这是 Agent 和 Chatbot 最核心的区别。Chatbot 是被动响应的——你说什么它答什么。Agent 是目标驱动的——你给出一个目标,它会自己拆解出"该做什么、怎么做、做到什么程度算完成"。这种自主性体现在 Agent 能够在没有人类逐步指导的情况下,根据环境反馈调整自己的行为路径。
第三,工具调用。再聪明的 LLM 也无法独立完成所有任务:它不能实时联网查询天气、不能读写本地文件、不能执行 SQL 查询、不能给你的手机发短信。Agent 必须能够调用外部工具来弥补这些能力缺口。工具可以是搜索引擎、数据库、API 接口,也可以是代码执行环境、文件系统,甚至可以是另一个 Agent。
把这三个要素组合起来,可以给出一个相对完整的描述:AI Agent 是以大语言模型为核心推理引擎、以目标为导向、能够自主规划行动路径并调用外部工具完成任务的智能系统。
1.2 形式化定义:感知-思考-行动循环
工程领域讨论一个概念时,往往需要把它"形式化"——用清晰的变量和流程图把抽象描述变成可实现的模型。Agent 也不例外。最被广泛接受的 Agent 模型是 Russell 和 Norvig 在《人工智能:一种现代方法》中提出的"感知-思考-行动"循环(Perception-Thinking-Action Loop,简称 PTA 循环)。
```mermaid flowchart LR A[感知 Perception] --> B[思考 Thinking] B --> C[行动 Action] C --> D[环境反馈] D --> A ```
这个循环的四个节点分别承担不同的职责:
感知(Perception) 是 Agent 与外界交互的起点。它包括读取用户输入、解析当前环境状态、获取工具调用的返回值。在 LLM Agent 中,感知阶段往往不是简单的字符串接收,而是结构化的信息抽取。例如用户说"我想订一家适合带宠物的餐厅,今晚六点,最好在国贸附近"——感知模块需要从中提取出三个约束条件:宠物友好、预订时间、地理位置。
思考(Thinking) 是 Agent 的大脑在运转。在 LLM Agent 时代,思考的具体形式通常是"思维链"(Chain of Thought)——LLM 在内部生成一段推理文本,决定下一步该做什么。思考的输出可以是一个动作指令("调用地图 API 搜索国贸附近的宠物友好餐厅"),也可以是一个判断("信息不足,需要先询问用户预算")。
行动(Action) 是思考结果在物理世界或数字世界中的执行。执行可以分两类:内部行动(如更新自己的记忆、修改任务计划)和外部行动(如调用 API 发送请求、操作文件系统、给用户发消息)。在 LLM Agent 框架中,外部行动通常通过"工具调用"(Function Calling)接口实现。
环境反馈(Environment Feedback) 是行动的结果回流到感知模块,形成闭环。例如搜索餐厅 API 返回了 10 个候选结果,这些结果会被注入到下一次感知的输入中,成为下一轮思考的上下文。
这个循环会一直运转,直到 Agent 判断任务已经完成(通过某种终止条件,例如"已经收集到三套完整的行程方案"),或者判断任务无法继续(例如"用户预算过低,无法在指定城市预订符合要求的酒店")。
需要强调的是,循环的次数不是固定的。简单的任务可能一轮循环就结束(感知 → 思考 → 行动 → 完成),复杂的任务可能需要几十轮甚至上百轮循环。每一次循环,Agent 都可能根据新的信息调整自己的策略——这就是"自主性"的真正含义。
下面用一个具体例子展示循环的展开过程。任务:"帮我把当前目录里所有 Python 文件中出现的 `print` 替换成 `logger.info`,并把改动提交到 Git。"
- 第 1 轮:感知 → 读取用户指令;思考 → 需要先扫描目录、识别 Python 文件;行动 → 调用 `find . -name "*.py"`。
- 第 2 轮:感知 → 得到文件列表;思考 → 需要逐个文件读取并替换;行动 → 调用 `cat` 和 `sed`。
- 第 3 轮:感知 → 得到修改后的文件;思考 → 需要确认改动符合预期;行动 → 调用 `git diff` 查看变更。
- 第 4 轮:感知 → diff 输出;思考 → 改动合理,准备提交;行动 → 调用 `git add . && git commit -m "..."`。
- 第 5 轮:感知 → commit 成功;思考 → 任务完成;行动 → 向用户汇报结果,退出循环。
可以看到,每一轮循环 Agent 都在独立判断下一步该做什么,而不是依赖用户逐步指挥。这就是 Agent 的"自主性"——用户在最开始给出目标之后,就可以放手了。
1.3 边界辨析:Agent、LLM、RAG 与 Chatbot
很多初学者会把 Agent 和几个相邻概念混为一谈:LLM(Large Language Model)、RAG(Retrieval-Augmented Generation)、Chatbot(聊天机器人)。这四个概念之间确实存在紧密联系,但它们各自承担的角色并不相同。
```mermaid flowchart TD LLM[LLM 大语言模型] --> Agent[AI Agent] LLM --> Chatbot[Chatbot 聊天机器人] RAG[RAG 检索增强生成] --> Chatbot RAG --> Agent Tool[外部工具 API/代码/文件] --> Agent Memory[记忆系统] --> Agent Planning[任务规划] --> Agent ```
这张关系图揭示了几个关键点:
LLM 是基础设施,不是 Agent 本身。 LLM 是 Agent 的大脑,但仅有 LLM 还构不成 Agent。一个没有任何工具调用能力的纯 LLM 对话界面,本质上是 Chatbot,而不是 Agent。LLM 与 Agent 的关系类似于"发动机"与"汽车"——发动机是汽车的必要组件,但仅有发动机放在地上,它不构成一辆车。
RAG 是 LLM 的一种增强方式。 RAG 让 LLM 在回答问题前先去检索外部知识库,从而缓解幻觉问题、扩展知识时效性。RAG 既可以被 Chatbot 使用(例如基于公司内部文档的问答客服),也可以被 Agent 使用(例如 Agent 在制定行程前先检索本地攻略库)。RAG 本身不提供自主决策能力,它只是为 LLM 提供更好的输入。
Chatbot 是 LLM 的最简单应用形态。 Chatbot 的核心特征是"一问一答",没有持续的目标、没有工具调用、没有自主规划。它的对话历史虽然会被保留(多轮对话),但每一轮的回答都是独立的,不会形成长程任务。Chatbot 也可以使用 RAG,但这种增强依然是被动响应式的,不改变其本质。
Agent 是 LLM 的高阶应用形态。 Agent 在 LLM 之上加入了三个关键组件:任务规划(把大目标拆成小步骤)、工具调用(执行每一步具体动作)、记忆系统(保留跨步骤的上下文与历史结果)。这三个组件让 Agent 从"被动回答"升级为"主动完成"。
可以用一张能力对照表来总结这种差异:
| 能力维度 | LLM | Chatbot | RAG Chatbot | Agent | |---------|-----|---------|-------------|-------| | 自然语言理解 | ✓ | ✓ | ✓ | ✓ | | 多轮对话 | 部分 | ✓ | ✓ | ✓ | | 外部知识检索 | ✗ | ✗ | ✓ | ✓ | | 工具调用 | ✗ | ✗ | ✗ | ✓ | | 任务规划 | ✗ | ✗ | ✗ | ✓ | | 自主决策 | ✗ | ✗ | ✗ | ✓ | | 长程任务执行 | ✗ | ✗ | ✗ | ✓ |
这张表里最重要的分界线是"工具调用"这一行。它是从 Chatbot 跨越到 Agent 的本质门槛——一旦 LLM 获得了调用外部工具的能力,它就具备了与数字世界和物理世界交互的可能性,自主决策才有了落地的载体。
1.4 Agent 的分类与能力等级
Agent 不是单一物种。在不同的应用场景下,Agent 呈现出截然不同的形态。根据"部署方式""任务范围"和"自主程度"三个维度,可以对 Agent 进行系统分类。
按部署方式分:单 Agent 与多 Agent。
单 Agent(Single Agent) 是最常见的形态,一个 Agent 独立完成全部任务。这种架构简单、调试方便,适合目标明确、步骤清晰的任务。例如,一个自动写周报的 Agent、一个监控股价并发送提醒的 Agent,都属于单 Agent。
多 Agent(Multi-Agent) 是多个 Agent 协作完成任务的形态。每个 Agent 各自负责一部分子任务,通过消息传递相互协调。例如,一个软件开发团队 Agent 可能由四个角色组成:产品经理 Agent、架构师 Agent、程序员 Agent、测试 Agent。多 Agent 系统更适合复杂、跨领域的任务,但调试难度和通信成本都更高。
按任务范围分:专用 Agent 与通用 Agent。
专用 Agent(Domain-Specific Agent) 聚焦于某一垂直领域,工具集和知识库都针对该领域定制。例如法律咨询 Agent、医学问诊 Agent、代码审查 Agent。这类 Agent 在专业场景下准确率高、可控性强,是当前商业落地的主力。
通用 Agent(General-Purpose Agent) 不限定任务领域,理论上可以处理用户交给它的任何任务。代表案例是 AutoGPT、Devin、BabyAGI 等。这类 Agent 灵活性高,但稳定性差、成本高,目前仍处于探索阶段。
按自主程度分:可以划分为五个等级。
这是本章最重要的一个分类视角,因为它直接对应了 Agent 的工程实现复杂度。
Level 0:纯 LLM 对话。 没有 Agent 框架,用户每输入一句话,模型返回一段回复。没有任何工具调用、规划或记忆。这是 Chatbot 的本质。
Level 1:工具增强。 LLM 具备调用预设工具的能力,但需要在用户明确指令下调用。例如用户说"查一下北京今天天气",Agent 才会调用天气 API;如果用户没说,Agent 不会主动调用。这一级 Agent 已经具备了一定的工具使用能力,但自主性有限。
Level 2:单步规划。 LLM 能够将用户给定的目标拆解为多个步骤,并依次执行。例如用户说"帮我订明天北京到上海的高铁票",Agent 会自己规划:查询班次 → 比较价格 → 选出推荐班次 → 询问用户确认 → 出票。但每一步的执行还是线性的,不会根据中途的失败重新规划。
Level 3:多步反思。 LLM 能够在执行过程中反思自己的决策,根据环境反馈调整计划。例如用户要求订票时,Agent 查询后发现无票,会主动建议改签其他日期或换乘方案,而不是简单地报错。这一级 Agent 引入了"反思"机制,是当前工业界的前沿水平。
Level 4:自主目标发现。 LLM 不需要用户明确目标,能够根据环境状态主动发现问题并设定目标。例如一个监控生产系统的 Agent 会在检测到异常指标后,主动诊断、汇报、建议修复方案。这一级目前仅在受限场景中出现,距离通用部署还有相当距离。
需要强调的是,Level 0 到 Level 4 不是简单的"高级 vs 低级"关系,而是"可控性 vs 自主性"的权衡。Level 越高,自主性越强,但可控性越弱、出错风险越高。在实际工程中,绝大多数生产系统会停留在 Level 1 到 Level 3 之间,而不是盲目追求更高的自主性。
1.5 历史脉络:从 ELIZA 到 GPT-4o
Agent 不是 2023 年突然出现的新物种。它的概念演进跨越了六十多年,可以大致划分为三个时代。
符号主义时代(1960s—1990s)。 1966 年,MIT 的 Joseph Weizenbaum 发布了 ELIZA,这是历史上第一个聊天机器人。它通过简单的模式匹配和替换规则模拟心理咨询师的对话风格。尽管技术上相当原始(没有任何"理解"),但已经具备了 Chatbot 的基本形态:基于规则、被动响应、无法调用外部工具。
这一阶段的 Agent 研究主要集中在符号推理上。研究者试图用逻辑规则、知识库、规划算法来构造"智能"。Newell 和 Simon 的"通用问题求解器"(GPS)、Stanford 的 STRIPS 规划系统都是这一时期的代表。但符号主义 Agent 严重依赖人工编写的规则,泛化能力极差,遇到规则未覆盖的情况就会失效。
统计学习时代(1990s—2010s)。 随着机器学习的发展,研究者开始用概率模型替代硬编码规则。强化学习成为这一阶段 Agent 研究的主导范式——Agent 通过与环境交互、获得奖励信号、不断优化策略。AlphaGo 是这一阶段的巅峰之作:它通过自我对弈产生了超越人类棋手的能力。
但这一阶段的 Agent 通常只能处理单一、封闭的任务(如围棋、Atari 游戏),无法处理开放域的自然语言指令。要让 Agent 理解"帮我订一张去上海的高铁票"这样的开放指令,传统方法无能为力。
LLM 驱动时代(2020s 至今)。 转折点是 2022 年底 ChatGPT 的发布。它让人类第一次看到,LLM 能够在开放域上理解复杂的自然语言指令,并生成高质量的响应。但 ChatGPT 本身只是一个 Chatbot——它没有工具调用、没有自主规划。
真正的变革发生在 2023 年。这一年发生了三件标志性事件:
第一,OpenAI 在 GPT-4 中引入 Function Calling 能力。这是 LLM 从"会说话"到"会做事"的关键一跃。Function Calling 让 LLM 能够以结构化方式输出"调用哪个工具、传入什么参数",从而可靠地与外部世界交互。
第二,AutoGPT 项目引爆开源社区。AutoGPT 是一个让 GPT-4 自主循环执行任务的框架——给定一个目标,GPT-4 会自己规划步骤、调用工具、执行任务、反思调整。它在 GitHub 上获得了超过 10 万颗星标,让"AI Agent"这个概念进入大众视野。
第三,多个垂直 Agent 产品涌现。从代码领域的 Devin、Cody,到通用领域的 Manus、AutoGen,再到企业级的 LangChain Agents、LlamaIndex Agents,Agent 生态在短短一年内爆发式增长。
```mermaid flowchart LR A[1966 ELIZA] --> B[1990s 符号主义 Agent] B --> C[2010s 强化学习 Agent] C --> D[2022 ChatGPT] D --> E[2023 Function Calling] E --> F[2023 AutoGPT] F --> G[2024 Agent 生态爆发] ```
理解这段历史脉络很重要。它告诉我们:Agent 不是 LLM 时代的发明,而是六十多年人工智能研究的自然演进。LLM 的出现解决了"自然语言理解"这一长期瓶颈,让 Agent 第一次具备了真正与人类对话的能力。当大脑成熟之后,Agent 的爆发就成为必然。
1.6 30 行代码:搭建一个最小可运行对话程序
理论讲得再多,不如亲手跑一段代码。下面将用 30 行代码搭建一个最小可运行的 LLM 对话程序。这段程序只完成一件事——把用户输入发送给 OpenAI 的 GPT 模型,然后把模型的回复显示出来。读者可以把它当作 Agent 的"原胚":理解了它,才能理解后续章节中所有复杂框架的必要性。
首先需要准备两个东西:Python 3.8 以上环境和OpenAI API Key。API Key 可以在 OpenAI 官网注册后获取,这是调用模型所必需的凭证。出于安全考虑,不要把 API Key 直接硬编码在代码里,而是通过环境变量传入。
接