微软开源AI Agent大更新,重塑智能体!多层级更强架构
今天凌晨,微软宣布其开源AI Agent AutoGen 发布0.4版本,全面重新设计的库,在代码稳定性、鲁棒性、通用性和可扩展性方面更好,可以开发前沿高级AI Agent应用。
开源地址:https://github.com/microsoft/autogen
自微软开源AutoGen以来在github已获得超37000颗星,成为AI Agent领域应用最多的框架之一。由于开发者的快速增长,也带来了API效率低下以及调试和干预功能有限等难题。
同时开发者对AI Agent自动化行为的可观测性、控制能力、多层级Agent之间的协作有了更高的需求。所以,微软对AutoGen 进行了大更新,发布0.4版本一次性解决所有问题。
0.4版本亮点功能
异步消息传递:Agent之间的通信采用了异步消息机制,不需要等待其他Agent的响应就可以继续自动执行任务。这种全新模式非常适合事件驱动的应用程序,Agent可以响应特定事件或条件触发的动作。
同时也保留了传统的请求/响应模式,一个Agent发送请求并等待另一个Agent的回应。
模块化和可扩展性:用户可以轻松地使用自定义Agent、工具、内存和模型等,将不同的功能模块组合起来,构建出满足特定业务场景的Agent系统。例如,可以通过注册不同的Agent类型和工具,来实现特定的自动化功能。
可观测性和调试:内置的指标跟踪、消息追踪和调试工具,能够对Agent交互和工作流程进行监控和控制。可以清楚记录Agent工作流程中的每个步骤,包括大模型调用、工具使用、中间输出、内存状态和提示模板等。
这对于医疗诊断、法律分析、金融投资等,需要对Agent的运行流程进行精准追溯的行业非常有帮助。
可扩展性和分布式:用户可以设计复杂的、分布式的Agent网络,可以在组织边界之间无缝运行。通过分布式架构,可以将不同的Agent部署在不同的服务器或云平台上,实现资源的合理分配和高效利用。
内置和社区扩展:扩展模块通过高级模型客户端、Agent、多Agent团队和Agent型工作流程工具增强了框架的功能。社区支持允许开源开发者管理自己的扩展,可以基于框架开发出更多具有特定功能的Agent或工具,并分享给其他开发者使用。
对于一些常见的功能需求,开发者可以直接使用社区提供的扩展模块,无需从头开始开发,极大降低了开发的难度和门槛。
跨语言支持:AutoGen 现在允许不同编程语言编写的Agent之间进行互操作。例如,Python编写的Agent可以与.NET 编写的Agent协同工作。这项功能极大地拓宽了AutoGen的应用范围,并消除了由于编程语言差异造成的障碍
除了新增功能之外,微软对AutoGen的基础架构也进行了重塑,包括核心、Agent聊天和扩展。
核心,事件驱动Agent系统的基石;Agent聊天,基于核心层构建的任务驱动的高级API,具有群聊、代码执行、预构建Agent等功能;扩展,核心接口实现了和第三方集成,例如,Azure代码执行器和OpenAI模型等。
在UI方面也进行了大量更新:通过UI进行交互式反馈,添加用户Agent以实现在团队运行期间实时的用户输入和指导;
消息流可视化,通过直观的UI界面理解Agent通信,该界面映射消息路径和依赖关系;可视化拖拽界面,使用拖放组件到位置并配置它们的关系和属性的界面,可视觉化设计Agent。
集成Magentic-One
Magentic-One也是微软开源的一款多层级通用AI Agent,现在也集成在了AutoGen中。
Magentic-One是一个多层级架构,分别由Orchestrator、WebSurfer、FileSurfer、Coder和ComputerTerminal 5个AI Agent组成。
每个专业Agent都拥有自己的技能集和知识库,能够在各自的领域内高效运作。但它们并非孤立工作,而是通过 Orchestrator 进行协调,确保所有活动都是连贯且符合最终目标。
Orchestrator负责整个任务的规划、进度跟踪及错误恢复。当接收到一个任务时,会深度分析任务需求,并根据需要分配给其他四个专业Agent不同的子任务。
这些专业Agent分别擅长处理特定类型的任务,WebBrowser Agent 能处理网页浏览相关的操作,FileNavigatorAgent 管理本地文件系统的导航,Code WriterAgent负责编写和执行Python 代码片段,ComputerTerminal则允许执行操作系统级别的命令,从而为更高层次的任务提供底层支持。
在 Magentic-One 架构中,异步事件驱动是一个很重要功能。传统上,许多系统依赖于同步请求-响应模式,其中每次调用都需要等待结果返回才能继续下一步骤。而异步方法允许系统中的组件并发运行,在任何时候接收新输入或触发动作,而不会阻塞其他部分的工作。
例如,当 Orchestrator 分配了一个涉及下载网页内容并从中提取信息的任务给WebBrowserAgent 后可以立即开始加载页面,同时 Orchestrator 和其他Agent继续处理其他任务。
一旦页面加载完成并且所需的数据被提取出来,WebBrowserAgent 就会向 Orchestrator 发送通知,告知任务已完成并将结果传递回去。这种方式使得 Magentic-One 能够更有效地管理资源,减少等待时间,并更好地应对高并发场景下的挑战。
除了异步事件驱动架构外,Magentic-One 的另一个显著特点是其高度模块化的设计。这意味着每个Agent都可以被视为独立的功能单元,具有明确的职责范围和接口定义。结构简化了系统的构建流程,因为开发者只需关注单个Agent的功能实现,而不必担心与其他部分的交互细节。
更重要的是,模块化促进了代码重用和技术共享,已经存在的Agent可以直接应用于新的项目中,或者稍加修改就能适应不同的应用场景。
此外,Magentic-One 的模块化设计也带来了极大的可扩展性。随着技术的进步或业务需求的变化,可以轻松地添加新的Agent或更新现有Agent的功能,而不需要对整个系统进行大规模改造。例如,如果发现某个领域内的任务变得更加复杂,可以通过引入专门针对该领域的Agent来增强系统的处理能力。
本文转自 AIGC开放社区 ,作者:AIGC开放社区