跳到主要内容

新AutoGen架构预览

· 4 min read

What are they doing?

一年前,我们推出了AutoGen,一个旨在构建代理型AI系统的编程框架。AutoGen的发布在开发者社区引起了巨大的兴趣。作为早期发布版本,它为我们提供了一个难得的机会,可以深入与用户互动,收集宝贵的反馈,并从各种用例和贡献中学习。通过倾听和与社区的互动,我们了解到人们正在构建或试图构建什么,他们如何接近代理型系统的创建,以及他们在哪些地方遇到困难。这段经历既令人谦卑又富有启发,揭示了我们在初始设计中的重大改进机会,特别是对于使用AutoGen开发生产级应用程序的高级用户。

通过与社区的互动,我们学到了许多经验教训:

  • 开发者们重视模块化和可重用的代理。例如,我们内置的代理可以直接插入或轻松定制以适应特定用例,这一点尤其受欢迎。同时,开发者们也希望有更多的可定制性,例如集成使用其他编程语言或框架构建的自定义代理。
  • 基于聊天的代理到代理通信是一种直观的协作模式,使开发人员可以轻松上手并让人类参与其中。随着开发人员在更广泛的场景中使用代理,他们寻求在协作模式中更多的灵活性。例如,开发人员希望与代理构建可预测的、有序的工作流,并将它们与非基于聊天的新用户界面集成。
  • 虽然开发者很容易开始使用 AutoGen,但调试和扩展代理团队应用程序却更具挑战性。
  • 有许多机会可以提高代码质量。

这些经验教训,以及来自微软其他代理工作的许多其他经验,促使我们退一步,为新方向奠定基础。几个月前,我们开始投入时间,将这些经验提炼成AutoGen未来的路线图。这导致了AutoGen 0.4的开发,这是一个从基础开始的框架的全面重新设计。AutoGen 0.4采用计算参与者模型,以支持分布式、高度可扩展、事件驱动的代理系统。这种方法提供了许多优势,例如:

  • 可组合性。以这种方式设计的系统更具可组合性,允许开发者引入他们自己在不同框架或编程语言中实现的代理,并利用复杂的代理模式构建更强大的系统。
  • 灵活性. 它允许创建确定性的、有序的工作流程以及事件驱动或去中心化的工作流程,使客户能够更容易地引入自己的编排或与其他系统集成。它还为人在环场景(无论是主动还是被动)提供了更多机会。
  • 调试和可观测性。事件驱动的通信将消息传递从代理转移到集中化组件,使得无论代理实现如何,都能更容易地观察和调试它们的行为。
  • 可扩展性. 基于事件的架构使得分布式和云部署的代理成为可能,这对于构建可扩展的AI服务和应用程序至关重要。

今天,我们很高兴与大家分享我们的进展,并邀请所有人一起合作,提供反馈以改进AutoGen,并帮助塑造多代理系统的未来。

作为第一步,我们正在向主分支提交一个pull request,包含0.4版本的当前开发状态。大约一周后,我们计划将其合并到主分支并继续开发。尽管在0.4版本准备好发布之前还有很多工作要做,但请记住这仍然是一个进行中的工作。

从 AutoGen 0.4 开始,该项目将有三个主要库:

  • 核心 - 一个事件驱动代理系统的基础构建模块。
  • AgentChat - 一个任务驱动的高级API,基于核心构建,包括群组聊天、代码执行、预构建代理等。这是与AutoGen 0.2最相似的API,也将是最容易迁移的API。
  • 扩展 - 核心接口的实现和第三方集成(例如,Azure代码执行器和OpenAI模型客户端)。

AutoGen 0.2 仍然可用,它在 0.2 分支 中进行开发和维护。对于寻找稳定版本的用户,我们建议暂时继续使用 0.2。它可以通过以下方式安装:

pip install autogen-agentchat~=0.2

使用这个新的包名称是为了与即将发布的0.4版本中的新包保持一致:autogen-core, autogen-agentchat, 和 autogen-ext

最后,我们将使用GitHub Discussion作为新版本的官方社区论坛,并且今后所有与AutoGen项目相关的讨论也将在此进行。我们期待在那里与您见面。