AG2 v1.0 拆包之后:Network、Agent 与 ag2-classic 的取舍
AG2 (formerly AutoGen): The Open-Source AgentOS.Join us at: https://discord.gg/sNGSwQME3x
秒懂
- 它是什么?
- AG2(原 AutoGen)在 v1.0 把协议驱动的框架放到了顶层 ag2 包,经典 ConversableAgent 体系迁往 ag2ai/ag2-classic。这不是一次可以直接升级的版本迭代,而是一次导入名、Agent 模型和编排方式同时改变的重写。
- 适合谁用?
- 已经在用 autogen.* 命名空间的项目不要升级到 ag2>=1.0,README 明确写了这不是 drop-in upgrade,正确做法是 pip install ag2-classic 并继续看 classic.docs.ag2.ai。准备新建多智能体项目、且能接受 async 全程、能接受 Network 替代 GroupChat 的团队,可以从 pip install 'ag2[openai]' 起步。
- 能商用吗?
- 可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 1 天前。
- 用什么语言写的?
- 主要是 Python(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
v1.0 做的不是升级,是拆包
AG2 这个仓库的前身是 AutoGen。README 顶部用一段加粗提示说明了现在的状态:如果你在找 ConversableAgent、GroupChat,或者还在写 import autogen,那属于 AG2 Classic。从 v1.0 起,协议驱动的框架成为顶层包,导入名是 ag2;经典框架搬到独立仓库 ag2ai/ag2-classic,文档站也换成了 classic.docs.ag2.ai。
这意味着 pip install ag2 得到的包里不再包含 autogen 这个导入名,也不包含经典 Agent 类。README 的表格把两者的差异列得很清楚:导入分别是 import autogen 和 import ag2,核心 Agent 分别是 ConversableAgent 和 Agent,多智能体编排分别是 GroupChat / swarms / nested chats 和 Network(hub + channels)。
它解决的问题是命名和职责的混淆。过去一个包同时承载两套设计差异很大的 Agent 模型,文档、示例和 issue 混在一起。拆开之后,新用户看到的 ag2 只有一套模型,老用户被明确告知留在 ag2-classic。代价是升级路径被切断:README 直接写明 AG2 v1.0 不是从 Classic 的 drop-in upgrade,agent model、orchestration、imports 全变了。
Network 用 hub 加 channel 替换 GroupChat
README 把多智能体的新形态称为 Network,括号里注明是 hub + channels。这是本次拆包中变化最大的部分,也是判断要不要迁移的核心。
Classic 时代的 GroupChat 依赖 GroupChatManager 这个中心角色来挑选下一个发言者,nested chats 和 swarms 是在这个基础上叠加的对话模式。Network 换了一套词汇:hub 和 channel。README 没有在正文里展开 hub 与 channel 的具体数据结构,只给了一个指向 docs.ag2.ai/docs/user-guide/network/overview/ 的链接。如果你要评估迁移工作量,这个页面是必须先读的,仅凭 README 无法判断 channel 的注册方式和消息路由规则。
README 另给了一个 group chat migration guide 的链接,路径是 docs.ag2.ai/docs/user-guide/network/migration_from_group_chat/。这个命名本身说明官方承认两者不是一一对应,需要一份专门的迁移文档。凡是代码里出现 GroupChatManager、register_function 的地方,都属于需要逐处改写的范围。
agent harness:知识注入与上下文压缩
目录里有一节叫 The agent harness: knowledge and compaction,位于 Orchestrating Multiple Agents 和 Advanced agentic design patterns 之间。这是 v1.0 相对 Classic 新增的一层抽象,README 用 harness 这个词把知识管理和上下文压缩归到同一个概念下。
从位置可以推断它的职责:Agent 本身负责推理和工具调用,harness 负责在推理之前把外部知识塞进上下文,以及在对话变长时做 compaction。这两件事在 Classic 里通常由使用者自己在消息列表上手工处理,或者靠 nested chat 绕开。
需要提醒的是,README 正文并没有给出 harness 的类名、配置键或代码示例,只在目录中列出标题。compaction 的触发阈值、知识源的接入方式,这些都需要到文档站确认。仅凭仓库材料,无法判断它是自动触发还是需要显式调用。
安装与配置:extra 决定你能用哪家模型
AG2 要求 Python 版本 >= 3.10,这一点 README 用加粗标注。包名是 ag2,在 PyPI 上可查。
安装命令按平台分两种写法。Windows/Linux 是 pip install ag2[openai];Mac 是 pip install 'ag2[openai]',单引号是为了防止 shell 展开方括号。默认安装只带最小依赖,模型 provider 通过 extra 选择,README 列举的有 ag2[openai]、ag2[anthropic]、ag2[gemini]、ag2[ollama]。
密钥走各家标准环境变量,README 的原话是每个 provider config 读取它自己的标准环境变量,所以密钥不需要硬编码或提交进仓库:export OPENAI_API_KEY="<your-api-key>",其余对应 ANTHROPIC_API_KEY、GEMINI_API_KEY 等。如果每次请求要带不同的密钥,也可以显式传入,README 给的例子是 OpenAIConfig(model="gpt-4o-mini", api_key=...)。
还有一个容易忽略的前提:AG2 全程是 async 的,README 在 Run your first agent 一节开头就写了这一句,但提供的材料在这里被截断,没有给出完整的启动代码。
async 全程是门槛,不是细节
README 用一句话交代了 AG2 是 async throughout,然后材料就截断了。这句话的分量比它看起来重。
Classic 的 ConversableAgent 和 GroupChat 在大量示例里是同步调用,initiate_chat 之后直接拿返回值。如果新框架的入口是协程,那么调用方要么自己进入事件循环,要么把整条调用链改成 async。对于嵌在 Flask 视图、Django 同步中间件或者 Celery 同步任务里的代码,这不是改几行的事。
README 没有给出同步包装器的说明,也没有说明是否提供 run 之类的阻塞入口。这一点必须在动手前到文档站确认,否则很可能在写完 Agent 逻辑之后才发现调用方需要重构。对于只是想在现有同步服务里加一个 Agent 调用点的团队,这个约束本身就可能让 AG2 v1.0 变成错误的选择。
什么时候该留在 ag2-classic
README 对这个问题给了一个相当直接的判断方法:如果代码里出现 import autogen、from autogen import ConversableAgent, GroupChat、from autogen import AssistantAgent, UserProxyAgent 中的任意一个,你就在 Classic 上,应该留在那里。
留的方式是装另一个发行包:pip install ag2-classic。README 明确写了 Classic 仍在维护、仍可安装,已有代码继续工作,并建议锁定 classic 发行版而不是 ag2>=1.0。
这条边界值得认真对待。一个已经在生产里跑 GroupChat 加 register_function 的系统,迁移到 Network 意味着重新设计发言者选择逻辑、重新注册工具、重新处理同步到异步的转换,而收益在 README 里并没有对应的量化说明。除非你有明确理由要换编排模型,否则把依赖钉在 ag2-classic 上,比追新版本更划算。
另外要注意文档站是两套:新框架看 docs.ag2.ai,Classic 看 classic.docs.ag2.ai。搜索时如果混用,很容易拿到不匹配当前导入名的示例代码。
替代方案与维护成本
如果要横向比较,最直接的对照对象就是同一个项目拆出来的 ag2-classic。两者不是竞品,而是同一份代码谱系的两个分支,差别集中在三处:导入名(autogen 对 ag2)、核心 Agent(ConversableAgent 对 Agent)、编排方式(GroupChat 对 Network)。选哪一个,实际是在选编排模型,而不是在选功能多少。
维护成本方面,README 说明了项目由来自多个组织的志愿者维护,并给出联系邮箱 support@ag2.ai 用于申请成为 maintainer。这句话本身透露了信息:维护力量是志愿者构成,不是某家公司全职团队。从发布记录看,v1.0.2 到 v1.0.4 之间大约每两到三周一个版本,节奏不慢,但也没有长期支持版本的承诺。
许可证是 Apache-2.0。这个许可证允许商用和修改,通常附带专利授权条款,但具体的合规义务(比如 NOTICE 文件的处理、修改后是否需要标注)要看你所在组织的法务口径,这里不做法律意见。
最后一点,README 里出现了大量指向 docs.ag2.ai 的链接:Quick Start、Network overview、group chat migration guide、contributing guide。仓库本身更像入口页,真正的技术细节在文档站。评估这个项目时,把文档站当作主要材料,README 当作索引,会少走弯路。
编辑结论
已经在用 autogen.* 命名空间的项目不要升级到 ag2>=1.0,README 明确写了这不是 drop-in upgrade,正确做法是 pip install ag2-classic 并继续看 classic.docs.ag2.ai。准备新建多智能体项目、且能接受 async 全程、能接受 Network 替代 GroupChat 的团队,可以从 pip install 'ag2[openai]' 起步。动手前先确认三件事:你的 Python 是否 >= 3.10;你的编排逻辑里有没有 GroupChatManager 这类只存在于 Classic 的角色;你选的模型 provider 是否有对应的 ag2[...] extra。第一段可跑的代码建议直接照 docs.ag2.ai 的 Quick Start 抄,而不是从旧 AutoGen 教程改。
社区笔记