返回资料库 Agent 框架实战

AG2 实战:开源多 Agent 协作框架

AG2 是由 AutoGen 原作者 Chi Wang 和 Qingyun Wu 创建的开源多 Agent 协作框架。它延续了 AutoGen v0.2 的对话式架构,提供了简洁、同步的 API,非常适合快速构建多 Agent 应用。

来源: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 实战:开源多 Agent 协作框架 适合什么读者?

AG2 实战:开源多 Agent 协作框架 适合希望系统掌握 Agent 框架实战 的读者,尤其是需要从概念快速过渡到实践的人。页面包含主题摘要、相关阅读和来源链接,便于形成可执行的学习路径。

阅读 AG2 实战:开源多 Agent 协作框架 需要多久?

当前页面预估阅读时长约 8 分钟。建议先读正文结论,再根据“同专题延伸”继续阅读,通常 20 到 40 分钟可以建立完整主题框架。

如何把 AG2 实战:开源多 Agent 协作框架 的内容用于实际项目?

先按正文中的关键概念完成最小可运行示例,再把示例嵌入你当前项目流程。你可以结合来源链接验证细节,并使用同专题文章补齐部署、协作和评估步骤。