来源:docs.ag2.ai · github.com/ag2ai/ag2 · DeepLearning.ai 课程 | 整理时间:2026-04-07
什么是 AG2?
AG2 是由 AutoGen 原作者 Chi Wang 和 Qingyun Wu 创建的开源多 Agent 协作框架。它延续了 AutoGen v0.2 的对话式架构,提供了简洁、同步的 API,非常适合快速构建多 Agent 应用。
AG2 vs Microsoft AutoGen
2024 年 9 月,原作者离开微软后创立了 AG2AI 组织。AutoGen 生态由此分为两个项目:
| 维度 | AG2 | Microsoft AutoGen v0.4 |
|---|---|---|
| 维护者 | 原作者 Chi Wang 等 | 微软团队 |
| 架构 | 同步、对话式 | 异步、事件驱动 |
| API 风格 | 简洁,入门友好 | 低级 runtime,面向生产 |
| 包名 | ag2 / autogen |
autogen-core 等 |
| 许可证 | Apache 2.0 | MIT |
| 当前版本 | v0.10.x | v0.4+ |
如果你是 AutoGen 老用户:AG2 完全兼容 v0.2 API,迁移零成本。
安装与配置
安装
# 基础安装(OpenAI 支持)
pip install 'ag2[openai]'
# 多模型支持
pip install 'ag2[openai,gemini,anthropic,mistral,together]'
# 或使用旧包名
pip install 'autogen[openai]'
API Key 配置
方式一:配置文件 OAI_CONFIG_LIST
[
{
"model": "gpt-4o",
"api_key": "your-key-here"
}
]
方式二:环境变量
from autogen import LLMConfig
import os
llm_config = LLMConfig(config_list={
"api_type": "openai",
"model": "gpt-4o",
"api_key": os.environ["OPENAI_API_KEY"],
})
支持的 LLM 提供商
OpenAI、Azure OpenAI、Anthropic Claude、Google Gemini、Mistral、DeepInfra、TogetherAI、本地模型(Ollama 等)。
核心概念
五大核心类
| 类 | 职责 |
|---|---|
ConversableAgent |
基础构建块,可收发消息、调用 LLM 或工具 |
AssistantAgent |
AI 助手,默认使用 LLM 生成回复 |
UserProxyAgent |
人类代理,可执行代码、提供人工输入 |
GroupChat |
管理多 Agent 群聊,配置发言者选择策略 |
LLMConfig |
LLM 配置对象,替代旧版字典式配置 |
编排模式
AG2 提供五种可组合的对话模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Two-Agent Chat | 两个 Agent 直接对话 | 简单问答、代码审查 |
| Sequential Chat | 链式对话,前一步的摘要传递给下一步 | 流水线任务 |
| Group Chat | 多 Agent 共享对话,自动选择发言者 | 头脑风暴、协作设计 |
| Nested Chat | 将工作流打包成单个 Agent 复用 | 模块化组合 |
| Unified Group Chat (v0.9+) | 统一的群聊 API,支持多种编排模式 | 所有复杂场景 |
实战示例
示例 1:双 Agent 代码审查
from autogen import ConversableAgent, LLMConfig
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# 开发者 Agent
coder = ConversableAgent(
name="coder",
system_message="你是一位 Python 开发者,编写简洁高效的代码。",
llm_config=llm_config,
)
# 审查者 Agent
reviewer = ConversableAgent(
name="reviewer",
system_message="你是一位严格的代码审查者。指出代码中的问题和改进建议,不要重写代码。",
llm_config=llm_config,
)
# 启动对话
response = reviewer.run(
recipient=coder,
message="写一个计算斐波那契数列的 Python 函数",
max_turns=10
)
response.process()
print(response.summary)
示例 2:多 Agent 群聊(AutoPattern)
from autogen import ConversableAgent, LLMConfig
from autogen.agentchat import run_group_chat
from autogen.agentchat.group.patterns import AutoPattern
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# 产品经理
planner = ConversableAgent(
name="planner",
system_message="你是产品经理,根据需求制定技术方案。",
description="制定技术方案和任务拆解",
llm_config=llm_config,
)
# 开发者
developer = ConversableAgent(
name="developer",
system_message="你是全栈开发者,根据方案编写代码。",
description="实现技术方案",
llm_config=llm_config,
)
# 测试者
tester = ConversableAgent(
name="tester",
system_message="你是测试工程师,验证代码质量和功能正确性。",
description="测试和验证实现",
llm_config=llm_config,
)
# 配置自动选择发言者
auto_pattern = AutoPattern(
agents=[planner, developer, tester],
initial_agent=planner,
group_manager_args={"name": "manager", "llm_config": llm_config},
)
# 启动群聊
response = run_group_chat(
pattern=auto_pattern,
messages="实现一个用户注册 API,包含邮箱验证",
max_rounds=20,
)
response.process()
print(response.summary)
示例 3:工具注册与人工介入
from datetime import datetime
from typing import Annotated
from autogen import ConversableAgent, register_function, LLMConfig
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# 定义工具函数
def get_weekday(date_string: Annotated[str, "日期格式: YYYY-MM-DD"]) -> str:
"""获取指定日期是星期几"""
date = datetime.strptime(date_string, "%Y-%m-%d")
weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
return weekdays[date.weekday()]
# 创建 Agent
date_agent = ConversableAgent(
name="date_agent",
system_message="你帮助用户查询日期信息。",
llm_config=llm_config,
)
executor = ConversableAgent(
name="executor",
human_input_mode="NEVER",
llm_config=llm_config,
)
# 注册工具
register_function(
get_weekday,
caller=date_agent,
executor=executor,
description="查询指定日期是星期几",
)
# 对话
result = executor.initiate_chat(
recipient=date_agent,
message="1995年3月25日是星期几?",
max_turns=2,
)
print(result.chat_history[-1]["content"])
v0.9 统一群聊 API
v0.9 版本将之前的 Group Chat 和 Swarm 合并为统一的 run_group_chat API,内置多种编排模式:
| Pattern | 说明 |
|---|---|
AutoPattern |
LLM 自动选择下一个发言者 |
ManualPattern |
显式指定发言顺序 |
RoundRobinPattern |
Agent 轮流发言 |
RandomPattern |
随机选择发言者 |
| 自定义 Pattern | 继承基类实现自定义编排逻辑 |
# 轮流发言示例
from autogen.agentchat.group.patterns import RoundRobinPattern
pattern = RoundRobinPattern(
agents=[agent_a, agent_b, agent_c],
)
response = run_group_chat(
pattern=pattern,
messages="讨论微服务 vs 单体架构的优劣",
max_rounds=12,
)
高级功能
| 功能 | 说明 |
|---|---|
| Structured Output | 强制 Agent 输出符合 Schema 的结构化数据 |
| RAG 集成 | 支持文档检索增强生成 |
| 代码执行 | 本地或 Docker 内执行代码 |
| Teachability | Agent 从交互中学习并记忆 |
| Context Variables | 群聊中跨 Agent 共享状态 |
| 序列化 | 保存和恢复对话状态 |
| A2A 协议 | 跨框架 Agent 互通(AG2 ↔ LangGraph ↔ CrewAI) |
版本路线图
| 版本 | 时间 | 变更 |
|---|---|---|
| v0.2.x | 2023-2024 | 原始 AutoGen,同步对话架构 |
| v0.3 | 2024.11 | AG2 分支成立,Apache 2.0 许可 |
| v0.9 | 2025.04 | 统一群聊 API,预置编排模式 |
| v0.10.x | 2025 下半年 | A2A 协议、Gemini Thinking 支持 |
| v1.0 | TBD | autogen.beta 转正,当前 API 进入维护模式 |
相关链接
- AG2 官方文档
- GitHub ag2ai/ag2
- DeepLearning.ai 课程
- ../ai-agents/agent-patterns.md — Agent 设计模式
- langgraph-guide.md — LangGraph 实战
- crewai-guide.md — CrewAI 实战