AutoGen
微软开源的多Agent对话框架,支持Agent间自主对话、工具调用和人机协作,适合构建复杂对话系统
AutoGen 快速入门
让两个 AI 一问一答地聊起来,聊出来的结果往往比一个 AI 闷头想更靠谱。
这是什么?适合谁?
AutoGen 是微软研究院在 2023 年开源的多 Agent 对话框架,核心思想特别朴素——让多个 AI 角色像在群里聊天一样来回发言。你定义几个「用户代理(User Proxy Agent)」和「助手代理(Assistant Agent)」,给它们各自一套系统消息和工具,它们就会在对话中你来我往,直到把任务解决。
这种「对话即编排」的设计,带来几个独特的优势:第一,任务的每一步都有迹可循,你能看到哪个 Agent 说了什么、用了什么工具;第二,引入人机协作非常自然,只要在某一轮把 UserProxyAgent 设为需要 human_input_mode="ALWAYS",Agent 就会停下来等真人拍板;第三,「群聊(GroupChat)」模式支持多 Agent 同时在同一个会话里发言,由一个「群管理员(GroupChatManager)」决定下一个谁说话,适合做头脑风暴、多视角分析。
相比 CrewAI 的「角色+任务」范式,AutoGen 更偏向**「对话驱动」:没有显式的「任务对象」,任务的完成体现在对话的终止条件上。这种范式对研究类、评审类、对话模拟类**任务非常友好,比如让两个 AI 互相质询来提高答案质量,或者让一个 AI 出题、另一个 AI 答题、第三个 AI 评分。
适合谁?如果你是研究者或算法工程师,想探索多 Agent 协作模式本身,AutoGen 提供了非常细粒度的控制接口;如果你要做的项目有强烈的「来回对话」特征(比如多角色面试、自动评审、协作式写作),AutoGen 是个直接对口的工具;如果你喜欢微软技术栈、用 VS Code + Python,API 风格也很熟悉。
不适合纯小白——你需要理解「对话循环」「终止条件」「人机交互」这些概念;也不适合需要复杂业务编排(带数据库、队列、状态机)的生产系统,那种场景用 LangGraph 或专门的 workflow 引擎更稳。
准备工作
开始之前,请准备以下几样:
- Python 3.8 及以上版本:AutoGen 支持范围比较广,但推荐 3.10+。访问 https://www.python.org/downloads/ 安装。
- 大模型 API Key:AutoGen 0.2 版本默认使用 OpenAI 的
gpt-4o系列。也可以通过config_list配置使用其他兼容 OpenAI 接口的服务(如 Azure OpenAI、DeepSeek、Ollama)。 - 一个代码编辑器:VS Code 即可。
- 网络通畅的环境:默认会调用 OpenAI 服务,如果用其他服务请配置对应的
base_url。
3 步快速上手
第 1 步:安装 AutoGen
在终端里新建一个虚拟环境并激活,然后安装:
python -m venv .venv
source .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1
pip install autogen-agentchat~=0.2
注意:AutoGen 0.2 之后分裂为多个子包,autogen-agentchat 是最常用的对话版,如果你要更底层的 autogen-core,再单独装。安装完成后,在终端输入 python -c "import autogen; print(autogen.__version__)" 验证。
第 2 步:写一个最小对话示例
新建 two_agent_chat.py 文件,粘贴:
import os
os.environ["OPENAI_API_KEY"] = "sk-..." # 也可放到环境变量
import autogen
config_list = [
{
"model": "gpt-4o-mini",
"api_key": os.environ["OPENAI_API_KEY"],
}
]
llm_config = {"config_list": config_list, "cache_seed": 42}
assistant = autogen.AssistantAgent(
name="assistant",
llm_config=llm_config,
system_message="你是一位 Python 工程师,擅长写简洁、健壮的代码。",
)
user_proxy = autogen.UserProxyAgent(
name="user_proxy",
human_input_mode="NEVER", # 设为 NEVER 表示全自动
code_execution_config={"work_dir": "coding", "use_docker": False},
max_consecutive_auto_reply=3,
)
user_proxy.initiate_chat(
assistant,
message="请写一个 Python 函数,输入一个整数 n,返回 n 以内的所有素数列表,并用几个用例测试一下。",
)
这段代码创建了两个 Agent:一个负责写代码的 assistant,一个负责「发任务+执行代码」的 user_proxy。human_input_mode="NEVER" 让它们完全自己聊,max_consecutive_auto_reply=3 限制最多自动来回 3 轮避免死循环。
第 3 步:跑起来
在终端执行:
python two_agent_chat.py
你会看到一个对话日志:user_proxy 提出需求 → assistant 写代码 → user_proxy 调用本地 Python 解释器跑代码 → 报错再让 assistant 改 → 直到跑通为止。跑完后,工程目录里会出现一个 coding/ 子文件夹,里面是 assistant 写出来的脚本和测试输出。
如果一直卡在对话里不结束,通常是 max_consecutive_auto_reply 设得太大或者终止条件没设,新手建议先用默认值(max_consecutive_auto_reply=3)熟悉行为。
常见踩坑
- 「装好了但 import 报错」:AutoGen 0.2 之后命名空间有变化,
import autogen对应的是autogen-agentchat;如果你看到ModuleNotFoundError,先pip show autogen-agentchat确认包存在。 - 「一直要让我输入 h 之类的命令」:默认
human_input_mode="TERMINATE"会在任务结束时让你确认;如果想全自动,改成"NEVER"(像示例里那样)。 - 「执行代码很慢或卡死」:AutoGen 默认会用本地 Python 解释器跑代码,生产环境强烈建议打开
use_docker=True,在 Docker 沙箱里跑更安全也更稳定。 - 「群聊模式分不清谁该说话」:GroupChat 里如果 Agent 超过 4 个,manager 经常选错发言者;新手建议从 2~3 个 Agent 起步,熟悉后再加。
- 「换了国产模型后,函数调用一直失败」:很多国产模型在 function calling 的 schema 上跟 OpenAI 略有差异,需要在
config_list里加"tool_choice"字段或者改用seed等参数;也可以考虑用 Ollama 跑本地模型做实验。 - 「对话总是被 max_consecutive_auto_reply 截断」:复杂任务往往需要 5 轮以上才能完成;同时配合
is_termination_msg=lambda x: "TERMINATE" in x.get("content","")这种自定义终止消息更灵活。
初级用法
- 两 Agent 协作写代码:一个写,一个执行并反馈,这是 AutoGen 最经典的「代码生成+执行」模式。
- 加入真人环节:把
human_input_mode设为"ALWAYS",让 Agent 在关键决策前停下来等真人确认,适合企业场景下需要审计的流程。 - 多 Agent 群聊评审:让一个 Agent 提方案、另一个 Agent 扮演「挑刺客户」、第三个 Agent 做总结,适合头脑风暴。
高级玩法
- 自定义 GroupChatManager:默认的 manager 用 LLM 决定下一个发言者,你可以自己写一个基于规则(比如「必须所有人都发过一轮才换下一题」)的 manager,提高可控性。
- 接 RAG 知识库:用
retrieve_utils工具把企业内部文档接进来,让 assistant Agent 在写代码或写文档前先检索相关知识。 - 分布式部署:AutoGen 0.2 提供了分布式 runtime(
autogen-core),可以把不同 Agent 部署到不同机器或进程,适合跨团队协作的复杂系统。
小技巧
cache_seed一定要设:LLM 调用很贵,设个固定cache_seed=42可以让同样输入复用同样输出,大幅降本。- system_message 写得像「JD」:写得越具体(比如「先思考边界条件,再写代码,再给 3 个测试用例」),Agent 表现越稳。
- 先用
gpt-4o-mini跑通再换强模型:很多 demo 用gpt-4o其实只是「图个稳」,gpt-4o-mini在简单任务上性价比更高。 - 善用
initiate_chat的message:第一句话往往决定了后续对话方向,把它写得清晰、有验收标准,事半功倍。 - 遇到环式对话:给
user_proxy加max_consecutive_auto_reply上限,或者在某个 Agent 的 system_message 里写明「如果上一轮没说新信息,就说 TERMINATE」。
参考链接
- AutoGen 官方文档
- AutoGen GitHub 仓库
- AutoGen 官方博客与论文
- AutoGen 0.2 迁移指南
- AutoGen 论文:AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation
本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。
同分类推荐
开源框架 分类下的其他 Agent