开源精选 AutoGen微软多Agent对话AG2开源
云
云铭
进化之路 · 扫码阅读
微信 · 浏览器扫码
在手机上获得更好的阅读体验
Microsoft AutoGen深度解析:对话式多Agent框架的领导者
“如果两个AI互相聊天能解决什么问题?“——微软的AutoGen用多Agent对话回答了这个问题,并将这种模式推向了企业级应用。
项目速览
| 维度 | 详情 |
|---|---|
| GitHub | microsoft/autogen |
| Stars | ~48K |
| 语言 | Python |
| 许可证 | CC-BY-4.0 → MIT |
| 社区分支 | ag2-ai/ag2 (AG2) |
背景:AutoGen的分裂与AG2
AutoGen经历了开源社区中最具戏剧性的事件之一——2025年因许可证争议(微软将许可证从MIT改为CC-BY-4.0),核心社区成员fork出AG2分支。AG2保持了MIT许可证并持续活跃开发,成为事实上的社区主线。
建议:新项目优先考虑AG2分支。
核心思想:对话即编程
AutoGen的独特范式
传统Agent编程:代码编排
agent1.run() → agent2.run(agent1.output) → agent3.run(agent2.output)
AutoGen范式:对话编排
Agent1: "我发现数据中有个异常..."
Agent2: "让我验证一下..." [调用工具]
Agent2: "确实是个异常,建议这样处理..."
Agent1: "好的,让我整理成报告..."
Agent之间通过自然语言对话来协作,而不是通过结构化API调用。这听起来低效,但带来了惊人的灵活性。
核心概念
1. ConversableAgent
所有Agent的基类:
from autogen import ConversableAgent, AssistantAgent, UserProxyAgent
# 可对话的Agent
analyst = AssistantAgent(
name="数据分析师",
system_message="""你是一位数据分析师。当收到任务时:
1. 先理解数据结构和分析目标
2. 编写Python代码进行分析
3. 解释分析结果的意义
4. 如果代码出错,自己修复""",
llm_config={"model": "gpt-4", "temperature": 0}
)
# 用户代理(能执行代码、与人类交互)
user_proxy = UserProxyAgent(
name="用户代理",
human_input_mode="TERMINATE", # 需要时请求人类输入
max_consecutive_auto_reply=10,
code_execution_config={
"work_dir": "workspace",
"use_docker": True, # 安全:在Docker中执行代码
}
)
2. GroupChat(群聊模式)
AutoGen最具特色的功能——多个Agent在一个”群聊”中协作:
from autogen import GroupChat, GroupChatManager
# 创建群聊
groupchat = GroupChat(
agents=[
user_proxy, # 用户代理
analyst, # 数据分析师
writer, # 报告撰写者
reviewer, # 审核者
engineer, # 工程师
],
messages=[],
max_round=20,
speaker_selection_method="auto", # 自动选择下一个发言者
allow_repeat_speaker=False
)
# 群聊管理者
manager = GroupChatManager(
groupchat=groupchat,
llm_config={"model": "gpt-4"}
)
# 发起对话
user_proxy.initiate_chat(
manager,
message="""分析这份销售数据(sales_2026.csv),找出:
1. 增长最快的产品线
2. 最盈利的客户群
3. 潜在风险
并生成一份给CEO的报告。"""
)
3. 群聊中的角色扮演
群聊对话示例:
[数据分析师]:我注意到Q2数据中,B产品线的增长率异常高。
让我用代码验证一下数据质量。
[数据分析师]:[执行代码] 代码确认数据无误,B产品线增长
48%,主要由东南亚市场驱动。
[工程师]:我可以写一个脚本来批量检查所有产品线的
增长率,并与去年同期对比。
[审核者]:在生成报告前,我建议先确认:这个增长是否
有季节性因素?请分析师补充去年同期数据对比。
[数据分析师]:好建议。去年同期增长率是32%,所以今年
加速明显。但不能排除基数效应——去年同期绝对值较小。
[报告撰写者]:基于以上讨论,我来起草CEO报告。
重点突出:1) 结构性增长vs季节性 2) 区域集中度风险
3) 建议下一步验证方向。
4. 嵌套Chat
Agent可以把复杂任务委托给子Agent:
# 主Agent把代码编写任务委托给编程Agent
engineer_agent = AssistantAgent(
name="Python专家",
system_message="你是Python专家,编写高质量、可运行的代码",
llm_config={"model": "claude-sonnet-4-6"}
)
# 注册嵌套Chat
analyst.register_nested_chats(
[
{
"sender": analyst,
"recipient": engineer_agent,
"message": lambda recipient, messages: f"请将以下分析转化为Python代码:{messages[-1]['content']}",
"max_turns": 2,
}
],
trigger=engineer_agent # 当需要编程时触发
)
独特优势
1. Human-in-the-Loop
# 需要人类输入时自动暂停
user_proxy = UserProxyAgent(
name="用户代理",
human_input_mode="ALWAYS", # 始终需要人类确认
# human_input_mode="TERMINATE", # 仅在结束时确认
# human_input_mode="NEVER", # 全自动
)
这是企业级场景的关键需求——在敏感操作(如发送邮件、执行数据库写入)前要求人类审批。
2. 代码安全执行
code_execution_config = {
"work_dir": "coding",
"use_docker": True, # Docker沙箱
"timeout": 60, # 执行超时
"last_n_messages": 3, # 只保留最近3条消息的上下文
}
3. Teachable Agent(可教学的Agent)
from autogen import TeachableAgent
# Agent能从用户反馈中学习
teacher = TeachableAgent(
name="老师",
llm_config={"model": "gpt-4"},
teach_config={
"verbosity": 2,
"reset_db": False,
"recall_threshold": 1.5,
}
)
用户告诉Agent”以后遇到X情况应该用Y方法”,Agent会记住并应用。
AutoGen vs AG2
| 维度 | 微软AutoGen | AG2 |
|---|---|---|
| 许可证 | CC-BY-4.0 | MIT ✅ |
| 维护方 | 微软 | 原AutoGen核心社区 |
| 更新频率 | 低 | 高 |
| 社区活跃度 | 中 | 高 |
| 企业支持 | 微软背书 | 社区驱动 |
| 新功能 | 保守 | 激进 |
适用场景
✅ AutoGen/AG2 的最佳场景:
├── 数据分析和可视化任务
├── 代码生成和调试协作
├── 多人/多角色决策模拟
├── 教学和研究场景
└── 需要人类介入的半自动化工作流
关键优势:
- 自然语言协作比API调用更灵活
- 人类可以随时加入对话
- 群聊模式天然适合复杂讨论
AutoGen创新的”对话即编程”范式让人耳目一新。虽然自然语言对话的效率和确定性不如结构化API调用,但在需要灵活协作、需要人类介入的场景中,对话是最高效的协作界面——毕竟,人类团队也是这么工作的。
GitHub: https://github.com/microsoft/autogen | AG2: https://github.com/ag2-ai/ag2