多Agent协作架构:从单Agent到智能体网络
为什么需要多Agent协作
单Agent在复杂任务面前有明显局限:超过5步后准确率骤降、长任务耗尽context、20+工具时选择困难、一个幻觉就全盘错。多Agent协作通过角色分工、独立上下文、交叉验证、独立迭代解决这些问题。
三大主流框架对比
LangGraph:图驱动的精确控制
核心思想:一切皆节点,一切皆边。用显式状态机精确控制每一步。支持循环、条件分支、并行执行。内置checkpoint持久化,支持断点续跑。适合企业级复杂流程,但学习曲线陡峭。
from langgraph.graph import StateGraph, END
graph = StateGraph(AgentState)
graph.add_node("planner", plan_task)
graph.add_node("researcher", research)
graph.add_node("writer", write_content)
graph.add_node("reviewer", review)
graph.add_conditional_edges("planner", route_to_agent, {
"research": "researcher", "write": "writer"
})
graph.add_edge("researcher", "writer")
graph.add_edge("writer", "reviewer")
graph.add_conditional_edges("reviewer", should_revise, {
"revise": "writer", "done": END
})
app = graph.compile()
CrewAI:角色驱动的团队协作
模拟人类团队协作,每个Agent有明确角色、目标和工具。顺序/层级/混合流程编排。概念直观,上手快,但复杂流程控制弱。
from crewai import Agent, Task, Crew, Process
researcher = Agent(role="高级研究员", goal="发现前沿研究", tools=[search_tool])
writer = Agent(role="技术撰稿人", goal="将研究转化为文章", tools=[write_tool])
crew = Crew(agents=[researcher, writer], tasks=[...], process=Process.sequential)
result = crew.kickoff(inputs={"topic": "多Agent协作"})
AutoGen:对话驱动的协商协作
Agent间通过多轮对话协商解决问题,类似人类会议。支持GroupChat群聊模式、Human-in-the-Loop、代码执行沙箱。适合研究型任务,但调试困难。
选型决策树
| 任务特征 | 推荐框架 |
|---|---|
| 结构化流程 + 复杂(条件分支/循环) | LangGraph |
| 结构化流程 + 简单(顺序执行) | CrewAI |
| 开放式任务(答案不确定) | AutoGen |
| 需要人工介入 + 介入点固定 | LangGraph |
| 需要人工介入 + 介入点灵活 | AutoGen |
五种协作模式
| 模式 | 描述 | 适用场景 |
|---|---|---|
| 管道式(Pipeline) | Agent按顺序依次处理 | 文档处理流水线 |
| 辩论式(Debate) | 多Agent提出不同观点 | 决策支持、风险评估 |
| 分层式(Hierarchical) | 主Agent分配子任务 | 复杂项目管理 |
| 市场式(Market) | Agent竞标认领任务 | 大规模任务调度 |
| 去中心化(P2P) | Agent间平等通信 | 分布式感知系统 |
避坑经验
- 不要一上来就多Agent——先用单Agent跑通,确认需要再拆分
- Agent数量3-5个覆盖大多数场景,超过8个考虑拆分问题域
- LangGraph学习曲线陡峭但是长期投资
- 核心逻辑与框架解耦:LLM调用/工具定义/提示词管理放独立层
- CrewAI的Sequential模式中Agent不能跳步,加fallback逻辑
- AutoGen的GroupChat限制max_round(10-15轮),超过强制总结