什么是 AutoGen?
AutoGen 是微软用于构建对话式 Agent 与事件驱动多 Agent 应用的开源框架。当前 Python 架构将高层 AgentChat API、底层 Core 运行时、Extensions 提供方与工具集成,以及 Studio 原型界面分开。
快速了解
| 全称 | Microsoft AutoGen |
|---|---|
| 创建时间 | 由微软研究院开发,是目前 Github 上 Star 数最高的多智能体框架之一 |
| 规范文档 | 官方规范 |
工作原理
AutoGen 可以承载单 Agent 应用、对话式 Team、显式工作流和分布式 Agent 实验,但它不是一套可以跨版本互换的 API。AutoGen 0.4 对早期 0.2 ConversableAgent 设计进行了破坏性的异步重写:autogen-agentchat 提供面向任务的 Agent 与 Team,autogen-core 提供事件驱动 Actor 运行时,autogen-ext 提供模型客户端、MCP Workbench 与代码执行器。使用 from autogen import AssistantAgent, UserProxyAgent 的经典示例属于早期 API 血统,目前与 AG2 路线相关,不是 Microsoft AgentChat 当前 API。微软另行把 Microsoft Agent Framework 定义为 AutoGen 与 Semantic Kernel 新项目的后继路线。模型生成代码、Tool 调用和其他 Agent 的消息仍是不可信输入;启用执行器本身不等于具备授权、隔离或外部副作用的 exactly-once 保证。
主要特点
- 分层 API:AgentChat 提供高层 Agent 与 Team,Core 暴露事件驱动运行时
- 异步执行:当前 Agent、Team、流式响应与取消 API 以 async 控制流为主
- 扩展边界:模型客户端、MCP 集成、代码执行器和分布式运行时位于 `autogen-ext`
- 有状态协作:Agent 与 Team 可交换类型化消息,并保存或恢复受支持的状态
- 安全责任显式化:应用仍需执行 Tool 权限、隔离、审批、预算和副作用恢复策略
常见用途
- 构建只调用有界、带 Schema Tool 的对话助手
- 用显式停止条件与审批点协调实现者和审阅者 Agent
- 在生产加固前通过 AgentChat 或 Studio 验证多 Agent 交互
- 使用 Core 运行时研究事件驱动或分布式 Agent 协作
- 通过经审查的 Extensions 接入 MCP Server 或隔离代码执行器
示例
Loading code...常见问题
Microsoft AutoGen 和 AG2 是同一个项目吗?
不是。Microsoft AutoGen 当前使用 `autogen-agentchat`、`autogen-core`、`autogen-ext` 等包。AG2 是独立项目,延续经典 `autogen` 与 ConversableAgent 血统,并在推进自己的下一代 API。导入路径、版本路线和迁移指南必须按实际安装的项目分别核对。
AutoGen 与 Microsoft Agent Framework 有什么区别?
AutoGen 由事件驱动 Core 与高层 AgentChat Team 模型组成。Microsoft Agent Framework 是另一套 Python 与 .NET SDK,微软将其定义为 AutoGen 和 Semantic Kernel 的直接后继,并以类型化、图式 Workflow 作为多 Agent 编排核心。迁移需要映射客户端、消息、Tool、状态和编排,不能只替换包名。
Microsoft AutoGen 当前应安装哪些包?
高层 Python Agent 与 Team API 使用 `autogen-agentchat`,事件驱动运行时使用 `autogen-core`,提供方、MCP、执行器与运行时集成使用 `autogen-ext`。微软明确提示,`pyautogen` 0.2.34 之后的版本不是微软发布;维护 AutoGen 0.2 的团队应遵循微软迁移文档中的锁包建议。
AutoGen 能保证模型生成代码安全执行吗?
不能。AutoGen 提供包括 Docker 命令行执行器在内的集成,但隔离方式由应用选择和配置。应把生成代码视为不可信输入,限制文件系统与网络访问,避免直接在宿主机执行,设置时间和资源上限,并对高影响操作增加审批。
AutoGen 能接入本地或 OpenAI-compatible 模型吗?
AutoGen 提供模型客户端扩展;配置 `base_url` 和模型能力元数据后,可以接入部分 OpenAI-compatible Endpoint。不同服务对 Tool Calling、结构化输出、流式响应和取消的兼容程度不同,必须对目标 Endpoint 实测,不能依据接口名称假设完全兼容。