Wu 等,Microsoft Research / 宾州州立大学等。arXiv 2023-08。开源库允许用可对话的多个 agent 协作完成任务。
原文:arXiv:2308.08155。当时仓库:microsoft/autogen。
Wu 等,Microsoft Research / 宾州州立大学等。arXiv 2023-08。开源库允许用可对话的多个 agent 协作完成任务。
原文:arXiv:2308.08155。当时仓库:microsoft/autogen。
Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Beibin Li, Erkang Zhu, Li Jiang, Xiaoyun Zhang, Shaokun Zhang, Jiale Liu, Ahmed Awadallah, Ryen W. White, Doug Burger, Chi Wang. AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation。Microsoft Research 等。arXiv 2023-08。arXiv:2308.08155。
AutoGen 是开源框架,让开发者通过多个可以互相交谈的 agent 构建 LLM 应用。agent 可定制、可对话,后端可以是 LLM、人类输入、工具,或它们的组合。交互行为也可灵活定义。自然语言和代码都能用来编排不同应用的对话模式。作者在数学、编程、问答、运筹、在线决策、娱乐等示例上展示框架有效。
两个核心概念:
可对话 agent。 能收发消息、维护内部上下文。能力来自三类后端:LLM(角色扮演、根据对话推进、写代码)、人(按配置在若干轮征求输入,默认 UserProxy 可设频率与可跳过)、工具(执行代码或函数调用)。ConversableAgent 是最高层抽象;预置的 AssistantAgent 偏 LLM 助手,UserProxyAgent 偏人类代理兼代码/函数执行。
文中示例:助手生成方案,用户代理征求人输入或执行代码,再把结果作为反馈送回助手。
对话式编程。 把复杂工作流收成 agent 之间的对话:计算是「为了回话采取的动作」,控制流是「谁在何时对谁说话」。统一接口包括 send/receive 与 generate_reply。默认 auto-reply:收到消息就生成回复并送回,直到终止条件。控制可以用自然语言提示(例如出错就再写代码,完成时输出 TERMINATE)、Python 代码(最大自动回复数、人工模式、注册自定义回复函数),以及两者切换(含 LLM 提出的 function call)。除静态来回外,还支持动态选下一个说话者的群聊(GroupChatManager)。
示例包括:两只内置 agent 解 MATH;检索增强问答(助手在上下文不够时回复 UPDATE CONTEXT 以触发再检索);ALFWorld 上加一只常识 grounding agent,相对两 agent 变体平均约 15% 提升;把 OptiGuide 编码工作流从 430 行以上收到约 100 行,多 agent 相对单 agent 在识别不安全代码上 F1 更高。伦理节写明:让 LLM agent 通过执行代码或函数调用改外部环境(例如装包)有风险,需要额外防护。文中称工作仍偏早期实验。
单只 LLM 加工具已经能跑 ReAct。更复杂的任务被拆成「写代码的、跑代码的、盯安全的、补常识的」。若每次都手写控制平面,编排会爆炸。AutoGen 的解法是:每个角色是可对话对象,默认收到消息就回;工作流看起来像聊天,而不是一张显式状态机。控制流从 while 变成消息总线:谁在何时对谁说话。
工程化:2023 年「多 Agent」从口号变成可 clone 的库。后来许多图/角色框架仍是消息传递加自动回复。按 AI Agent 定义,多只 LLM 互相对话,至少一方在对环境行动(执行代码、调函数),整体才是 Agent 系统;若只产文本,就还是角色扮演。总线本身不产生副作用。
限度:角色变多会放大空转和串通式幻觉;论文自己把代码执行写成风险。它是开发库,循环仍在你的进程里。不要把它读成已经解决了 SWE-bench 那种真实仓库修改。消息条数 ≠ 完成率;多角色 ≠ 更可靠的单步。