AutoGen 把复杂 LLM 应用统一抽象为「多个可对话 agent 相互聊天」。核心是两件事:可定制的 conversable agent(LLM/人/工具任意组合)+ conversation programming(用自然语言与代码融合来编排 computation 与 control flow)。六个应用(数学、RAG、ALFWorld、多 agent 编码、动态群聊、对话象棋)证明开箱即用即可匹敌/超过商业与 SOTA 基线,同时大幅减少代码量。
LLM agent 单体化后能力受限;要扩展能力,直觉是「多 agent 协作」。但当时缺乏一个通用框架能同时满足:不同复杂度应用需要不同 agent 集合与不同对话模式(单轮/多轮、静态/动态、有无人类介入),且开发者希望能用自然语言或代码来编排交互。已有系统要么是单 agent(AutoGPT、LangChain Agents、Transformers Agent),要么是专用多 agent 方案(MetaGPT 专做软件开发)或只支持静态对话(CAMEL、BabyAGI、Multi-Agent Debate)。没有一个是「通用基础设施 + 支持动态对话 + 支持工具执行 + 支持人类介入」四者齐备的。
任务类别覆盖:开放式(编码 A4、浏览器 A7、研究 A2)与封闭式(数学求解 A1、单轮 RAG);交互模式为多轮;自主度可从「人始终在环」(human_input_mode='ALWAYS') 平滑切到「全自主」('NEVER')。
两个概念:
ConversableAgent(最高抽象,默认可用三种后端)→ 预配 AssistantAgent(LLM 后端,带精心设计的 system message)与 UserProxyAgent(人+工具后端,负责征询人类输入或执行代码/函数),另加 GroupChatManager。send/receive/generate_reply,收到消息即自动触发 generate_reply 回复,除非满足终止条件;一旦注册好 reply 函数、初始化对话,流程自然涌现,无需独立 control plane;(b) 自然语言与代码融合控制——NL 控制(system message 指示修错、限定输出结构、说 "TERMINATE" 终止)、代码控制(终止条件/人类介入模式/最大回复数/自定义 reply 函数),以及两者互转(代码里调 LLM 引入 NL 控制;LLM function call 从 NL 转回代码)。动态对话通过自定义 generate_reply、function call、或 GroupChatManager(动态选下一发言者→收集响应→广播)实现。核心技术壁垒:真正难复制的不是任何单个 agent,而是「用对话本身当 control plane」这一抽象决策——把控制流从显式的编排器/状态机中彻底移除,改为由 auto-reply 循环 + reply 函数注册隐式诱导。这让静态与动态模式、NL 与代码控制在同一套 send/receive/generate_reply 原语下统一表达,是整个框架通用性(一套抽象跑六个异构应用)的来源。

Paper's Figure 1, verbatim(caption: "AutoGen enables diverse LLM-based applications using multi-agent conversations."). 左侧展示 agent 可由 LLM/工具/人或其组合驱动;右侧是一个真实两 agent 对话(画 META/TESLA 股价图 → 报 yfinance 未安装错误 → 自动 pip install 后重跑),直观说明「对话即工作流」。

Paper's Figure 2, verbatim(caption: "Illustration of how to use AutoGen to program a multi-agent conversation."). 这是框架的核心图:顶部黄区是内建 agent 类(ConversableAgent/AssistantAgent/UserProxyAgent/GroupChatManager 及其配置项);中部蓝区 "Developer Code" 展示三步——定义 agent、A.register_reply(B, reply_func_A2B) 注册自定义回复、A.initiate_chat(...) 触发;底部灰区是程序执行时自动涌现的对话。读者应注意:开发者只写了 agent 定义与 reply 注册,没有写任何显式的控制循环——控制流由 auto-reply 机制自动诱导。
一轮的状态:receive → generate_reply(依后端做 LLM 推理 / 代码执行 / 征询人类)→ 组装 → 终止检查 → send。记忆模型:短期为各 agent 内部维护的对话历史(context window);A4 中 Commander 额外承担跨用户交互的长期记忆并在系统内共享。错误恢复:工具/代码执行失败或安全红旗(A4 Safeguard)时,控制回退到 Writer 并附带日志,3→6 步可重复至解决或超时;ALFWorld 中「同一动作连续三次」触发 grounding agent 注入常识以打破错误循环。
GroupChatManager 做动态编排(近似图/黑板式),其余多为预定义两 agent 往返。无形式化作者证明 — 仅实证。 全文 0 个编号显示方程,贡献是编程抽象而非数学模型。以下为对实证声明可复现性的最小检查(agent 类 6+ 项):
Notation / 关键量:
| 符号 / 量 | 含义 |
|---|---|
human_input_mode | ALWAYS/NEVER/TERMINATE,控制人类介入频率 |
max_consecutive_auto_reply | auto-reply 循环的步数预算 |
| success rate | 成功任务数 / 总任务数(多数按 3 次尝试取 avg 与 best-of-3) |
| F1 / Recall | A2 QA、A4 不安全代码识别的评估指标 |
| Saving Ratio | A4 相对基线节省的手动交互倍数 |
最小检查(≥6):
text-davinci-003)、RCI 用官方默认、DPR 数字引自 Adlakha et al.——均注明来源。本可被界定的量:agent 数与成功率的关系、动态群聊的收敛/终止(Table 6 的 termination failures 已是雏形),但均未给出形式化界。

Paper's Figure 4, verbatim. 四联图是全文最承重的定量证据:(a) MATH 上 AutoGen 开箱即用超过所有商业/开源基线;(b) interactive retrieval 相对关闭它 F1 25.88% vs 22.79%,均超 DPR;(c) 三 agent(加 grounding)显著超两 agent 与 ReAct;(d) 多 agent 设计在识别不安全代码上大幅提升 F1,尤其对弱 backbone。读者应注意 (d) 中 Single-GPT3.5 仅 48% 而 Multi-GPT3.5 达 83%——多 agent 分工对弱模型是「补能力」而非锦上添花。

(图为占位;Table 3 数据见下方逐行复现,因 tab3 未被自动裁剪。) ALFWorld 分任务类型成功率——三 agent 在几乎所有类型(Pick 79 vs 61、Look 78 vs 50、Pick2 41 vs 19)碾压两 agent,"All" avg 从 54→69。这说明 grounding agent 的常识注入不是均匀提升,而是主要救回「pick/look」这类需「先取后察」常识的任务。
| Method | Pick | Clean | Heat | Cool | Look | Pick 2 | All |
|---|---|---|---|---|---|---|---|
| ReAct (avg) | 63 | 52 | 48 | 71 | 61 | 24 | 54 |
| ALFChat 2-agent (avg) | 61 | 58 | 57 | 67 | 50 | 19 | 54 |
| ALFChat 3-agent (avg) | 79 | 64 | 70 | 76 | 78 | 41 | 69 |

Paper's Figure 3, verbatim. 六个应用的对话拓扑一览(A1 学生/助手/专家、A2 检索增强双 agent、A3 三 agent+grounding、A4 Commander/Writer/Safeguard、A5 Manager 群聊、A6 双玩家+board agent)。它是「一套抽象跑异构拓扑」这一通用性主张的可视化总证据。

Paper's Table 5, verbatim. role-play 选人(Group Chat 列)在 GPT-3.5/GPT-4 上分别 9/11,均高于 task-based 策略(7/8)与两 agent(8/9)。关键反直觉点:task-based 策略在 GPT-3.5 上(7)甚至低于两 agent(8)——说明 role-play prompt 在动态选人里做了实质工作,盲目群聊反而可能更差。
| 步 | 主张 | 论文内部支撑 |
|---|---|---|
| 1 | 多 agent 协作可扩展 LLagent 能力 | §1 引先验工作(divergent thinking / factuality / validation)+ 三条可行性理由(chat-LLM 能吃反馈、单 LLM 多能力可模块组合、复杂任务可分解) |
| 2 | 需要一个通用框架而非专用方案 | §1 两个设计问题(可复用 agent + 统一接口);Appendix A + Table 1 对比现有系统均缺「通用+动态+执行+人类」某几项 |
| 3 | conversable agent + conversation programming 满足该需求 | §2 定义两概念;auto-reply 机制使控制流无需独立 control plane 即涌现(Fig 2) |
| 4 | 该抽象能表达从静态到动态的多样模式 | §2.2 列静态/动态、NL/代码及互转;GroupChatManager 动态选人 |
| 5 | 抽象在异构真实应用上有效 | §3 六应用;Fig 4 定量、Table 3/5/6 消融、Fig 10/16 案例 |
| 6 | 有效性带来性能+开发效率双收益 | §4 归纳:性能超 SOTA/商业、代码 430→100 行、人类可无缝介入 |
开源实现:https://github.com/microsoft/autogen(论文对应 v0.1.1)。L1 未提供 file:line 级引用,故标注 [实现未公开于本笔记的行级定位],但以下 API 契约在正文/图中明确:
send / receive / generate_reply(Fig 2 顶部)。A.register_reply(B, reply_func_A2B);A.initiate_chat(...)(Fig 2 中部)。human_input_mode ∈ {ALWAYS, NEVER, TERMINATE}、code_execution_config、max_consecutive_auto_reply、group_chat(Fig 2 顶部各类默认值)。AssistantAgent system message(Appendix C / Fig 5 逐字):含 role play / control flow / output confine / facilitate automation / grounding 五类指令,末尾以 "TERMINATE" 收尾——这是「用自然语言编程控制流」的样板。核心技术壁垒(再述):把对话本身当作 control plane——去掉显式编排器,靠 auto-reply 循环 + reply 函数注册让控制流隐式涌现。这使同一组原语覆盖静态/动态、NL/代码控制,是六应用共享一套抽象的根因;复制难点不在代码量,而在这一设计取舍及配套的 system message 工程。
关键实现细节(易被忽略的两处技巧):
"...UPDATE CONTEXT."(而非直接说「不知道」),由 user proxy 捕获该字符串自动追加检索——约 19.4% 的 NQ 问题因此触发额外 LLM 调用,是 F1 提升的直接来源(Fig 4b / Fig 8)。