






















很多人第一次接触AI Agent,会有一种类似"读医学教材"的困惑:单词都认识,但读完不知道在讲什么。
"规划"、"记忆"、"工具调用"、"ReAct框架"……这些词经常一起出现,但彼此的关系说不清楚,看起来像是四套不同系统硬拼在一起。
这篇文章,我想把这四个东西的逻辑关系说透。它们不是并列的,更不是相互独立的——它们是一个系统的四个层次,缺一不可。
假设你是一个活动策划,今天接到任务:为公司200人年会设计一个方案,三天后汇报。
你会怎么做?
你就是一个Agent。 规划、记忆、工具、执行循环,这四件事你每天都在做,只是不叫这个名字。
现在,OpenAI前安全主管Lilian Weng在她的著名博文《LLM Powered Autonomous Agents》中,把这个过程精确地映射到了AI Agent的架构上。
规划,是把一个复杂任务拆成可执行的子任务序列的过程。
听起来简单,但这恰恰是大模型出现之前的Agent最难做到的事。传统AI要么死守规则,遇到没见过的情况就不知所措;要么只会反应式处理,根本没有"先想清楚再行动"的能力。
大模型改变了这一点。它有两类关键的规划技术:
任务分解
思维链(CoT):让模型"一步一步地思考"。这不是一个特殊功能,而是一种提示技巧——在提示词里加上"请一步一步推理",模型就能把隐式的推理过程显式化,把大任务自然分解成小步骤。
思维树(ToT):CoT的升级版。CoT是一条线,ToT是一棵树——每一步都探索多种可能性,用广度优先或深度优先搜索来找最优路径。复杂问题用CoT可能走进死路,ToT能回溯重试。
自我反思
规划不是一次性的,好的Agent要能"反思自己的决定"。这里有三个框架很重要:
这三者的共同点:Agent不再是一次性给出答案的机器,而是有了迭代和进化的能力。
这是最容易被忽略,却极其重要的部分。
很多人以为大模型"天生有记忆",或者"记忆就是上下文窗口"。其实,大模型的记忆有四种不同的机制,每种来源不同、作用不同:
第一种:预训练记忆(参数记忆)
这是大模型最"深层"的记忆。GPT-4在训练时看过互联网上海量的文本,这些知识被压缩进了数十亿个神经元权重里。它"知道"水是湿的、合同有法律效力、Python用缩进控制结构——这些不需要任何提示,是天生就有的。
但这种记忆有一个关键缺陷:一旦训练完成,就固定了。 今天发生的新闻、你公司内部的数据,它一概不知。
第二种:上下文记忆(短期记忆)
这就是你和大模型对话时的"当前窗口"。把历史对话全部塞进prompt,模型就能"记住"前面说了什么。这属于提示工程的范畴。
局限也很明显:上下文窗口有限,长对话后早期内容会被截断或遗忘。用人类来比喻,这就是"工作记忆"——容量有限、不持久。
第三种:微调记忆(长期参数记忆)
在更具体的数据集上进一步训练模型,让它"专精"某个领域。比如把大量医疗病历喂给模型做微调,它在医疗问答上的表现就会显著提升。
这种方式成本高、周期长,适合垂直场景的深度定制,不适合频繁更新知识。
第四种:外部记忆系统(向量数据库)
这是给大模型加"外挂第二大脑"的方式,也是RAG(检索增强生成)技术的核心。
把大量文档、知识库、历史记录向量化存储,每次对话时先检索相关内容塞进上下文,模型就能"参考"远超上下文窗口的外部知识。
想象一下:一个法律AI Agent,它的"脑子"里不仅有预训练的法律常识,还能实时检索最新的法律法规数据库。这就是外部记忆的价值。
四种记忆的关系:
| 记忆类型 | 容量 | 更新速度 | 持久性 |
|---|---|---|---|
| 预训练 | 极大 | 极慢(重训) | 永久 |
| 上下文 | 有限 | 实时 | 会话内 |
| 微调 | 较大 | 慢(重训) | 永久 |
| 外部系统 | 无限 | 实时 | 持久 |
真正强大的Agent,需要把这四种记忆协同使用。
这是Agent与ChatGPT最本质的差别。
ChatGPT只有一颗大脑,它能说、能想,但它的世界终结于对话框。没有工具调用能力的AI,再聪明也只能"想",不能"做"。
工具调用让Agent有了"手脚":
举个实际例子。假设Agent接到任务:"帮我找到今天北京最便宜的一束玫瑰花,并估算一下100元预算能买几束。"
没有工具的模型:凭训练数据里的"记忆"给出一个可能严重过时的价格。
有工具的Agent的执行路径:
这两者的差距,不是"准不准"的问题,而是"能不能做到"的问题。
工具调用的挑战在于:
这些问题,恰好是ReAct框架要解决的。
ReAct(Reasoning + Acting)是2022年由Shunyu Yao等人在论文中提出的框架,发表于ICLR 2023。
它的核心思想极其简洁:把推理和行动交织在一起,形成循环。
ReAct的循环只有三步:
思考(Thought)→ 行动(Action)→ 观察(Observation)→ 思考……
每一轮:
然后把"观察"的结果输入下一轮"思考",循环往复,直到任务完成。
这个循环有多重要?
来看一段真实的Agent执行过程(书中原文):
问题:当前Agent最新研究进展是什么?
思考:我需要搜索关于Agent的最新研究
行动:Search("Agent最新研究进展")
观察:[搜索结果:多篇论文摘要...]
思考:搜索结果提到了AI对齐,我需要更多信息
行动:Search("Agent AI alignment 2024")
观察:[更多搜索结果...]
思考:现在我掌握了足够信息
最终答案:多Agent强化学习、AI对齐等领域已取得重大进展...
注意:相同的问题,Agent两次运行给出了不同的搜索策略和不同的答案。 这不是bug,这是Agent在动态地"思考"如何解决问题。它不是硬编码的流程,而是实时推理的产物。
这正是ReAct框架的精髓:操作的序列不是硬编码在代码里的,而是由大模型实时决定的。 这是AI自主决定应用程序逻辑的新编程范式。
现在把四件事放在一起看:
用户输入任务
↓
[规划] 大模型分析任务,制定执行计划
↓
[记忆] 检索相关历史信息和外部知识
↓
[ReAct循环]
思考 → 行动(调用工具) → 观察结果 → 思考 → ...
↓
任务完成,输出结果
↑
[记忆] 将本次交互结果存入记忆系统
用书中KwaiAgents项目的架构来描述:
这七步,就是一个完整的Agent工作循环。
ReAct是最主流的,但不是唯一的。书中还介绍了几个值得了解的框架:
函数调用(Function Calling):OpenAI提出的方式。大模型作为"调度中心",直接调用预定义的函数。比ReAct更结构化,适合与现有系统深度集成。
计划与执行(Plan-and-Execute):先完整规划所有步骤,再统一执行。ReAct是边想边做,这个是先想好再做。适合确定性高、步骤清晰的复杂任务。
自问自答(Self-Ask):让大模型对自己的问题提出追问,层层深入。适合需要多角度分析的复杂查询。
批判修正(Critique-Revise):也叫Self-Reflection。模型先输出,再批判自己的输出,再修正,循环直到满意。适合创作、分析类任务。
思维链 / 思维树(CoT / ToT):前文已讲,线性推理 vs. 树状搜索,复杂度越高越倾向用ToT。
选哪种框架,取决于任务类型和环境确定性。没有最好的框架,只有最合适的框架。
理论说够了,来看代码。
书中用LangChain + OpenAI + SerpApi,实现了一个会自主搜索并总结"Agent最新研究进展"的Agent。核心逻辑不超过50行:
from langchain import hub
from langchain_openai import OpenAI
from langchain_community.utilities import SerpAPIWrapper
from langchain.agents.tools import Tool
from langchain.agents import create_react_agent, AgentExecutor
# 1. 获取ReAct提示模板(来自LangChain Hub社区)
prompt = hub.pull("hwchase17/react")
# 2. 创建大模型实例(推理引擎)
llm = OpenAI()
# 3. 定义工具(Agent的手脚)
search = SerpAPIWrapper()
tools = [Tool(
name="Search",
func=search.run,
description="当大模型没有相关知识时,用于搜索知识"
)]
# 4. 构建ReAct Agent
agent = create_react_agent(llm, tools, prompt)
# 5. 创建执行器并运行
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.invoke({"input": "当前Agent最新研究进展是什么?"})
五步,每一步对应一个要素:
hub.pull:加载ReAct框架的提示(规划指南)OpenAI():推理引擎(大脑)Tool(Search...):工具(手脚)create_react_agent:把三者组合成一个AgentAgentExecutor.invoke:触发ReAct循环,自主完成任务最关键的是这个ReAct提示模板。 它的内容大致是:
尽你所能回答以下问题。你可以使用以下工具:{工具列表}
请按格式回答:
问题:{输入问题}
思考:你应该思考接下来怎么做
行动:从工具列表中选一个
行动输入:工具的输入参数
观察:工具的执行结果
...(可重复N次)
思考:我现在知道答案了
最终答案:最终答案
正是这个提示,让大模型从"生成文本的模型"变成了"遵循ReAct框架思考并行动的Agent"。 提示工程的价值,在这里体现得淋漓尽致。
我们来把整篇文章做一个收束。
Agent的四大要素——规划、记忆、工具、执行——本质上对应了人类完成复杂任务的四种能力:
这四者缺一不可。一个没有规划的Agent,面对复杂任务只会乱撞;一个没有记忆的Agent,每次都从零开始;一个没有工具的Agent,只能说不能做;一个没有执行反馈的Agent,永远不知道自己做对了没有。
更重要的是:这个架构不是一成不变的。 随着大模型能力提升、工具生态完善,Agent的边界会持续扩展。从今天的"会搜索会调API",到未来的"会操控机器人、会管理企业流程",走的是同一条路。
理解这个底层架构,你才能判断一个"Agent产品"到底做到了几层,哪里是真正的壁垒,哪里还有空白。
那才是这件事真正有意思的地方。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。