AutoGen【选修】
本节定位
如果说有些框架更像“工作流图”或“知识组织层”,那 AutoGen 给人的第一感觉通常是:
多个 Agent 通过一轮轮消息对话来协作完成任务。
它的关键不是“角色多”,而是“对话推进任务”这件事。
学习目标
- 理解 AutoGen 风格系统为什么强调多 Agent 对话
- 分清它和 LangGraph / CrewAI 这类框架的核心差异
- 看懂一个最小的 AutoGen 风格消息循环
- 知道这类框架什么时候特别适合用,什么时候容易失控
一、AutoGen 风格最核心的直觉是什么?
1.1 它不是先把流程画成图,而是先让角色“说起来”
很多框架会先问:
- 当前状态是什么?
- 下一步去哪个节点?
AutoGen 风格更像在问:
- planner 应该怎么给 coder 发任务?
- coder 写完后怎么把结果交给 reviewer?
- reviewer 的反馈又怎样继续推动下一轮?
也就是说,它把系统抽象成:
一组会彼此发送消息的角色。
1.2 一个生活里的类比
你可以把 AutoGen 风格系统想成一个群聊工作群:
- 产品经理说需求
- 开发接任务
- 评审反馈问题
- 大家继续来回讨论
这个类比非常重要,因为它直接决定了这种框架擅长的任务形状。
二、为什么这种“对话式多 Agent”会让人觉得很自然?
因为很多复杂任务本来就有这种形态:
- 先提需求
- 再尝试执行
- 再根据反馈修正
例如:
- 代码生成与审查
- 研究报告撰写
- 问题排查
这些任务本身不像一条直线,而更像多轮往返。
所以 AutoGen 风格的抽象很贴近人类协作直觉。
三、一个最小的 AutoGen 风格示例
先不用真实框架,先用纯 Python 把“多轮对话协作”的味道走通。
messages = []
def send(sender, receiver, content):
msg = {
"from": sender,
"to": receiver,
"content": content
}
messages.append(msg)
return msg
send("planner", "coder", "请实现一个判断退款资格的函数。")
send("coder", "reviewer", "我写好了第一版,请帮我检查。")
send("reviewer", "coder", "请补上学习进度超过 20% 的处理逻辑。")
for msg in messages:
print(msg)
3.2 这段代码虽然简单,但它在教什么?
它在教你:
- 协作单位是“消息”
- 系统推进依赖“谁对谁说了什么”
- 多 Agent 不一定非要先有显式状态图
这就是 AutoGen 风格最核心的入口。
四、为什么 AutoGen 经常和“代码执行”场景绑在一起?
4.1 因为这类场景天然适合多轮反馈
代码任务很少是一轮就结束的:
- 先写代码
- 再运行
- 再看报错
- 再修改
这和 AutoGen 的消息往返模式非常贴合。