导读:构建高效的AI Agent不仅需要强大的模型,更需要合理的工作流设计。本文深度解析五种经过验证的Agent工作流模式,助你构建更智能的AI系统。
一、ReAct模式:推理与行动的循环
核心思想
ReAct(Reasoning + Acting)是最经典的Agent模式,强调边思考边行动。
工作流程
用户输入
↓
思考(Thought):我需要做什么?
↓
行动(Action):调用工具/执行操作
↓
观察(Observation):获取结果
↓
思考(Thought):基于结果,下一步做什么?
↓
...循环直到完成...
↓
最终答案
实战示例
场景:查询"2026年AI Agent市场规模,然后计算它的两倍"
Thought: 用户想知道2026年AI Agent市场规模,我需要搜索最新数据。
Action: search("2026年AI Agent市场规模")
Observation: 2026年全球AI Agent市场规模预计达到150亿美元。
Thought: 现在我需要计算150亿的两倍。
Action: calculate("150 * 2")
Observation: 300
Thought: 我已经得到了所有需要的信息,可以给出最终答案。
Final Answer: 2026年AI Agent市场规模预计为150亿美元,其两倍为300亿美元。
代码实现(LangChain)
from langchain.agents import create_react_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain.tools import Tool
from langchain import hub
# 定义工具
tools = [
Tool(name="Search", func=search, description="搜索信息"),
Tool(name="Calculator", func=calculate, description="数学计算")
]
# 创建ReAct Agent
llm = ChatOpenAI(model="gpt-4")
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 执行
result = agent_executor.invoke({
"input": "2026年AI Agent市场规模多大?然后乘以2"
})
适用场景
- ✅ 多步骤推理任务
- ✅ 需要工具调用的场景
- ✅ 结果不确定的探索性任务
二、Plan-and-Solve模式:先规划后执行
核心思想
将任务分解为明确的步骤,先制定完整计划,再按序执行。
工作流程
用户输入
↓
规划器(Planner):生成执行计划
↓
计划:[步骤1] → [步骤2] → [步骤3]
↓
执行器(Executor):按步骤执行
↓
步骤1完成 → 步骤2完成 → 步骤3完成
↓
整合结果,输出答案
实战示例
场景:"写一篇关于MCP协议的技术文章"
Plan:
1. 搜索MCP协议的基本信息和背景
2. 整理MCP的核心架构和组件
3. 撰写文章大纲
4. 撰写文章正文
5. 检查和完善
Execution:
Step 1: search("MCP协议 Anthropic Model Context Protocol")
Step 2: 整理搜索结果,提取关键点
Step 3: 生成大纲:引言-背景-架构-实战-总结
Step 4: 基于大纲撰写完整文章
Step 5: 检查语法、逻辑、完整性
代码实现
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# 规划Prompt
plan_prompt = PromptTemplate(
input_variables=["task"],
template="""将以下任务分解为具体步骤:
任务:{task}
步骤:
1. """
)
# 执行Prompt
execute_prompt = PromptTemplate(
input_variables=["plan", "step_number"],
template="""执行计划的第{step_number}步:
完整计划:{plan}
当前步骤:"""
)
plan_chain = LLMChain(llm=llm, prompt=plan_prompt)
execute_chain = LLMChain(llm=llm, prompt=execute_prompt)
# 先规划
task = "写一篇关于MCP协议的技术文章"
plan = plan_chain.predict(task=task)
# 再执行
steps = plan.split("\n")
results = []
for i, step in enumerate(steps, 1):
result = execute_chain.predict(plan=plan, step_number=i)
results.append(result)
# 整合
final = "\n\n".join(results)
适用场景
- ✅ 结构化任务(写作、编程、分析)
- ✅ 可预见步骤的确定性任务
- ✅ 需要质量控制的复杂任务
三、Multi-Agent协作模式:分工合作
核心思想
多个专业Agent分工协作,各自负责不同子任务,通过协调器整合结果。
工作流程
用户请求
↓
[协调Agent] —— 任务分解与分配
↓
├─ [研究Agent] —— 信息收集
│ ↓
├─ [分析Agent] —— 数据处理
│ ↓
├─ [写作Agent] —— 内容生成
│ ↓
└─ [审核Agent] —— 质量检查
↓
[协调Agent] —— 结果整合
↓
输出
实战示例(CrewAI)
from crewai import Agent, Task, Crew
# 定义专业Agent
researcher = Agent(
role="研究员",
goal="收集全面准确的信息",
backstory="你是一位资深技术研究员,擅长快速获取和分析信息",
tools=[search_tool, web_scraper]
)
analyst = Agent(
role="分析师",
goal="提取关键洞察",
backstory="你是一位数据分析师,擅长从信息中发现模式和趋势",
tools=[data_analysis_tool]
)
writer = Agent(
role="撰稿人",
goal="撰写高质量内容",
backstory="你是一位技术作家,擅长将复杂概念转化为易懂的文章"
)
# 定义任务
task1 = Task(
description="搜索2026年AI Agent市场规模相关数据",
agent=researcher
)
task2 = Task(
description="分析收集到的数据,提取关键趋势",
agent=analyst,
context=[task1] # 依赖task1的结果
)
task3 = Task(
description="撰写市场分析报告",
agent=writer,
context=[task1, task2]
)
# 组建团队
crew = Crew(
agents=[researcher, analyst, writer],
tasks=[task1, task2, task3],
process=Process.sequential # 顺序执行
)
result = crew.kickoff()
协作模式变体
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 顺序协作 | Agent A → Agent B → Agent C | 流水线任务 |
| 并行协作 | Agent A、B、C 同时执行 | 独立子任务 |
| 层级协作 | 协调Agent管理多个子Agent | 复杂项目管理 |
| 竞争协作 | 多个Agent提出方案,择优 | 创意生成、方案设计 |
适用场景
- ✅ 复杂项目需要多领域 expertise
- ✅ 质量要求高的任务(研究、写作、编程)
- ✅ 需要多视角审查的内容
四、Reflection模式:自我反思与优化
核心思想
Agent生成结果后,自我评估并迭代改进,直到满足质量标准。
工作流程
用户输入
↓
生成初稿(Draft)
↓
反思(Reflect):评估质量
↓
判断:是否满足要求?
↓
否 → 识别问题 → 改进 → 重新生成
是 → 输出最终版本
实战示例
class ReflectiveAgent:
def __init__(self, llm):
self.llm = llm
self.max_iterations = 3
def generate(self, prompt):
draft = self.llm.predict(f"生成内容:{prompt}")
for i in range(self.max_iterations):
# 反思
reflection = self.llm.predict(f"""
评估以下内容的质量:
{draft}
从以下维度评分(1-10):
1. 准确性
2. 完整性
3. 清晰度
4. 相关性
指出需要改进的地方:
""")
# 判断是否满足要求
if self.is_satisfactory(reflection):
return draft
# 改进
draft = self.llm.predict(f"""
基于以下反馈改进内容:
原内容:{draft}
反馈:{reflection}
改进版本:
""")
return draft
def is_satisfactory(self, reflection):
# 解析reflection,判断平均分是否>8
scores = self.extract_scores(reflection)
return sum(scores) / len(scores) >= 8
反思维度
- 事实准确性:信息是否正确
- 逻辑一致性:推理是否连贯
- 完整性:是否遗漏重要内容
- 清晰度:表达是否易懂
- 相关性:是否切题
适用场景
- ✅ 高质量内容生成
- ✅ 代码审查与优化
- ✅ 复杂问题求解
- ✅ 创意迭代
五、Tool-Use模式:工具增强的智能
核心思想
通过调用外部工具扩展Agent能力,让专业工具做专业的事。
工具类型
| 类型 | 示例 | 用途 |
|---|---|---|
| 搜索工具 | Google Search、Brave Search | 获取实时信息 |
| 计算工具 | Python REPL、Wolfram Alpha | 精确计算 |
| 数据库 | SQL、向量数据库 | 数据查询 |
| API | 天气、股票、地图 | 外部服务 |
| 代码执行 | Python、Bash | 运行代码 |
| 浏览器 | Puppeteer、Playwright | 网页交互 |
工作流程
用户输入
↓
LLM分析:需要什么工具?
↓
工具选择 → 参数生成
↓
调用工具
↓
获取结果
↓
LLM整合 → 最终回答
实战示例(Function Calling)
import json
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"},
"date": {"type": "string"}
},
"required": ["city"]
}
}
},
{
"type": "function",
"function": {
"name": "calculate",
"description": "执行数学计算",
"parameters": {
"type": "object",
"properties": {
"expression": {"type": "string"}
},
"required": ["expression"]
}
}
}
]
# 用户提问
messages = [
{"role": "user", "content": "北京今天气温多少?如果明天升温5度,明天多少度?"}
]
# 第一次调用:模型决定使用工具
response = openai.chat.completions.create(
model="gpt-4",
messages=messages,
tools=tools
)
# 模型请求调用get_weather
tool_call = response.choices[0].message.tool_calls[0]
function_name = tool_call.function.name
arguments = json.loads(tool_call.function.arguments)
# 执行工具
weather_result = get_weather(**arguments) # "25°C"
# 第二次调用:模型获得结果,计算明天温度
messages.append(response.choices[0].message)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": weather_result
})
final_response = openai.chat.completions.create(
model="gpt-4",
messages=messages,
tools=tools
)
print(final_response.choices[0].message.content)
# 输出:北京今天气温25°C,如果明天升温5度,明天将是30°C。
MCP协议:标准化的工具连接
Anthropic开源的MCP(Model Context Protocol)协议正在成为工具连接的标准:
# MCP Server示例
from mcp.server import Server
from mcp.types import Tool, TextContent
app = Server("weather-server")
@app.list_tools()
async def list_tools():
return [Tool(
name="get_weather",
description="获取天气",
inputSchema={"type": "object", "properties": {"city": {"type": "string"}}}
)]
@app.call_tool()
async def call_tool(name, arguments):
if name == "get_weather":
weather = fetch_weather(arguments["city"])
return [TextContent(type="text", text=weather)]
适用场景
- ✅ 需要实时信息的问答
- ✅ 数据查询和分析
- ✅ 代码执行和验证
- ✅ 与外部系统集成
六、模式组合与选择指南
如何选择合适的模式?
| 任务特征 | 推荐模式 | 原因 |
|---|---|---|
| 探索性、不确定 | ReAct | 边做边调整 |
| 结构化、确定性 | Plan-and-Solve | 先规划再执行 |
| 复杂、多领域 | Multi-Agent | 分工协作 |
| 高质量要求 | Reflection | 迭代优化 |
| 需要外部数据 | Tool-Use | 工具增强 |
组合使用示例
复杂写作任务:
Plan-and-Solve(规划文章结构)
↓
Tool-Use(搜索资料)
↓
Multi-Agent(研究+写作+审核Agent协作)
↓
Reflection(自我审查优化)
数据分析任务:
ReAct(探索性分析)
↓
Tool-Use(查询数据库)
↓
Reflection(验证分析结论)
七、实战建议
1. 从简单开始
不要一开始就构建复杂的多Agent系统。先从一个ReAct Agent开始,逐步增加复杂度。
2. 重视Prompt工程
Agent的行为很大程度上取决于Prompt设计。清晰的指令、明确的角色定义、具体的输出格式都很重要。
3. 设计好工具接口
工具的描述要清晰,让LLM知道什么时候该用哪个工具。参数设计要简单,减少出错可能。
4. 建立监控和日志
记录Agent的思考过程、工具调用、错误情况。这对调试和优化至关重要。
5. 考虑错误处理
Agent会犯错,设计好错误恢复机制:
- 工具调用失败的重试
- 结果不满意的重新生成
- 异常情况的人工接管
八、未来趋势
- 自适应模式选择:Agent自动判断使用哪种工作流模式
- 模式库标准化:行业形成通用的Agent模式库
- 可视化编排:拖拽式Agent工作流设计工具
- 模式优化器:AI自动优化Agent工作流
结语
掌握这五种核心模式,你就拥有了构建高效AI Agent的完整工具箱。记住,没有最好的模式,只有最适合的模式。根据任务特点灵活选择和组合,才能发挥AI Agent的最大潜力。
本文作者:AI Agent架构师
参考框架:LangChain、CrewAI、AutoGen
最后更新:2026年4月