如果 LLM 是 AI 的大脑,那么规划、记忆与工具使用就是它的"心智能力",让它从对话机器人成长为真正的智能协作者。
在上一篇文章中,我们讨论了 AI Agent 的基本概念与趋势 。今天,我们将深入 Agent 的核心架构,解析其三大关键组件:规划、记忆与工具使用。正是这些组件的协同工作,使 Agent 能够自主思考、持续学习并调用外部工具完成任务。
本文基于 OpenAI 研究主管 Lilian Weng 提出的"Agent = LLM + 记忆 + 规划 + 工具使用"框架,结合最新技术进展,为你系统解析每个组件的实现原理与实践方法。
一、规划:Agent 如何"想"问题?
规划是 Agent 的"思考系统",它不只是简单拆分任务,更是策略评估、路径选择与动态调整的综合能力。
1. 任务分解与思维链(CoT)
CoT(Chain-of-Thought)通过引导模型"逐步思考",将复杂任务分解为可执行的子步骤。例如:
text
用户目标:写一篇 AI 发展趋势报告
CoT 分解:
1. 调研当前主流 AI 模型
2. 分析技术突破点
3. 整理行业应用案例
4. 撰写结构化内容
5. 校对与优化
2. 思维树(ToT)与策略搜索
ToT 在 CoT 基础上引入多路径推理,形成树状思考结构,支持广度优先或深度优先搜索,提升复杂问题的解决能力。
python
# 伪代码示例:思维树任务展开
def tree_of_thoughts(task, depth=3):
if depth == 0:
return execute(task)
subtasks = generate_subtasks(task)
for sub in subtasks:
tree_of_thoughts(sub, depth-1)
3. ReAct:推理与行动的融合
ReAct(Reason + Act)框架让 Agent 在思考的同时调用工具,形成"思考→行动→观察→再思考"的闭环。
text
ReAct 流程:
Thought: 我需要查询今天北京的天气。
Action: 调用天气API(beijing)
Observation: 北京今天晴天,25°C
Thought: 天气不错,建议用户外出。
Action: 输出建议
4. Reflexion:自我反思与迭代优化
Reflexion 让 Agent 具备"自我评估"能力,通过反思历史行动,纠正错误并优化后续决策。
正如人类"三思而后行",Reflexion 使 Agent 在关键决策前进行高阶抽象思考,提升任务完成质量。
二、记忆:Agent 如何"记住"与"回忆"?
记忆是 Agent 的"经验库",分为短期记忆与长期记忆,支持上下文理解与个性化响应。
记忆类型对比
| 类型 | 对应技术 | 作用 | 限制 |
|---|---|---|---|
| 感觉记忆 | 多模态输入处理 | 接收原始文本、图像、语音输入 | 仅临时存储 |
| 短期记忆 | 上下文窗口(如 128K tokens) | 支持当前任务推理 | 受长度限制 |
| 长期记忆 | 向量数据库 + 检索系统 | 存储历史交互、用户偏好、知识库 | 需高效检索 |
记忆流与检索机制
记忆流(Memory Stream)记录 Agent 的所有经历,检索时综合三个维度打分:
-
近期性:越近的记忆权重越高
-
重要性:核心事件(如项目结论)分数更高
-
相关性:与当前任务最相关的记忆优先召回
python
# 记忆检索伪代码
def retrieve_memory(query, memory_stream):
scores = []
for memory in memory_stream:
score = recency(memory) * 0.4 + \
importance(memory) * 0.3 + \
relevance(memory, query) * 0.3
scores.append((memory, score))
return top_k(scores, k=5)
三、工具使用:Agent 如何"动手"执行?
工具使用是 Agent 的"手脚",通过调用外部 API、执行代码、操作软件来突破纯文本的限制。
1. MRKL 系统:模块化专家调用
MRKL(Modular Reasoning, Knowledge and Language)系统将任务路由给最适合的专家模块,例如:
-
数学计算 → 计算器模块
-
天气查询 → 天气 API
-
数据分析 → Python 执行环境
2. 工具学习框架:TALM 与 Toolformer
这类框架通过微调 LLM,使其学会何时及如何调用工具。例如 Toolformer 通过 API 调用注释数据训练模型,显著提升输出质量。
3. ChatGPT 插件与函数调用实践
OpenAI 的插件系统是工具使用的典型落地场景。例如:
text
用户:总结今天关于 AI 的新闻
Agent 执行:
1. 调用浏览器插件搜索“AI news today”
2. 抓取前三篇文章
3. 调用摘要生成工具
4. 返回简洁报告
四、实战示例:构建一个研究助手 Agent
假设我们要构建一个能自动搜集资料并撰写摘要的 Agent:
python
# 伪代码框架
class ResearchAgent:
def __init__(self, llm, memory_db, tools):
self.llm = llm
self.memory = memory_db
self.tools = tools # 搜索、摘要、文档写入等
def run(self, topic):
# 规划阶段
plan = self.llm.generate_plan(topic)
# 执行阶段
for task in plan:
if task == "search":
results = self.tools["search"](topic)
self.memory.save("search_results", results)
elif task == "summarize":
content = self.memory.retrieve("search_results")
summary = self.tools["summarize"](content)
self.memory.save("final_summary", summary)
elif task == "write":
summary = self.memory.retrieve("final_summary")
self.tools["write_doc"](summary)
return self.memory.retrieve("final_summary")
五、未来展望:组件协同与系统集成
当前 Agent 系统的挑战仍存:
-
规划可靠性:长链任务中错误累积
-
记忆一致性:长期记忆与短期上下文如何无缝衔接
-
工具安全性:自主调用 API 的风险控制
然而,随着 LangChain、AutoGPT、CrewAI 等开源框架的成熟,组件间的集成越来越标准化。未来,我们有望看到:
-
可编排的 Agent 工作流
-
记忆与工具的市场化插件
-
低代码 Agent 构建平台
最终,一个真正成熟的 Agent 系统,将是规划、记忆、工具使用与 LLM 大脑的有机融合,形成一个能自主进化、安全可靠、与人协同的智能实体。
六、学习资源推荐
-
📚 论文与文章:
-
🛠 开源项目:
-
🔧 实践工具:
-
OpenAI Functions Calling
-
ChatGPT Plugins
-
Vector Databases: Pinecone, Weaviate, Qdrant
-
本文是"AI Agent 深度解析"系列的第二篇,后续将深入讲解 8 个一流 Agent 项目实战 。
如果你对某个组件或项目特别感兴趣,欢迎在评论区留言,我将根据反馈优先撰写相关专题!
关注我,一起探索 AI Agent 的构建之道,从小白到架构师,你我同行。
声明 :本文部分示意图与示例为便于理解进行简化,实际实现需结合具体框架与业务逻辑。
首发于 CSDN,转载请标注来源与作者信息。