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

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

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

定义

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

维度 AutoGen LangGraph CrewAI
核心抽象 对话/聊天 有向图/状态机 角色/团队
通信方式 消息传递 状态边/节点 任务/流程
动态路由 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。

参见