登录
翻译

AutoGen:通过多智能体对话,开启下一代大语言模型应用

发布于 2025-07-16 阅读 128
  • 人工智能
翻译

在人工智能飞速发展的今天,大型语言模型(LLM)已经成为构建强大AI应用的核心。然而,随着任务日益复杂,单个智能体的能力逐渐显得捉襟见肘。我们不禁要问:如何才能更进一步,构建出能够处理更复杂、更广泛任务的LLM应用?

来自微软研究院、宾夕法尼亚州立大学等机构的研究者们给出了一个创新性的答案:AutoGen。这篇发表在 arXiv 上的论文《AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation》介绍了一个开源框架,它允许开发者通过构建多个可以相互对话的“智能体”(Agent)来完成复杂任务。

这篇博客将带您深入了解 AutoGen 的核心思想、关键技术及其强大的应用潜力

核心理念:化繁为简,用“对话”解决问题

AutoGen 的核心洞察是:将复杂的任务流,简化和统一为多个智能体之间的对话。

想象一下,当您需要解决一个复杂项目问题时,您可能会动用一个团队的力量。团队里有项目经理、程序员、测试员等不同角色的专家。他们通过沟通、协作、互相提供反馈,最终完成任务。

AutoGen 正是借鉴了这种模式。它让不同的 AI 智能体扮演不同的角色,通过“聊天”来协同工作。这种方式之所以可行,主要得益于现代 LLM(如 GPT-4)的三个特点:

  1. 强大的对话能力:LLM 能在对话中理解并采纳反馈,进行推理、批判和验证。

  2. 能力模块化:通过为 LLM 设置不同的系统提示(Prompt),我们可以让它们扮演不同角色、具备不同能力。这些能力可以通过对话互补。

  3. 任务分解:LLM 擅长将复杂任务分解为更简单的子任务,而多智能体对话天然地支持了这种分解与整合。

截屏20250716 10.14.53.png

图:AutoGen 利用多代理对话实现了基于 LLM 的各种应用。(左图)AutoGen 代理可对话、可定制,可以基于 LLM、工具、人类,甚至是它们的组合。(中上)代理可以通过对话解决任务。(右图)它们可以组成一个聊天群,并有可能与人类形成回路。(中下)框架支持灵活的对话模式。

AutoGen 的两大基石

为了实现“用对话解决问题”这一目标,AutoGen 提出了两个核心概念:可对话智能体(Conversable Agents)和对话式编程(Conversation Programming)。

  1. 可对话、可定制的智能体 (Conversable Agents)

在 AutoGen 中,每个智能体都是一个可以发送和接收消息的“可对话”实体。它们不仅能言善道,还身怀绝技。AutoGen 赋予了智能体三种核心能力:

• 大语言模型 (LLMs):智能体可以利用 LLM 进行角色扮演、代码生成、根据对话历史进行推理和修正。

• 人类 (Humans):在许多应用中,人的智慧和决策至关重要。AutoGen 允许人类通过“人类代理智能体”(Human-backed Agents)无缝参与到对话中,在关键节点提供输入。

• 工具 (Tools):智能体可以执行代码或调用函数,从而与外部世界交互,例如运行 Python 脚本、查询数据库等。

开发者可以像搭积木一样,轻松组合这些能力,创建出具有特定角色和功能的智能体,例如“代码工程师”、“代码审查员”或“人类指挥官”。

  1. 对话式编程 (Conversation Programming)

有了各具特色的智能体后,如何组织它们高效工作呢?这就是“对话式编程”的用武之地。

这个新范式将复杂的应用工作流定义为两个部分:

• 计算(Computation):智能体在对话中为生成响应而采取的行动,例如调用 LLM 或执行代码。

• 控制流(Control Flow):决定计算发生的顺序或条件,例如由哪个智能体发言,对话何时终止。

在 AutoGen 中,计算和控制流都是围绕“对话”展开的。智能体的行动由它收到的消息驱动,而控制流则通过智能体之间的消息传递自然形成。

截屏20250716 10.25.31.png

图:如何使用 AutoGen 对多代理对话进行编程的示意图。上部的子图展示了 AutoGen 提供的内置代理,这些代理具有统一的对话界面,并且可以自定义。中间的子图展示了使用 AutoGen 开发具有自定义回复功能的双代理系统的示例。底部的子图展示了程序执行期间双代理系统产生的自动代理聊天。

这种模式极大地简化了开发流程。开发者可以使用自然语言(通过 Prompt)和编程语言(通过代码)来灵活地控制对话流程。例如,论文中提到,AutoGen 默认采用一种“自动回复”机制:当一个智能体收到消息后,它会自动调用 generate_reply 函数来生成回复并发送给对方,除非满足终止条件。这使得对话可以自动化地进行下去。

AutoGen 的强大应用场景

理论讲完了,让我们看看 AutoGen 在实际应用中的表现。论文展示了六个不同的应用案例,证明了其通用性和高效性。

截屏20250716 10.28.03.png

图:使用 AutoGen 构建的六个不同应用程序示例。它们的对话模式显示了 AutoGen 的灵活性和强大功能。

A1: 解决数学难题:AutoGen 仅用两个内置智能体(一个扮演助教,一个扮演用户代理并执行代码),在 MATH 数据集上的表现就超过了包括 GPT-4 + Code Interpreter 在内的多种方案。 它还支持“人类在环”(human-in-the-loop)模式,让人类专家可以介入,解决 AI 无法独立完成的难题。

• A2: 检索增强的代码生成与问答 (RAG):面对 LLM 知识库之外的问题(如使用一个未包含在训练数据中的新版 API),AutoGen 构建的 RAG 系统可以通过检索最新文档来生成正确的代码。 论文还展示了一个新颖的“交互式检索”功能:当智能体在当前上下文中找不到答案时,它会主动回复 UPDATE CONTEXT,自动触发新一轮的文档检索,显著提升了问答的准确率。

• A3: ALFWorld 对话:AutoGen 在 ALFWorld 环境中展示了其在复杂交互任务中的应用。ALFWorld 是一个需要智能体通过自然语言指令与虚拟环境交互以完成任务的基准测试。AutoGen 通过多智能体对话,使得智能体能够更好地理解任务、规划行动并执行,从而在这一挑战性环境中取得更好的表现。

• A4: 多智能体编码:在 OptiGuide 这个案例中,AutoGen 将一个复杂的编码工作流(涉及代码编写、安全检查、代码执行和结果解释)拆分给多个智能体(指挥官、写手、安全员)协同完成。 这种模块化的设计不仅将核心代码从430多行减少到100行,还通过引入专门的“安全员”智能体,显著提升了识别不安全代码的能力。

• A5: 动态群聊:AutoGen 不仅支持预设的对话流程,还能实现动态的群组对话。这意味着在对话过程中,智能体可以根据需要动态地选择下一个发言者,或者根据当前对话内容发起与新智能体的子对话。这极大地增强了系统的灵活性和适应性,使其能够处理更加复杂和不可预测的任务场景。例如,当一个智能体在解决问题时遇到瓶颈,它可以动态地邀请一个“专家”智能体加入对话,提供帮助。

• A6: 对话式国际象棋:这个有趣的例子展示了 AutoGen 的灵活性。两个玩家智能体(可以是 AI 或人类)用自然语言下棋,还有一个“棋盘”智能体负责验证每一步的合法性。 如果有玩家走出不合规的棋步,棋盘智能体会提出纠正,确保游戏正常进行。这展示了如何通过增加一个“裁判”智能体来为系统引入规则和约束。

截屏20250716 10.35.59.png

图:在 A1-A4 四项应用中的性能表现:(a) 表明 AutoGen 代理可用于实现数学解题任务中最具竞争力的性能;(b) 表明 AutoGen 可用于实现有效的检索增强并实现新颖的交互式检索功能,从而提高问答任务的性能;© 表明 AutoGen 可用于引入带有接地代理的三代理系统,从而提高 ALFWorld 的性能;(d) 表明多代理设计有助于提高需要保障措施的编码任务的性能。

总结与展望

AutoGen 通过引入“可对话智能体”和“对话式编程”这两个创新概念,为构建下一代 LLM 应用提供了一个通用、强大且灵活的框架。它将复杂的任务流转化为直观的多智能体对话,极大地降低了开发门槛,并释放了 LLM 在协同解决复杂问题上的巨大潜力。

通过模块化、可编程和允许人类参与的设计,AutoGen 不仅在多个基准测试中取得了优异的性能,还为我们开辟了探索更具创造性和协作性的人机交互模式的新空间。

正如论文所言,这项工作仍处于早期阶段,但它为未来的研究和应用铺平了道路。我们有理由相信,基于 AutoGen 这样的框架,一个由多个 AI 智能体与人类专家协同工作的未来,正向我们走来。

论文链接

《AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation》: https://arxiv.org/abs/2308.08155
GitHub项目: https://github.com/microsoft/autogen

评论区

励志做一条安静的咸鱼,从此走上人生巅峰。

0

0

4

举报