ag2
AG2(前身为 AutoGen)是一款开源的 AI 智能体操作系统,旨在简化多智能体协作应用的开发与研究。它核心解决了让多个 AI 智能体高效沟通、自主协作以解决复杂任务的问题,支持从简单的对话交互到涉及代码执行、工具调用的自动化工作流。
AG2 特别适合开发者、研究人员以及希望构建高级 AI 应用的技术团队使用。通过它,用户可以轻松编排多个智能体,让它们像团队成员一样分工合作:有的负责规划,有的负责写代码,有的负责审查结果。其独特的技术亮点包括灵活的“人机协同”模式,允许人类在关键节点介入决策;支持接入多种大语言模型(LLM);以及提供丰富的预设对话模式,能够模拟现实中的协作场景。
作为一个完全开源的项目,AG2 正朝着 1.0 版本稳步演进,致力于成为构建下一代自主 AI 系统的基石。无论你是想探索多智能体前沿研究,还是希望快速落地企业级自动化方案,AG2 都提供了强大而灵活的框架支持,帮助你将创意转化为现实。
使用场景
某电商数据团队需要每日自动抓取竞品价格、分析波动趋势并生成带图表的分析报告发送给运营总监。
没有 ag2 时
- 流程割裂严重:开发人员需分别编写爬虫脚本、数据分析代码和邮件发送逻辑,三个环节独立运行,一旦中间出错需人工介入重启。
- 异常处理困难:当爬虫因反爬机制失败或 LLM 输出格式错误时,缺乏自动重试或自我修正机制,导致任务直接中断。
- 多模型协作复杂:难以让擅长代码的模型与擅长分析的模型动态交互,通常只能硬编码固定流程,无法应对灵活的分析需求。
- 人工干预频繁:每次生成报告前都需要人工检查数据准确性,无法实现真正的“无人值守”自动化。
使用 ag2 后
- 多代理自动协同:构建“爬虫代理”、“分析代理”和“报告代理”,三者自动对话协作,爬虫获取数据后直接交给分析代理,完成后触发报告生成,全流程无缝衔接。
- 具备自愈能力:若代码执行报错,ag2 内的代理会自动识别错误信息并尝试重新编写代码修复,大幅减少任务中断率。
- 动态工具调用:不同代理可根据任务需求自主调用搜索、代码解释器或绘图工具,无需预设死板流程,灵活应对各种数据异常情况。
- 人机回路可选:仅在关键决策点(如数据异常波动过大)暂停并请求人类确认,其余时间完全自动化运行,显著释放人力。
ag2 通过将分散的脚本转化为能自主沟通、协作且具备自愈能力的智能体网络,将原本耗时数小时的人工运维工作转变为稳定高效的全自动闭环。
运行环境要求
- Windows
- Linux
- macOS
未说明
未说明

快速开始
📚 文档 | 💡 示例 | 🤝 贡献 | 📝 引用论文 | 💬 加入 Discord
AG2 是由 AutoGen 发展而来,完全开源。我们诚邀各组织的合作者共同参与贡献。
[!IMPORTANT] AG2 正在迈向 v1.0。 当前框架将在接下来的几个小版本中通过弃用功能逐步优化,并转入维护模式。测试版框架(
autogen.beta)将在 v1.0 时成为 AG2 的正式版本。
AG2:面向 AI 代理的开源 AgentOS
AG2(原名 AutoGen)是一个开源编程框架,用于构建 AI 代理,并促进多个代理之间的协作以完成任务。AG2 致力于简化代理式 AI 的开发和研究。它提供了多种功能,包括能够相互通信的代理、对各种大型语言模型(LLM)的支持及工具使用支持、自主与人机协作的工作流,以及多代理对话模式。
该项目目前由来自多家机构的志愿者团队维护。如果您有意成为维护者,请通过support@ag2.ai联系项目管理员 Chi Wang 和 Qingyun Wu。
目录
入门指南
有关 AG2 概念和代码的分步教程,请参阅我们的文档中的基本概念部分。
安装
AG2 需要 Python 版本 >= 3.10, < 3.14。AG2 可通过 PyPI 上的 ag2(或其别名 autogen)获取。
Windows/Linux:
pip install ag2[openai]
Mac:
pip install 'ag2[openai]'
默认会安装最低依赖项。您可以根据需要的功能安装额外选项。
配置 API 密钥
为保持 LLM 依赖关系整洁,并避免意外提交包含 API 密钥的代码,我们建议将密钥存储在配置文件中。
在我们的示例中,我们使用名为 OAI_CONFIG_LIST 的文件来存储 API 密钥。您可以选择任何文件名,但请务必将其添加到 .gitignore 中,以免被提交到版本控制系统。
您可以使用以下内容作为模板:
[
{
"model": "gpt-5",
"api_key": "<your OpenAI API key here>"
}
]
运行你的第一个代理
创建一个脚本或 Jupyter Notebook,并运行你的第一个代理。
from autogen import AssistantAgent, UserProxyAgent, LLMConfig
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
assistant = AssistantAgent("assistant", llm_config=llm_config)
user_proxy = UserProxyAgent("user_proxy", code_execution_config={"work_dir": "coding", "use_docker": False})
user_proxy.run(assistant, message="总结 Python 列表和元组的主要区别。").process()
示例应用
我们维护了一个专门的仓库,其中包含各种应用,帮助您快速上手不同的用例,或者您可以从我们的 Jupyter 笔记本集合开始。
不同代理概念介绍
AG2 提供了多种代理概念,帮助您构建 AI 代理。以下是其中最常见的几种。
- 可对话代理:能够发送消息、接收消息并使用 GenAI 模型、非 GenAI 工具或人工输入生成回复的代理。
- 人机协作:在对话中加入人工输入。
- 多代理编排:用户可以利用内置的对话模式(如群体协作、群聊、嵌套聊天、顺序聊天等)编排多个代理,也可以通过注册自定义回复方法来自定义编排方式。
- 工具:可被代理注册、调用和执行的程序。
- 高级概念:AG2 还支持结构化输出、RAG、代码执行等功能等。
可对话智能体
ConversableAgent 是 AG2 的基础构建模块,旨在实现 AI 实体之间的无缝通信。这种核心智能体类型负责消息交换和响应生成,是框架中所有智能体的基类。
我们从一个简单的示例开始,其中两个智能体协同工作:
- 一个 编码员智能体,用于编写 Python 代码。
- 一个 评审员智能体,用于对代码进行评审而不重写代码。
import logging
from autogen import ConversableAgent, LLMConfig
# 配置日志记录
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# 加载 LLM 配置
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# 定义智能体
coder = ConversableAgent(
name="coder",
system_message="你是一名 Python 开发者。请编写简短的 Python 脚本。",
llm_config=llm_config,
)
reviewer = ConversableAgent(
name="reviewer",
system_message="你是一名代码评审员。请分析提供的代码并提出改进建议。不要生成代码,只需提出改进建议。",
llm_config=llm_config,
)
# 开始对话
response = reviewer.run(
recipient=coder,
message="编写一个计算斐波那契数列的 Python 函数。",
max_turns=10
)
response.process()
logger.info("最终输出:\n%s", response.summary)
多智能体编排
AG2 通过灵活的编排模式实现了复杂的多智能体协作,允许您创建由专业智能体协同工作的动态系统,以解决复杂问题。
以下是如何构建一个由 教师、课程规划师 和 评审员 组成的团队,共同设计课程计划:
import logging
from autogen import ConversableAgent, LLMConfig
from autogen.agentchat import run_group_chat
from autogen.agentchat.group.patterns import AutoPattern
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# 定义课程规划师和评审员
planner_message = "你是一名课堂课程规划师。根据给定的主题,为四年级学生编写一份课程计划。"
reviewer_message = "你是一名课堂课程评审员。将计划与课程标准进行比较,并提出最多三条改进建议。"
lesson_planner = ConversableAgent(
name="planner_agent",
system_message=planner_message,
description="创建或修改课程计划。",
llm_config=llm_config,
)
lesson_reviewer = ConversableAgent(
name="reviewer_agent",
system_message=reviewer_message,
description="为课程计划提供一轮反馈。",
llm_config=llm_config,
)
teacher_message = "你是一名课堂教师。你决定主题,并与规划师和评审员合作,最终确定课程计划。满意后,请输出 DONE!"
teacher = ConversableAgent(
name="teacher_agent",
system_message=teacher_message,
is_termination_msg=lambda x: "DONE!" in (x.get("content", "") or "").upper(),
llm_config=llm_config,
)
auto_selection = AutoPattern(
agents=[teacher, lesson_planner, lesson_reviewer],
initial_agent=lesson_planner,
group_manager_args={"name": "group_manager", "llm_config": llm_config},
)
response = run_group_chat(
pattern=auto_selection,
messages="让我们向孩子们介绍太阳系吧。",
max_rounds=20,
)
response.process()
logger.info("最终输出:\n%s", response.summary)
人机协作
人类监督通常对于验证或指导 AI 输出至关重要。
AG2 提供了 UserProxyAgent,用于无缝集成人工反馈。
在此,我们将 教师–规划师–评审员 示例扩展为引入一名 人类评审员,对最终课程计划进行验证:
import logging
from autogen import ConversableAgent、LLMConfig、UserProxyAgent
from autogen.agentchat import run_group_chat
from autogen.agentchat.group.patterns import AutoPattern
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# 与之前相同的智能体,但现在人类评审员会将任务传递给规划师,规划师会在收到“APPROVED”时终止流程
planner_message = "你是一名课堂课程规划师。根据给定的主题,为四年级学生编写一份课程计划。"
reviewer_message = "你是一名课堂课程评审员。将计划与课程标准进行比较,并提出最多三条改进建议。"
teacher_message = "你是一位经验丰富的课堂教师。你不准备计划,而是为规划师提供关于关键主题的简单指导,以帮助其准备课程计划。"
lesson_planner = ConversableAgent(
name="planner_agent",
system_message=planner_message,
description="在提交评审之前创建或修改课程计划。",
is_termination_msg=lambda x: "APPROVED" in (x.get("content", "") or "").upper(),
human_input_mode="NEVER",
llm_config=llm_config,
)
lesson_reviewer = ConversableAgent(
name="reviewer_agent",
system_message=reviewer_message,
description="在提交给人类评审员之前,为课程计划提供一轮反馈,然后返回给规划师。",
llm_config=llm_config,
)
teacher = ConversableAgent(
name="teacher_agent",
system_message=teacher_message,
description="在需要时提供关于主题和内容的指导。",
llm_config=llm_config,
)
human_validator = UserProxyAgent(
name="human_validator",
system_message="你是一名人类教育工作者,负责对课程计划进行最终批准。",
description="评估拟议的课程计划,批准或要求修改,然后再返回给规划师。",
)
auto_selection = AutoPattern(
agents=[teacher、lesson_planner、lesson_reviewer],
initial_agent=teacher,
user_agent=human_validator,
group_manager_args={"name": "group_manager", "llm_config": llm_config},
)
response = run_group_chat(
pattern=auto_selection,
messages="让我们向孩子们介绍太阳系吧。",
max_rounds=20,
)
response.process()
logger.info("最终输出:\n%s", response.summary)
工具
通过 工具,智能体可以显著增强其功能,利用外部数据、API 或函数扩展其能力。
import logging
from datetime import datetime
from typing import Annotated
from autogen import ConversableAgent、register_function、LLMConfig
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
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")
return date.strftime("%A")
date_agent = ConversableAgent(
name="date_agent",
system_message="您负责为给定日期查找星期几。",
llm_config=llm_config,
)
executor_agent = ConversableAgent(
name="executor_agent",
human_input_mode="NEVER",
llm_config=llm_config,
)
# 注册工具
register_function(
get_weekday,
caller=date_agent,
executor=executor_agent,
description="获取给定日期的星期几",
)
# 在聊天中使用工具
chat_result = executor_agent.initiate_chat(
recipient=date_agent,
message="我出生于1995年3月25日,那天是星期几呢?",
max_turns=2,
)
logger.info("最终输出:\n%s", chat_result.chat_history[-1]["content"])
高级代理设计模式
AG2 支持更高级的概念,帮助您构建 AI 代理工作流。更多信息请参阅文档。
公告
🔥 🎉 2024年11月11日: 我们将 AutoGen 升级为 AG2! 一个新的组织 AG2AI 已成立,用于在开放治理下托管 AG2 及相关项目的开发。请查看 AG2 的全新面貌。
📄 许可证: 自 v0.3 版起,我们采用 Apache 2.0 许可证。这不仅增强了我们对开源协作的承诺,也为贡献者和用户提供了额外的保护。
🎉 2024年5月29日:DeepLearning.ai 推出了新短课程 使用 AutoGen 的 AI 代理设计模式,该课程由 Microsoft 和宾夕法尼亚州立大学合作开发,由 AutoGen 的创建者 Chi Wang 和 Qingyun Wu 主讲。
🎉 2024年5月24日:Foundation Capital 在《福布斯》上发表了文章 多智能体 AI 的前景,并发布了一段视频 现实世界中的 AI 第二集:与 Chi Wang 探讨多智能体 AI 和 AutoGen。
🎉 2024年4月17日:Andrew Ng 在 The Batch 新闻通讯 中提到了 AutoGen,还在红杉资本的 AI Ascent 活动(3月26日)上分享了 AI 代理工作流的未来发展方向。
代码风格与 lint 检查
该项目使用 prek 钩子来维护代码质量。在提交贡献之前:
- 安装 prek:
pip install prek
prek install
- 钩子会在每次提交时自动运行,或者您可以手动运行:
prek run --all-files
相关论文
贡献者墙
引用本项目
@software{AG2_2024,
author = {Chi Wang 和 Qingyun Wu 以及 AG2 社区},
title = {AG2:面向 AI 代理的开源 AgentOS},
year = {2024},
url = {https://github.com/ag2ai/ag2},
note = {可在 https://docs.ag2.ai/ 获取},
version = {最新版}
}
许可证
本项目采用 Apache License, Version 2.0 (Apache-2.0) 许可证。
本项目是从 AutoGen 分支出来的,包含两种许可证下的代码:
来自 https://github.com/microsoft/autogen 的原始代码采用 MIT 许可证。详细信息请参阅 LICENSE_original_MIT 文件。
本分支中的修改和新增内容采用 Apache License, Version 2.0 许可证。完整的许可文本请参阅 LICENSE 文件。
我们已记录这些变更,以确保透明度,并向用户和贡献者社区清晰地说明情况。更多详情请参阅 NOTICE 文件。
版本历史
v0.11.52026/04/04v0.11.42026/03/17v0.11.32026/03/16v0.11.22026/02/27v0.11.12026/02/16v0.11.02026/02/10v0.10.52026/01/30v0.10.42026/01/15v0.10.32025/12/19v0.10.22025/12/05v0.10.12025/11/14v0.10.02025/10/22v0.9.102025/10/03v0.9.92025/08/20v0.9.8.post12025/08/15v0.9.82025/08/15v0.9.72025/07/25v0.9.62025/07/08v0.9.52025/07/04v0.9.42025/06/28常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。