AutoGen 项目介绍
项目概述
AutoGen 是一个开源框架,专门用于构建 AI 代理系统。这个框架旨在简化事件驱动、分布式、可扩展和高弹性的代理应用程序的创建过程。借助 AutoGen,用户可以快速搭建起自我协作或在人类监督下执行任务的 AI 代理系统。
AutoGen 的设计使得 AI 开发和研究变得容易,通过集成多个大型语言模型 (LLMs)、相关工具和先进的多代理设计模式,可以在本地开发和测试代理系统,然后根据需求迁移到云端环境。
核心特性
AutoGen 提供了一系列核心特性,使得开发者可以更简单、高效地构建和管理代理系统:
- 异步消息传递:支持代理之间通过异步消息进行沟通,支持事件驱动和请求/响应的交互模式。
- 全面类型支持:在所有接口中使用类型,并在构建时强制进行类型检查,以保证质量和一致性。
- 可扩展和分布式:设计复杂的分布式代理网络,可以跨越组织边界进行操作。
- 模块化和可扩展性:通过可插拔的组件(如自定义代理、工具、内存和模型)定制系统。
- 跨语言支持:允许代理在不同编程语言之间进行互操作。目前支持 Python 和 .NET,未来将支持更多语言。
- 可观测性和调试:内置工具和功能用于跟踪、追踪和调试代理交互和工作流,包括支持 OpenTelemetry 的标准可观测性。
API 分层
AutoGen 是基于分层架构构建的,目前有三个主要的 API 供应用程序选择:
- Core
- AgentChat
- Extensions
Core
Core API (autogen-core
) 基于 Actor 模型构建,支持异步消息传递和基于事件的工作流。该层的代理可以使用直接消息或主题广播的方式进行通信,能够分布式部署,支持多种编程语言。
AgentChat
AgentChat API (autogen-agentchat
) 是任务驱动的接口,类似于 AutoGen 0.2 版本,允许定义会话代理并将其组成团队来解决任务。这个 API 屏蔽了许多底层系统概念的复杂性。
Extensions
Extensions 包含使用第三方系统实现核心接口的组件,比如 OpenAI 模型客户端和 Azure 代码执行器。除了内置的扩展包,该包还支持用户贡献的扩展。
快速开始
Python 示例
安装所需包:
pip install 'autogen-agentchat==0.4.0.dev6' 'autogen-ext[openai]==0.4.0.dev6'
一个简单的天气查询代理示例:
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.task import Console, TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models import OpenAIChatCompletionClient
async def get_weather(city: str) -> str:
return f"The weather in {city} is 73 degrees and Sunny."
async def main() -> None:
weather_agent = AssistantAgent(
name="weather_agent",
model_client=OpenAIChatCompletionClient(
model="gpt-4o-2024-08-06",
),
tools=[get_weather],
)
termination = TextMentionTermination("TERMINATE")
agent_team = RoundRobinGroupChat([weather_agent], termination_condition=termination)
stream = agent_team.run_stream(task="What is the weather in New York?")
await Console(stream)
asyncio.run(main())
项目规划
- AutoGen 0.2:当前稳定版本,我们将继续接受这个版本的错误修复和小的增强。
- AutoGen 0.4:作为全新架构的首个版本,目前仍处于预览阶段,目标是提升接口的稳定性,完善文档、教程、示例和内置代理集合。我们期待与社区合作,共同定义 AutoGen 的未来。
常见问题
- AutoGen 0.4 是什么?
AutoGen 0.4 是从零重写的版本,旨在创建一个更健壮、可扩展、易用的跨语言库。 - 为何进行这些改变?
我们听取了用户反馈,结合多种 AI 代理项目的经验,设计了一个更具灵活性和可扩展性的框架。
结语
AutoGen 致力于通过开放源代码和与社区合作,推动 AI 代理系统的发展。我们欢迎任何使用者和开发者对项目的反馈和贡献,以共同促进 AutoGen 的进步和完善。