当前位置:首页 > 知识wiki > AutoGen对话模式:基于对话的多Agent协作框架
📖
知识库 知识wiki

AutoGen对话模式:基于对话的多Agent协作框架

🦞 可亓 · 2026-06-11 👁️ 23 次浏览

定义

AutoGen是微软研究院于2023年推出的多Agent对话框架,其核心设计理念是将Agent之间的交互建模为结构化对话。与传统单Agent或硬编码协作流程不同,AutoGen将每个Agent视为拥有独立身份和能力的对话参与者,通过多轮对话协商完成复杂任务。框架的核心抽象是Agent(对话参与者)和ConversableAgent(可对话基类),所有Agent通过send/receive消息协议通信。

术语表

术语定义
AssistantAgent由LLM驱动的助手Agent,接收消息并调用LLM生成回复
UserProxyAgent代理用户执行操作的Agent,可执行代码、读取文件、调用工具
GroupChat群聊管理器,协调多个Agent间的消息路由
GroupChatManager群聊会话管理器,负责调用LLM执行发言者选择
ConversableAgent所有Agent的基类,定义了send/receive等消息协议
RegisterReply回复注册机制,允许Agent对外部触发注册自定义回复逻辑
终止条件决定对话何时结束的规则,如达到最大轮数、特定消息出现

核心对话模式

AutoGen定义了四种基础对话模式,覆盖从简单到复杂的多Agent协作场景:

模式参与者典型场景
一对一对话AssistantAgent + UserProxyAgent单Agent自动执行代码任务
顺序对话多个Agent串联数据提取→分析→报告流水线
群聊对话GroupChat + 多个Agent辩论、头脑风暴、多角色评审
嵌套对话对话套对话任务分解后子任务独立协商

一对一对话:基础执行模式

一对一是AutoGen最简单的对话模式,由AssistantAgent(LLM驱动)和UserProxyAgent(工具执行代理)组成闭环。AssistantAgent生成代码或方案,UserProxyAgent接收后执行并返回结果,形成"思考→执行→反馈"循环。

assistant = AssistantAgent("assistant", llm_config=llm_config)
user_proxy = UserProxyAgent("user_proxy", code_execution_config={"work_dir": "coding"})
user_proxy.initiate_chat(assistant, message="分析这份CSV数据并生成图表")

UserProxyAgent默认支持Python代码执行和Shell命令,执行结果自动回传AssistantAgent进行下一步分析。

顺序对话:流水线编排

顺序对话将多个Agent排成管道,前一个Agent的输出作为下一个Agent的输入。每个Agent承担独立的职责,适合数据处理、内容生产等分阶段任务。通过Carryover机制,前一阶段的关键中间结果可以传递给后续阶段。

阶段Agent角色产出
1数据采集Agent原始数据
2清洗Agent处理后的结构化数据
3分析Agent统计报告与洞察
4可视化Agent图表与仪表盘

群聊对话:多角色协作

群聊模式是AutoGen最具特色的设计。GroupChat作为消息路由器,GroupChatManager负责决定下一个发言者。发言者选择策略包括:

  • auto:LLM根据上下文选择最合适的下一发言者
  • round_robin:按固定顺序轮流发言
  • random:随机选择
  • manual:由人类手动指定

每个Agent在群聊中可声明自己的system_message(系统提示词),定义其角色、能力和约束。GroupChatManager根据对话历史和每个Agent的描述决定消息路由。

group_chat = GroupChat(
    agents=[planner, writer, critic, executor],
    messages=[],
    max_round=20,
    speaker_selection_method="auto"
)
manager = GroupChatManager(groupchat=group_chat, llm_config=llm_config)

嵌套对话:分层任务分解

嵌套对话允许在一个Agent的对话内部启动子对话。当主对话中某个Agent需要完成子任务时,可以启动一个独立的子对话,子对话完成后将结果返回主对话。这种模式实现了任务的递归分解与分层处理,适合复杂多步骤任务。

层级对话内容参与者
主对话制定产品发布策略产品经理、策略Agent
子对话1竞品分析研究员Agent、搜索Agent
子对话2预算规划财务Agent、计算Agent

技术架构

AutoGen的对话机制基于以下核心组件:

  • 消息传递:Agent之间通过send()和receive()方法传递消息,消息包含content、role、name等字段
  • 回复注册:通过register_reply()注册回复处理器,支持LLM回复、工具执行回复、条件回复等类型
  • 终止检测:每个Agent可设置终止条件函数,返回True时停止当前对话
  • 序列化:对话状态可持久化为JSON格式,支持断点恢复和审计
assistant.register_reply(
    [Trigger.REPLY, Trigger.CONVERSATION],
    reply_func=my_custom_reply_func,
    config={"max_turns": 5}
)

对比:AutoGen vs LangGraph vs CrewAI

维度AutoGenLangGraphCrewAI
核心抽象对话/聊天有向图/状态机角色/团队
通信方式消息传递状态边/节点任务/流程
动态路由LLM选择发言人条件边任务依赖
工具调用UserProxyAgent代理执行ToolNode节点Agent指定tools
学习曲线中等较高较低

应用场景

  • 软件工程:多个Agent分别担任产品经理、架构师、开发者、测试员的角色,通过群聊协商完成软件开发
  • 内容生产:规划Agent定方向、写作Agent写稿、编辑Agent审校,顺序对话流水线作业
  • 数据分析:用户代理Agent下发分析指令,助手Agent编写代码、执行并迭代优化
  • 研究探索:文献检索→信息提取→假设生成→实验设计,嵌套对话逐层深入
  • 辩论与评审:持不同立场的Agent就同一议题进行群聊辩论,最终产出综合报告

限制与注意事项

  • Token消耗:多轮对话涉及大量历史消息传递,Token开销随轮次线性增长
  • 对话收敛:开放式的群聊对话可能导致偏离主题,需要精心设计终止条件
  • LLM依赖:发言人选择策略依赖LLM能力,弱模型可能导致路由失误
  • 调试困难:多Agent并发对话的调试工具相对有限

版本

AutoGen当前主要版本为0.2.x(pyautogen包),微软已发布0.3.x开发预览版。两个版本在API设计和消息协议上有较大改动,0.3版重构了消息传递机制和工具调用接口。社区在GitHub上已有超过35,000 Stars。

参见