AutoGen 2.0 多智能体实战:从单 Agent 到协作系统
Microsoft 最新 AutoGen 框架完整教程,含真实业务案例
返回教程列表角色混淆:同一个 Agent 又要写代码、又要做审查,容易产生质量下降
上下文膨胀:长任务导致上下文窗口撑满,早期信息被遗忘
模式 说明 适用场景 Two-Agent 两个 Agent 直接对话 简单任务
GroupChat 多 Agent 共享对话 需要多角色协作
Nested Chat Agent 内部再起子对话 复杂子任务分解
框架 学习曲线 灵活性 生产成熟度 最适合 AutoGen 中等 高 较高 代码执行场景
LangGraph 较高 最高 高 复杂状态管理
CrewAI 低 中 中 快速原型
多智能体协作模式
LangGraph 有状态 Agent
MCP 标准化工具接入
高级约 25 分钟
AutoGen 2.0 多智能体实战:从单 Agent 到协作系统
Microsoft 最新 AutoGen 框架完整教程,含真实业务案例
AutoGen 是 Microsoft 开源的多 Agent 框架,2.0 版本重构了核心架构,支持更灵活的 Agent 角色定义和消息路由。本文从零开始,带你用 AutoGen 搭建一个"研究员 + 代码员 + 审核员"三角色协作系统,完成真实的数据分析任务。
AutoGenMicrosoft多智能体GroupChatPythonAgent框架
AutoGen 2.0 多智能体实战
为什么需要多智能体?
单个 Agent 面对复杂任务时有两个核心问题:
多智能体的解法:分工明确的专家团队,每个 Agent 只做好一件事。
AutoGen 核心概念
Agent 类型
python
from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManagerAssistantAgent:由 LLM 驱动,会主动发言
UserProxyAgent:代表人类,执行代码,控制终止条件
对话模式
安装与配置
bash
pip install pyautogen
python
config_list = [
{"model": "gpt-4o", "api_key": "sk-..."},
{"model": "claude-3-5-sonnet-20241022", "api_key": "sk-ant-...", "api_type": "anthropic"},
]llm_config = {"config_list": config_list, "temperature": 0.1}
实战案例:数据分析协作系统
定义三个 Agent
python
1. 数据分析师:负责理解数据、规划分析思路
analyst = AssistantAgent(
name="DataAnalyst",
system_message="""你是资深数据分析师。
你的职责:分析数据结构、发现关键趋势、规划可视化方案。
不要自己写代码,告诉 Coder 需要什么代码。""",
llm_config=llm_config
)2. 程序员:负责写 Python 代码
coder = AssistantAgent(
name="Coder",
system_message="""你是 Python 数据工程师。
你的职责:根据 Analyst 的指示写 pandas/matplotlib 代码。
代码必须可直接运行,包含完整的 import 语句。""",
llm_config=llm_config
)3. 评审员:负责检查代码和结论的质量
reviewer = AssistantAgent(
name="Reviewer",
system_message="""你是 QA 审核员。
检查内容:代码是否有 bug、结论是否有数据支撑、可视化是否清晰。
如果发现问题,明确指出并要求修改。""",
llm_config=llm_config
)4. 执行者(代表用户,运行代码)
executor = UserProxyAgent(
name="Executor",
human_input_mode="NEVER",
code_execution_config={"work_dir": "output", "use_docker": False},
max_consecutive_auto_reply=10
)
启动 GroupChat
python
groupchat = GroupChat(
agents=[analyst, coder, reviewer, executor],
messages=[],
max_round=20,
speaker_selection_method="auto"
)manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config)
executor.initiate_chat(
manager,
message="""
分析 sales_data.csv(包含:日期、产品类别、销售额、地区)
需要输出:
1. 过去12个月的销售趋势图
2. 各产品类别占比饼图
3. 表现最好/最差的地区对比
4. 3条关键业务洞察
"""
)
常见问题与解决方案
问题 1:Agent 陷入无限循环
python
def is_termination_msg(msg):
return "ANALYSIS_COMPLETE" in msg.get("content", "")executor = UserProxyAgent(
...
is_termination_msg=is_termination_msg
)
问题 2:代码执行失败不处理
在 system_message 中明确要求:如果代码执行报错,分析错误原因并重写,最多重试 3 次。
AutoGen vs LangGraph vs CrewAI
延伸阅读
相关工具
AutoGenLangGraphCrewAIOpenAI