AI 基础进阶 · Agent 工程
Agent 架构详解:ReAct、Function Calling、规划、记忆与多智能体
入门课讲了"Agent = LLM + 规划 + 工具 + 记忆"的直觉,这一课往下钻一层:ReAct 循环具体怎么转、函数调用那段 JSON 长什么样、Planning 怎么拆任务、Memory 分哪三层、多个 Agent 又怎么组队。看懂这五块,你就能动手搭一个能跑的 Agent。
① 本章怎么学(4 步走,约 60 分钟)
1ReAct 循环(12 分钟)
读②:想-做-看-再想。
2Function Calling(13 分钟)
读③:结构化 JSON 调用。
3规划与记忆(18 分钟)
读④⑤:拆任务、三层记忆。
4多智能体+自测(17 分钟)
读⑥⑦⑧,做折叠题。
本章小目标学完你要能:① 画出 ReAct 的思考-行动-观察循环;② 看懂一段工具调用 JSON;③ 说出短期/长期/实体三种记忆;④ 讲清 AutoGen/CrewAI 这类多智能体是怎么分工的。
② ReAct 模式:想一步、做一步、看结果
ReAct = Reasoning(推理)+ Acting(行动)。它把大模型的输出拆成两类交替出现的步骤:
Thought思考
模型用大白话想:现在到哪一步了、下一步该干嘛。
Action行动
调用某个工具(搜索/计算/查库)。
Observation观察
把工具返回的结果读进来,作为下一轮思考的输入。
如此 Thought → Action → Observation → Thought → … 循环,直到模型认为任务完成,给出最终答案。关键:每一步都基于上一步真实观察到的结果,而不是凭空一路编到底,这就是它比"一次性长输出"更靠谱的原因。
读法:思考完就行动,行动完看结果,看完成果再思考,循环到任务完成。
③ Function Calling:模型输出一段结构化 JSON
Function Calling 不是让模型真的执行代码,而是让它按约定格式吐出一段 JSON,告诉你"我要调哪个工具、参数填什么"。真正执行的是你的程序。
典型的工具调用请求长这样:
{
"name": "search_flights",
"arguments": {
"from": "南京",
"to": "上海",
"date": "下周三"
}
}
你的程序读到这段 JSON,真的去调订票 API,再把结果塞回下一轮 prompt。这样模型负责"决策",程序负责"执行",接口固定、可校验、不会乱跑代码。
为什么要结构化输出自由文本不可控、容易乱;固定 JSON schema 可以做参数校验、类型检查、错误重试,生产环境才敢用。
④ Planning 规划:把大目标拆成小任务
面对"帮我做一份上月销售分析报告"这种大目标,Agent 不能一上来就写,得先规划。常见两种策略:
| 策略 | 怎么做 | 特点 |
| 任务分解 | 把大目标拆成一串子任务清单(拉数→统计→画图→写稿) | 全局清楚,但开头计划可能跑偏 |
| 反思 Reflexion | 做完一步自己挑毛病、纠正再重来 | 边走边修,灵活但更费 token |
进阶做法是 Plan-and-Execute:先让规划者列出完整待办,再派执行者逐个干,中间用反思节点检查质量。
⑤ Memory 记忆:短期、长期、实体三层
| 记忆层 | 存什么 | 怎么实现 |
| 短期上下文 | 本次对话/任务的最近几步 | 直接放 prompt 里,受上下文窗口限制 |
| 长期向量记忆 | 跨会话的历史资料、文档 | Embedding 存向量库,用时 RAG 检索 |
| 实体记忆 | "用户姓张、公司在南京"这类关键事实 | 结构化存进知识库/数据库,随时取用 |
为什么需要这三层上下文窗口装不下所有历史;全塞进 prompt 又贵又超限。短期装"正在干的事",长期用检索按需调取,实体记忆专门记那些反复要用的关键事实。
⑥ Multi-Agent 多智能体:组队干活
一个 Agent 干不过来时,就派多个分工。AutoGen、CrewAI 是两个最常见的多智能体框架:
Manager管理者
拆任务、派活、验收(Planner/Lead)。
Worker执行者
写代码、查资料、写初稿。
Reviewer审查者
挑错、改稿、把关质量。
它们像一个小团队:Manager 说"先调研、再写、再审",Worker 之间互相交接结果,Reviewer 打回不合格的环节。AutoGen 强调"多个 Agent 用对话协商",CrewAI 强调"角色 + 任务 + 流程"的流水线分工。
⑦ 三个例子
例 1 · ReAct 解一道数学题
问:"一个水池,进水管 3 小时满,出水管 5 小时空,同时开几小时满?"
Thought:这是工程问题,要算净进水速度。Action:调 calculator(1/3 - 1/5)。Observation:得到 0.133。Thought:满池水需 1/0.133≈7.5 小时,给出答案。
例 2 · 函数调用订天气
用户问"南京明天天气"。
模型输出 {"name":"get_weather","arguments":{"city":"南京","date":"明天"}},程序真去调天气 API,拿到"多云 26℃"喂回模型,模型再组织成人话回答。
例 3 · 多智能体写一篇技术稿
要写一篇"如何搭 RAG"的教程。
Manager 拆成调研→写初稿→审稿三步;Researcher 上网查资料,Writer 写初稿,Reviewer 挑错打回,Writer 再改,循环到通过。
⑧ 易错提醒
易错 1:以为 Function Calling 会在模型里执行代码模型只输出"调谁、参数是啥"的 JSON,执行权在你的程序。别把"决定调用"当成"已经执行"。
易错 2:把长期记忆等同于"把所有历史塞进 prompt"不对。上下文窗口有限且贵,长期记忆靠向量库 RAG 按需检索,只把相关片段捞进来。
易错 3:以为多智能体一定比单智能体强多一个 Agent 就多一轮对话和 token 消耗,还可能互相"甩锅"、绕圈子。简单任务单 Agent 更快更省,只有复杂到需要分工时才组队。
⑨ 折叠自测(点开即答)
基础1ReAct 由哪两个词组成,循环里有哪三个角色?
Reasoning(推理)+ Acting(行动)。循环为 Thought(思考)→ Action(行动/调工具)→ Observation(观察结果)→ 再思考。
中档2Function Calling 时,真正执行工具的是谁?模型输出的是什么格式?
真正执行的是外部程序;模型只输出一段结构化 JSON,说明要调哪个工具(name)和参数(arguments),程序执行后把结果喂回模型。
拔高3Agent 的记忆为什么要分短期/长期/实体三层?
短期上下文装"正在干的事"但受窗口限制;长期资料用向量库 RAG 按需检索,避免全塞 prompt;实体记忆结构化保存"用户是谁、关键事实"这类反复要用的信息。三层各管一段,又省又准。
⑩ 费曼三问(合上讲,自己讲给自己听)
用大白话回答,讲不顺就是没懂
问 1:ReAct 和"让模型一口气写到底"比,为什么更靠谱?
问 2:你让 Agent 查天气,它输出的那段 JSON 是谁写的、谁执行的?
问 3:什么情况下值得上多智能体,什么情况下单 Agent 就够?
ReAct:Thought→Action→Observation 循环 想一步做一步看结果
Function Calling:模型吐 JSON,程序真执行 它决策,你执行
Planning:任务分解 + 反思纠正 先拆清单再干
Memory:短期上下文 / 长期向量 / 实体事实 三层分工
多智能体:Manager+Worker+Reviewer 组队 AutoGen/CrewAI
⚡ 高频 FAQ
问:Agent 会自己写代码执行吗?不会自动乱执行。Function Calling 只输出 JSON,真正执行的是你写的程序,权限由你控制。
问:记忆是不是越大越好?不是。全塞 prompt 又贵又超限,靠 RAG 按需检索相关片段才是正解。
问:AutoGen 和 CrewAI 怎么选?想让多 Agent 自由对话协商用 AutoGen;想按角色+任务流水线分工用 CrewAI。
📖 名词速查
| 名词 | 大白话 |
| ReAct | Reason+Act,想一步做一步看结果的循环 |
| Thought/Action/Observation | 思考/行动/观察三个角色 |
| Function Calling | 模型输出结构化 JSON,程序去执行 |
| Planning | 把大目标拆成小任务清单 |
| Reflexion 反思 | 做完自己挑毛病、再改 |
| RAG 向量记忆 | 把历史文档向量化,用时检索 |
| Multi-Agent | 多个 Agent 分工组队干活 |
🧪 动手实验建议
1写个 ReAct 循环
用一段 Python 实现 Thought→Action→Observation。
2接一个工具
让模型输出 JSON 调一个计算器函数。
3试 CrewAI
搭一个"调研+写稿"两角色的小团队。
观察重点单 Agent 一步到位容易瞎编;加了观察和工具调用后,它会基于真实返回继续。
🔁 5 天复习计划
| 天 | 任务 | 自检 |
| 第 1 天 | 读②③,理清 ReAct 循环与 Function Calling | 画出 Thought→Action→Observation 环 |
| 第 2 天 | 读④⑤,搞清 Planning 与三层记忆 | 说清短期/长期/实体各管什么 |
| 第 3 天 | 读⑥⑦,理解多智能体分工与三例子 | 讲出 Manager/Worker/Reviewer 职责 |
| 第 4 天 | 读⑧易错,做⑨折叠自测 | 三题全对,分清谁决策谁执行 |
| 第 5 天 | 合上讲⑩费曼三问,不看资料讲一遍 | 三问都能举例 |
三句口诀① ReAct 想一步做一步看一步;② 函数调用模型吐 JSON、程序真执行;③ 记忆分三层,复杂任务才上多智能体。
📌 知识链路
前置知识(先学)先有一个会对话的大模型,再懂 RAG(检索增强),最后才给它装上"手和脚"变成 Agent。
本节位置把前面零散的零件(模型、工具调用、记忆)组装成一个能自主干活的闭环系统。
下一步(学完去)回到主流模型全景,看各家模型在 Agent 能力上的差异,再选一个动手搭第一个 Agent。