五大主流 Agent 架构模式详解

1 ReAct

摘要:本文系统梳理了五种主流 Agent 架构模式:ReAct(思考-行动-观察循环)、Plan & Execute(规划与执行分离)、Multi-Agent(多智能体协作)、RAG + Agent(检索增强型 Agent)以及 Tool Use / Function Calling(工具调用)。每种模式均从核心思想、工作流程、代码示例、适用场景等维度展开,帮助读者快速理解不同架构的设计理念与选型依据。

1.1 核心思想

让模型在**思考(Thought)→ 行动(Action)→ 观察(Observation)**之间循环,直到得出最终答案。
未完成
得出答案
用户输入
Thought 思考
Action 行动
Observation 观察
Final Answer 最终答案

1.2 例子

用户:"北京今天天气怎么样,适合跑步吗?"

Thought 1: 我需要查询北京今天的天气数据。
Action 1: search("北京今天天气")
Observation 1: 北京今天晴,气温 22°C,PM2.5 35,微风。

Thought 2: 天气不错,但还需要判断是否适合跑步。
Action 2: 根据数据直接推理。
Observation 2: 气温适宜,空气质量良好。

Final Answer: 今天适合跑步,建议早晨 7-9 点出门。

1.3 核心优势

  • 推理过程完全透明,便于调试。
  • 中间步骤可被人工干预。
  • 失败时容易定位是哪一步的问题。

1.4 核心缺陷

  • 没有全局规划,容易陷入局部循环。
  • Token 消耗随步骤线性增长。
  • 工具调用失败时恢复能力弱。

1.5 代码示例(LangChain)

python 复制代码
from langchain.agents import create_react_agent, AgentExecutor
from langchain import hub

# 拉取标准 ReAct prompt 模板
prompt = hub.pull("hwchase17/react")

tools = [search_tool, calculator_tool]
agent = create_react_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
executor.invoke({"input": "上海今天天气适合跑步?"})

用户输入 → 思考 → 行动 → 观察 → 思考 → 输出最终答案。

典型实现是 LangChain 的 AgentExecutor。

1.6 适用场景

信息检索、问答系统、简单任务自动化。

2 Plan & Execute(规划 + 执行)

2.1 核心思想

将"想清楚做什么"和"执行"彻底拆开,由两个不同的角色承担。
用户任务
Planner 规划器
全局计划
Executor 执行器
子任务 1
子任务 2
子任务 3
结果汇总
最终输出

2.2 角色分工

角色 Planner(规划器) Executor(执行器)
模型 使用强模型(如 Claude Opus 4.7) 可用较弱模型(如 Claude Sonnet 4.6 / GPT-4 / Gemini 3.1)
职责 一次性生成全局计划 逐步执行每个子任务
说明 负责任务分解与顺序 负责单步工具调用

(注:模型选择应结合实际任务复杂度和成本控制。)

2.3 适用场景

需要 10+ 步骤的复杂任务、研究报告生成、软件项目自动化。

3 Multi-Agent(多智能体协作)

3.1 核心思想

单个 Agent 能力有限,多个专职 Agent 分工合作,由 Orchestrator 统一调度。
用户
Orchestrator 总调度
Research Agent

搜索与检索
Code Agent

编写与运行代码
Data Agent

数据分析
Writer Agent

生成报告
汇总结果
最终输出

3.2 两种协作拓扑

① 中心化(Hub & Spoke)--- 最常见

复制代码
用户
 └→ Orchestrator(总调度)
       ├→ Research Agent   [负责搜索、检索]
       ├→ Code Agent       [负责写代码、运行]
       ├→ Data Agent       [负责数据分析]
       └→ Writer Agent     [负责生成报告]

② 去中心化(Pipeline 流水线)

复制代码
用户 → Agent A → Agent B → Agent C → 输出
        ↑____________反馈循环____________↓

3.3 适用场景

软件开发自动化(写代码→测试→修复)、复杂研究、客服系统。

4 RAG + Agent(检索增强型 Agent)

4.1 核心思想

Agent 不依赖模型内部知识,而是按需从外部知识库动态检索,将检索作为一种特殊 Tool。


不够
足够

用户问题
Agent 判断
需要检索?
检索知识库 A

产品文档
检索知识库 B

历史工单
结果足够?
重写查询词
汇总多源结果
生成答案
直接推理

4.2 两种检索策略对比

① Naive RAG(简单版)

复制代码
问题 → 向量检索 → Top-K 文档 → 直接注入 Prompt → 生成答案
问题:检索一次,质量完全依赖第一次召回

② Agentic RAG(Agent 版)

复制代码
问题 → Agent 判断:需要检索哪些内容?
         ├→ 检索知识库 A(产品文档)
         ├→ 检索知识库 B(历史工单)
         └→ 检索不够?→ 重写查询词 → 再次检索
                ↓
         汇总多源结果 → 生成答案

4.3 核心组件

python 复制代码
from langchain.tools.retriever import create_retriever_tool

# 将向量检索包装成 Tool
retriever_tool = create_retriever_tool(
    retriever=vectorstore.as_retriever(search_kwargs={"k": 5}),
    name="knowledge_base_search",
    description="搜索产品知识库,当需要回答产品相关问题时使用"
)

# Agent 自主决定何时调用检索
agent = create_react_agent(llm, tools=[retriever_tool, ...], prompt=prompt)

5 Tool Use / Function Calling

5.1 核心思想

模型原生支持结构化输出工具调用参数,不依赖 Prompt 工程解析。


用户输入
LLM 模型
是否需要工具?
结构化工具参数
并行调用工具
get_weather 北京
get_weather 上海
get_weather 广州
汇总结果
生成最终回答

5.2 工具定义规范

python 复制代码
tools = [
    {
        "name": "get_weather",
        "description": "获取指定城市的实时天气信息",
        "input_schema": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "城市名称"},
                "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
            },
            "required": ["city"]
        }
    }
]

5.3 并行工具调用(重要优化)

python 复制代码
# 模型可以一次返回多个工具调用,并行执行提升效率
# 示例:同时查询多个城市天气,而非串行

response.content = [
    ToolUse(name="get_weather", input={"city": "北京"}),
    ToolUse(name="get_weather", input={"city": "上海"}),  # 并行!
    ToolUse(name="get_weather", input={"city": "广州"})
]
相关推荐
Ai-_Man2 小时前
希望大家能推荐一款软件,可以直接把文心生成的代码变流程图,提高办公效率
人工智能·ai·小程序·流程图
AI绘画哇哒哒7 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
QN1幻化引擎7 小时前
DalinX Phi 性能突破:跨层秩保持对齐与意识涌现度量的实证研究
人工智能·ai·架构·agi·asi
龙兵AI增长破局圈.赵老师讲成交7 小时前
只有把过程管好,结果才会出来。
大数据·人工智能·ai·创业创新
最强小杰7 小时前
gpt-5.6-sol 频繁报 503 怎么办?区分容量熔断和限速 429 的排查方法 + 可复用 retry wrapper
java·人工智能·gpt·ai
你是一个铁憨憨8 小时前
从 GIS 到 Spatial Agent:MCP 如何重新定义 GIS 的 AI 入口
arcgis·ai·agent·mcp·spatial
用户38845671995413 小时前
LangChain 源码解析:HumanInTheLoopMiddleware 如何实现 Agent 人机协同
langchain
奇牙coding12314 小时前
gpt-5.6-luna 频繁 429 但 gpt-5.5 正常怎么办?不是配额问题,是 luna 独立的并发 session 限速桶
gpt·ai
安逸sgr14 小时前
AI 应用怎么评测?离线评测、人工评估和线上反馈如何结合?
人工智能·ai·大模型·agent·智能体
l12586514 小时前
# RAG向量数据库优化实战:HNSW索引调参与生产级性能设计
数据库·python·mysql·langchain