【AI编程思考:第四篇】学习 Agent 框架:先理解“大脑”,再拿起“工具”
一头扎进 LangChain、LangGraph 或 AutoGen 的 API 文档,结果被各种抽象概念弄得晕头转向。
其实,框架只是“工具箱”,真正的灵魂是 Agent 内部的运行逻辑。
第一章:把顺序搞反了
- 听说某个框架很火(比如 LangChain);
- 直接照着官方 Quickstart 写代码;
- 遇到“Chain”、“Tool”、“Memory”等概念,似懂非懂;
- 调不通时,胡乱改参数,最后觉得 Agent “不智能”。
问题出在哪里?
把框架当成了“智能的来源”,而实际上,框架只是将已有的智能逻辑封装成更方便调用的接口。
真正的智能,来自你如何设计 “感知 → 思考 → 行动 → 记忆” 这个闭环。
先理解 Agent 的内部工作流(核心循环) → 再学习框架如何帮你更高效地实现这个循环。
第二章:Agent 核心循环——从提示到执行
无论使用哪个框架,任何一个自主 Agent 都逃不开下面这个 核心循环。它像人的“认知—行动”过程:
每一步
-
① 输入与感知
不仅是用户的明文问题,还包括当前环境状态(如系统时间、上一轮对话、传感器数据等)。这是 Agent 的“眼睛”。 -
② 记忆检索
从短期记忆(当前对话上下文)和长期记忆(向量数据库或知识库)中提取相关信息。这一步决定了 Agent 是否能“记得”之前的约定或常识。 -
③ 推理与规划(LLM 核心)
这是整个循环的“大脑”。大模型根据输入 + 记忆,决定:- 是否需要分解任务为多个子步骤;
- 是否需要调用外部工具;
- 以什么顺序执行。
这一步的输出通常是一个行动计划或决策指令。
-
④ 工具执行与反馈
如果决策需要外部能力(如查天气、算数学、调 API),Agent 就调用对应工具,获得结果后再回馈到推理环节。这一“思考—行动—观察”的循环(ReAct 模式)会持续,直到问题被解决。 -
⑤ 输出与记忆更新
生成最终答案,并将本次交互的关键信息存入记忆,供后续循环使用。
核心要点:整个循环是动态、可迭代的,而不是一次性的“问-答”。框架的存在,只是为了让你更规范地管理这些步骤,而不是替你“思考”。
第三章:从核心循环到框架
当你理解了上述循环后,再看主流框架,就一目了然了:
| 框架 | 核心定位 | 对循环的增强 |
|---|---|---|
| LangChain | 提供“链式”抽象,把提示、工具、记忆串成管道 | 简化步骤②③④的编排,但需要你手动定义链 |
| LangGraph | 基于图结构的状态机,支持分支、循环和复杂流控 | 让循环中的“决策分支”和“多轮迭代”可视化、可调试 |
| LlamaIndex | 专注数据检索与知识索引 | 强化步骤②(记忆检索),提供高效的向量查询 |
| CrewAI | 多 Agent 协作编排 | 将单一循环扩展为多个 Agent 各自的循环,并协调它们之间的通信 |
| AutoGen | 多 Agent 对话与动态角色扮演 | 支持多个“思考—工具”循环并发,实现复杂的谈判或合作 |
所有框架都在帮你“实现”那个核心循环,但没有哪个框架能取代你对该循环的理解。
如果不清楚某个步骤该放什么逻辑,框架只会让你更快地写出错误的代码。
第四章:学习路线图
按照“先原理,后工具”的思路,建议你按如下阶段推进:
阶段一:裸写核心循环(不用任何框架)
- 用原生 Python + 一个 LLM API(如 OpenAI),手动实现:
- 维护
messages列表作为短期记忆; - 用
if-else或简单的函数调用模拟工具; - 写一个
while循环,直到模型输出final_answer标记。
- 维护
- 目的:亲手感受每一步的“体力活”,体会状态管理的复杂性。
阶段二:用 LangChain 重构
- 将你的手动代码换成
ChatPromptTemplate、Tool、Memory等组件。 - 惊喜地发现:LangChain 只是把之前手写的样板代码封装得更优雅了。
阶段三:遇到分支/循环逻辑时,引入 LangGraph
- 当 Agent 需要“如果工具返回错误,则重试”或“并行调用多个工具”时,LangGraph 的图结构会让你事半功倍。
阶段四:按场景选择其他框架
- 如果要做多 Agent 协作,再去看 CrewAI 或 AutoGen,此时你已能快速理解它们的“循环编排”本质。
第五章:把框架当作“生产力工具”,而不是“智囊”
最后,请牢记这个心态转换:
- ❌ 错误认知:“用了 LangChain,我的 Agent 就自动变聪明。”
- ✅ 正确认知:“LangChain 帮我省去了写重复胶水代码的时间,让我能专注于设计更好的提示词、工具和记忆策略。”
框架再强大,也无法弥补你对任务拆解、错误处理、上下文管理这些底层逻辑的忽视。
当把框架当作 “可替换的变速箱”,而把核心循环当作 “发动机” 时,你才会真正拥有驾驭任何 Agent 框架的能力。
下一步行动:关掉框架文档,打开一个 Python 文件,用 50 行代码写一个“能查天气并记住历史”的简易 Agent。等你跑通那一刻,再打开 LangChain 的文档——你会发现自己已经看懂了 80% 的内容。
更多推荐
所有评论(0)