PAGE 11 · PHASE 4

👥 多 Agent 与工作流

从单 Agent 到多 Agent 系统——CrewAI、AutoGen、LangGraph 多 Agent 编排,以及生产环境的工作流最佳实践

进阶 前沿
01

🤔为什么需要多 Agent?

单 Agent 的局限

  • 认知过载:单个 Agent 处理复杂任务时容易"迷失",上下文窗口有限
  • 专业化不足:一个 System Prompt 很难同时胜任多个领域
  • 容错性差:单点故障会导致整个任务失败
  • 无法并行:多个独立子任务只能串行处理

多 Agent 的优势

🎯

专业分工

每个 Agent 专注于自己擅长的领域,提高专业度

并行加速

独立子任务可以同时执行,减少总耗时

🛡️

容错隔离

单个 Agent 失败不影响其他 Agent 工作

📈

可扩展

按需增加新的专业 Agent,不影响现有系统

02

🏗️多 Agent 协作模式

五种核心协作模式

模式结构特点适用场景
Supervisor
主管调度
1个主管 + N个工人 中心化决策,全局视野 任务分配明确的场景
Sequential
顺序流水线
A → B → C → D 每个 Agent 改进前一个的输出 内容创作、代码审查
Hierarchical
层级树
多层级 Agent 树 上层规划+下层执行 大型项目管理
Debate
辩论
多 Agent 对等讨论 多视角验证,提升正确率 决策分析、推理验证
Swarm
群体智能
动态 Agent 切换 按上下文自动路由 客服、多领域问答

Supervisor 架构图

Supervisor Multi-Agent 架构
🎯 Supervisor
任务调度与决策
↕ 分配任务 / 收集结果
🔍 Researcher
信息搜索
✍️ Writer
内容撰写
📊 Analyst
数据分析
🪞 Reviewer
质量审查
📋 共享状态 / 消息总线
03

🚢CrewAI 框架

CrewAI 概述

CrewAI 是专为多 Agent 协作设计的框架,核心概念是用"团队"隐喻来组织 Agent:Agent(角色)Task(任务)Crew(团队)

代码示例:研究团队

from crewai import Agent, Task, Crew, Process

# 定义 Agent(角色)
researcher = Agent(
    role="资深研究员",
    goal="深入调研给定主题,收集权威信息",
    backstory="你拥有 20 年研究经验,擅长从海量信息中提取关键洞见。",
    tools=[search_tool, wiki_tool],
    verbose=True
)

writer = Agent(
    role="技术写作专家",
    goal="将研究成果转化为清晰易懂的技术文章",
    backstory="你曾为 Google、Meta 撰写技术博客,文风简洁有力。",
    verbose=True
)

editor = Agent(
    role="主编",
    goal="确保文章质量、准确性和可读性",
    backstory="你是顶级科技媒体的主编,对内容质量有极高标准。",
    verbose=True
)

# 定义 Task(任务)
research_task = Task(
    description="调研 {topic},收集关键信息、数据和最新进展",
    agent=researcher,
    expected_output="包含关键发现的详细研究报告"
)

write_task = Task(
    description="基于研究报告撰写一篇技术文章",
    agent=writer,
    expected_output="2000 字的技术文章",
    context=[research_task]  # 依赖研究任务的输出
)

edit_task = Task(
    description="审查和润色文章",
    agent=editor,
    expected_output="润色后的最终版文章",
    context=[write_task]
)

# 组建 Crew(团队)
crew = Crew(
    agents=[researcher, writer, editor],
    tasks=[research_task, write_task, edit_task],
    process=Process.sequential,  # 顺序执行
    verbose=True
)

# 启动执行
result = crew.kickoff(inputs={"topic": "2026年AI Agent发展趋势"})
04

🔬AutoGen 框架

AutoGen 概述

AutoGen 是微软研究院推出的多 Agent 对话框架,核心理念是基于对话的 Agent 协作——Agent 之间通过消息传递来协调工作。

AutoGen 0.4 (AG2) 新架构

from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.conditions import TextMentionTermination

# 创建 Agent
coder = AssistantAgent(
    name="Coder",
    model_client=model_client,
    system_message="你是 Python 专家,负责编写代码。"
)

reviewer = AssistantAgent(
    name="Reviewer",
    model_client=model_client,
    system_message="你是代码审查专家,检查代码质量和安全性。当代码合格时回复 APPROVE。"
)

# 组建团队
termination = TextMentionTermination("APPROVE")
team = RoundRobinGroupChat(
    [coder, reviewer],
    termination_condition=termination
)

# 运行
result = await team.run(
    task="编写一个 Python 快速排序函数"
)

CrewAI vs AutoGen 对比

维度CrewAIAutoGen
设计哲学角色驱动(Role-based)对话驱动(Conversation-based)
编排方式Task → Agent 映射Agent 间消息传递
上手难度简单直观中等(灵活但配置多)
代码执行通过 Tool内置安全沙箱
适合场景流程化任务开放式对话协作
社区生态快速增长微软支持,学术背景强
05

📊LangGraph 多 Agent

LangGraph 的多 Agent 优势

LangGraph 是构建多 Agent 系统最灵活的选择——它不预设协作模式,而是让你用图结构自由定义 Agent 之间的通信和控制流

  • 完全可控:每条边、每个条件都可自定义
  • 状态共享:通过 TypedDict 共享状态,Agent 间信息传递清晰
  • 人在回路:可在任意节点插入人工审批
  • 持久化:支持 Checkpoint,长时间任务可暂停恢复

Supervisor 模式实现

from langgraph.graph import StateGraph, START, END
from langgraph.prebuilt import create_react_agent
from typing import TypedDict, Literal

class TeamState(TypedDict):
    messages: list
    next_agent: str
    results: dict

# 创建专业 Agent
search_agent = create_react_agent(llm, [tavily_tool])
code_agent = create_react_agent(llm, [python_repl])
write_agent = create_react_agent(llm, [])

# Supervisor 节点
async def supervisor(state: TeamState):
    response = await llm.ainvoke(
        f"""你是项目主管。根据对话决定下一步:
选项: search_agent, code_agent, write_agent, FINISH
当前消息: {state['messages'][-1]}
返回 JSON: {{"next": "..."}}"""
    )
    return {"next_agent": parse_json(response)["next"]}

# 路由函数
def route(state: TeamState) -> Literal[
    "search_agent", "code_agent", "write_agent", "__end__"
]:
    if state["next_agent"] == "FINISH":
        return "__end__"
    return state["next_agent"]

# 构建图
graph = StateGraph(TeamState)
graph.add_node("supervisor", supervisor)
graph.add_node("search_agent", search_node)
graph.add_node("code_agent", code_node)
graph.add_node("write_agent", write_node)

graph.add_edge(START, "supervisor")
graph.add_conditional_edges("supervisor", route)

# 所有 Agent 完成后都回到 Supervisor
for agent in ["search_agent", "code_agent", "write_agent"]:
    graph.add_edge(agent, "supervisor")

app = graph.compile()
06

🔄工作流编排

Agent vs Workflow

Agent 和 Workflow 是构建 LLM 应用的两种互补方式:

维度Workflow(编排)Agent(自主)
控制方式预定义路径,代码控制流程LLM 自主决策路径
可预测性高——路径确定低——路径动态
灵活性低——需改代码适应新场景高——自动适应新需求
调试难度容易困难
适合场景流程固定、可靠性要求高任务开放、需要创造性

常见工作流模式

➡️

Prompt Chaining

多个 LLM 调用串联,前一个输出作为后一个输入

🔀

Routing

根据输入类型路由到不同处理路径

Parallelization

多个子任务并行执行后聚合结果

🎛️

Orchestrator-Worker

编排者分配任务,工人执行后汇总

Evaluator-Optimizer

一个 LLM 生成,另一个评估和循环改进

👤

Human-in-the-Loop

关键决策点暂停等待人工审批

📝
Anthropic 2024 年的研究报告建议:大多数场景下,简单的 Workflow 比复杂的 Agent 更可靠。只有当任务确实需要灵活性和开放式推理时才使用 Agent。"从最简单的方案开始"是最佳策略。
07

🏭生产环境最佳实践

多 Agent 系统的挑战

  • 调试困难:多个 Agent 的交互路径难以追踪和复现
  • 成本控制:Agent 间通信消耗大量 Token
  • 死循环:Agent 可能陷入无限对话循环
  • 一致性:多个 Agent 的输出可能相互矛盾
  • 延迟:多跳通信导致总延迟增高

解决方案清单

挑战解决方案工具
调试困难全链路追踪、可视化执行图LangSmith, Arize Phoenix
成本爆炸Token 预算、模型分级使用小模型做简单任务
死循环最大迭代次数、超时机制max_iterations, timeout
输出矛盾最终仲裁 Agent 或投票机制Supervisor 模式
高延迟并行化、缓存、流式输出LangGraph 并行节点
⚠️
关键原则:在生产环境中始终设置max_iterations(建议 10-20)和timeout(建议 60-120秒),防止 Agent 无限循环导致成本失控。
08

🚀实战:多 Agent 内容生产流水线

项目目标

构建一个自动化内容生产系统:输入一个主题,输出一篇高质量的技术博客文章。

📝 输入主题
📋 Planner:生成大纲
🔍 Researcher:搜索资料
✍️ Writer:撰写初稿
🪞 Critic:审查反馈
质量达标?
✏️ Editor:润色排版
📄 发布就绪的文章
渐进式策略:先用简单的 Sequential Workflow 跑通流程,确认有效后再逐步引入 Reflection(提升质量)→ Supervisor(灵活调度)→ 并行化(提升速度)。不要一步到位。

📚 参考资料与出处

  1. CrewAI 官方文档 — docs.crewai.com
  2. AutoGen (AG2) 文档 — microsoft.github.io/autogen
  3. LangGraph Multi-Agent — langchain-ai.github.io/langgraph
  4. Anthropic, "Building Effective Agents" (2024) — anthropic.com
  5. Wu et al. (2023) "AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation" — arXiv:2308.08155
  6. Li et al. (2023) "CAMEL: Communicative Agents for Mind Exploration of Large Language Model Society" — arXiv:2303.17760
  7. OpenAI Swarm — github.com/openai/swarm