
本文深入剖析AI Agent(智能体)的几种主流架构模式,帮助你透彻理解其运行原理。在AI发展初期,与AI对话仅停留在简单问答层面,输入输出直接对应,核心精力都聚焦在提示词工程上——目标只是让每次回答的质量更高。如今,Agent需要应对复杂任务,必须整合工具调用(tools)、记忆模块(memory)与检索增强生成(RAG)协同工作,可能是完成一项综合调研、设计长期计划,或是编写代码实现复杂功能。那种“一问一答”的简单模式显然已经无法胜任。
要实现这些高级能力,Agent需要专门的架构与流程支撑。下面介绍最常见的三种架构模式。
ReAct(Reason + Act)
ReAct是最经典的架构,非常适合搜索和问答场景。它的核心流程是:先思考推理(Reason)→ 决定调用工具(Act)→ 再根据工具返回的结果继续思考,形成循环迭代。
User Question
│
▼
+-----------+
| LLM |
| Thought |
+-----------+
│
▼
Decide Tool ?
/ yes no
│ │
▼ ▼
Call Tool Final Answer
│
▼
Observation
│
▼
Back to LLM (loop)
上图中的 loop 就是Agent内部的循环机制。通常情况下,需要给Agent设定循环次数的上限,否则可能导致失控。
Thought -> Action -> Observation -> Thought -> ...
举例说明:当你问“今天北京天气怎么样”时,Agent会进行如下思考:
Thought: 我需要查询天气
Action: weather_api("Beijing")
Observation: 25°C sunny
Thought: 已有答案
Final Answer: 北京今天25°C,晴天
代码示例如下:
while (true) {
const prompt = `Question: ${userInput}
History: ${steps}
Think step by step.
You can use tools.`
const response = await llm(prompt)
if (response.type === "tool") {
const result = await tools[response.tool](response.args)
steps.push({action: response.tool, observation: result})
} else {
return response.answer
}
}
ReAct模式的优点在于实现简单、灵活性强,可以动态扩展工具。缺点是LLM调用次数较多,循环过多时容易不受控,因此通常需要限制最大轮询次数。
Plan-and-Execute
这一模式专门用于解决复杂任务的拆解问题。首先让LLM生成整体计划,然后按照计划逐步执行(调用工具)。
User Request
│
▼
+-------------+
| Planner LLM |
+-------------+
│
▼
Task List
│
▼
+-------------+
| Executor |
| (tools) |
+-------------+
│
▼
Combine Results
│
▼
Final Answer
例如用户提出“帮我制定一个5天马来西亚的旅行计划”,LLM会先分解出详细步骤:
1. 搜索吉隆坡景点
2. 搜索槟城景点
3. 规划每天路线
4. 生成旅行文档
Agent再根据计划依次调用对应的工具执行,并记录每一步的结果:
task1 -> google search
task2 -> travel API
task3 -> LLM route planner
task4 -> PDF generator
代码示例如下:
async function createPlan(goal: string) {
const prompt = `Break the task into steps.
Task: ${goal}`
return await llm(prompt)
}
async function executePlan(plan) {
const results = []
for (const step of plan.steps) {
const result = await runStep(step)
results.push(result)
}
return results
}
const plan = await createPlan(userInput)
const result = await executePlan(plan)
return summarize(result)
Plan-and-Execute模式的优点是长任务执行稳定、结构清晰,缺点是计划可能不够完善,因此许多现代Agent在生成计划后,会允许用户自行修改再执行。
Reflection / Self-Critique
这是让Agent对自身输出进行自我审查和优化的模式,特别适合写代码、撰写论文、创作博客等场景。AI编程工具如Cursor就采用这种模式:LLM输出初稿 → 再由LLM评估 → 若质量不达标 → 修改完善。
User Task
│
▼
+----------+
|LLM Draft |
+----------+
│
▼
+----------+
| Critic |
| Review |
+----------+
│
▼
Good ? No
Yes│ │
▼ ▼
Final Answer Rewrite
│
└── loop
比如让Cursor写一段Node.js代码实现某个缓存功能:第一次生成的代码经过Critic Review,发现缺少TTL、逻辑不够清晰。拿到这些评审意见后,重写的代码就会更优。可以再次审查,但通常控制在3次以内。
let draft = await llm(task)
for (let i = 0; i < 3; i++) {
const critique = await llm(`Review this answer:
${draft}
List problems.`)
if (critique.includes("no problem")) {
break
}
draft = await llm(`Improve the answer based on critique:
${critique}
Original:
${draft}`)
}
return draft
对比
三种架构模式的对比表如下:
| 架构 | 特点 | 适用场景 |
|---|---|---|
| ReAct | 思考 + 工具循环 | 搜索、问答 |
| Plan-Execute | 任务拆解 | 长任务执行 |
| Reflection | 自我优化 | 写作、代码开发 |
组合使用
在实际生产环境中,这三种模式常常结合在一起使用。先由Planner制定计划,再通过ReAct模式执行具体步骤,最后让Reflection模块检验成果。根据不同的任务类型,这些环节可以灵活取舍。
+------------+
User Request -> | Planner |
+------------+
│
▼
+------------+
| Executor |
| (ReAct) |
+------------+
│
▼
+------------+
| Reflection |
+------------+
│
▼
Final Result
此外,还需配合记忆模块(memory)、检索增强生成(RAG)以及多样工具(tools)共同使用。整个Agent实际上是一个相当复杂的软件系统。
