大家好,我是木木。
今天给大家分享一个工程化的 Python 库,autogen。
autogen
如果说 crewai 更像是把多个 AI 角色组织成一个小团队,那么 autogen 更像是在给这个团队补工程骨架:Agent 怎么收发消息、多个 Agent 怎么组成 Team、流程什么时候停止、模型和工具能力怎么接进来、后续怎么扩展到更复杂的运行时。
它适合承接“让 AI 调工具、走流程、和人协作”的需求,但不建议把它理解成一个只写几行 prompt 的玩具库。autogen 的重点是把 Agentic AI 应用拆成可维护的组件。
项目地址:https://github.com/microsoft/autogen
官方文档:https://microsoft.github.io/autogen/stable/
三大特点
分层清晰
新版 AutoGen 分成 AgentChat、Core、Extensions 等层级。快速原型可以从 AgentChat 开始,更复杂的事件驱动、多运行时、多语言协作则可以往 Core 走。
流程可控
Team、终止条件、消息类型、结构化输出这些能力,让多 Agent 不只是“互相聊天”,而是能被放进更明确的执行流程里。
扩展完整
模型客户端、工具、代码执行、MCP、缓存、日志和观测能力都可以通过扩展接入,适合做更偏工程化的 Agent 应用。
最佳实践
安装方式:python -m pip install autogen-agentchat==0.7.5 autogen-core==0.7.5 autogen-ext==0.7.5
真实接入 OpenAI、Azure OpenAI 或本地模型时,通常还会安装对应扩展,例如 autogen-ext[openai]。本文的 Demo 使用 ReplayChatCompletionClient 模拟模型返回,不调用外部 API,也不会消耗额度。
功能一:先跑通单个 Agent
这段代码解决什么问题:先把 Agent 的输入、模型返回、消息结果跑通。这里用 replay 模型代替真实 LLM,适合写单元测试、演示流程,或者在没有 API Key 的环境里验证业务结构。
importasyncioimportwarningswarnings.filterwarnings('ignore')fromautogen_agentchat.agentsimportAssistantAgentfromautogen_ext.models.replayimportReplayChatCompletionClientasyncdefmain():model=ReplayChatCompletionClient(['已整理 AutoGen 的核心组件:Agent、Team、Termination。TERMINATE'])agent=AssistantAgent('planner',model_client=model,system_message='你是一个架构规划助手。',)result=awaitagent.run(task='把 AutoGen 的核心组件整理成一句话')print('result type:',type(result).__name__)print('message count:',len(result.messages))formsginresult.messages:print(msg.source,'=>',str(msg.content)[:60])awaitmodel.close()asyncio.run(main())
单 Agent 这一步不要急着接真实业务系统。我的建议是先把 system message、输入任务、模型客户端、返回消息都看清楚,再逐步加工具和团队协作。这样后面排查问题时,不会所有复杂度挤在一起。
功能二:组合一个多 Agent Team
这段代码解决什么问题:把“研究员先整理、作者再成稿”这种协作关系放进 Team 里,并用终止条件控制流程结束。RoundRobinGroupChat 会按顺序让参与者发言,适合先做稳定、可预测的协作链路。
importasyncioimportwarningswarnings.filterwarnings('ignore')fromautogen_agentchat.agentsimportAssistantAgentfromautogen_agentchat.teamsimportRoundRobinGroupChatfromautogen_agentchat.conditionsimportTextMentionTermination,MaxMessageTerminationfromautogen_ext.models.replayimportReplayChatCompletionClientasyncdefmain():model=ReplayChatCompletionClient(['研究完成:AutoGen 适合多 Agent 工程编排。','草稿完成:强调架构、流程和边界。TERMINATE',])researcher=AssistantAgent('researcher',model_client=model,system_message='负责资料整理')writer=AssistantAgent('writer',model_client=model,system_message='负责文章草稿')stop=TextMentionTermination('TERMINATE')|MaxMessageTermination(5)team=RoundRobinGroupChat([researcher,writer],termination_condition=stop)result=awaitteam.run(task='准备一篇 AutoGen 文章提纲')print('messages:',len(result.messages))formsginresult.messages:print(msg.source,'=>',str(msg.content)[:42])print('stop:',result.stop_reason)awaitmodel.close()asyncio.run(main())

做多 Agent 时,终止条件很重要。否则一个团队看起来很聪明,实际可能陷入反复讨论、重复调用工具、或者一直等不到明确结束信号。上线前至少要配置最大轮次、关键词终止、超时和日志。
环境与版本信息
- Demo 环境:Windows 11,Python 3.11
- 本文安装的
autogen-agentchat 版本:0.7.5 - 本文安装的
autogen-core 版本:0.7.5 - 本文安装的
autogen-ext 版本:0.7.5 - 项目最近一次提交时间:
2026-04-06T15:35:32-07:00 - 重要提醒:官方 README 已标注 AutoGen 进入维护模式,新项目需要同时评估 Microsoft Agent Framework
高级功能
这段代码解决什么问题:很多 Agent 应用最后不是给人看一段话,而是要把结果写数据库、触发审批、调用接口。output_content_type 可以让 Agent 返回 Pydantic 结构,减少下游解析自然语言的成本。
importasyncioimportwarningswarnings.filterwarnings('ignore')frompydanticimportBaseModel,Fieldfromautogen_agentchat.agentsimportAssistantAgentfromautogen_ext.models.replayimportReplayChatCompletionClientclassReviewPlan(BaseModel):risk:str=Field(description='主要风险')checks:list[str]=Field(description='上线检查项')asyncdefmain():model=ReplayChatCompletionClient(['{"risk":"工具调用缺少权限边界","checks":["权限控制","日志审计","超时重试"]}'])agent=AssistantAgent('reviewer',model_client=model,output_content_type=ReviewPlan)result=awaitagent.run(task='返回一份结构化上线检查计划')plan=result.messages[-1].contentprint('content type:',type(plan).__name__)print('risk:',plan.risk)print('checks:',', '.join(plan.checks))awaitmodel.close()asyncio.run(main())
结构化输出不是为了让文章更好看,而是为了让系统更稳。只要结果要进入后续程序,就应该尽量定义 schema,并在失败时有重试、降级和人工确认。
适用场景
- 你要构建单 Agent 或多 Agent 应用,并希望把 Agent、Team、消息流和终止条件写成清晰代码
- 你需要更强的工程控制,比如可测试的模型返回、结构化输出、日志和扩展组件
- 你在维护已有 AutoGen 项目,或者想理解多 Agent 框架的经典工程设计
不适用场景
- 你只是一次性调用大模型生成文本,不需要多 Agent 协作和流程编排
- 你正在启动全新企业级项目,却没有评估官方建议的 Microsoft Agent Framework
- 你的业务缺少权限边界、日志审计和人工兜底,却想直接让 Agent 执行写操作
上线检查
- 明确每个 Agent 的职责、输入输出和可调用工具,不要让一个 Agent 承担所有事情。
- 给 Team 配置终止条件、最大轮次、超时、异常处理和可追踪日志。
- 凡是会触发真实业务动作的工具,都要有权限控制、参数校验和人工确认机制。
总结
autogen 是一个更偏工程化的 Agentic AI 框架。它最值得学习的地方,不只是多 Agent 聊天,而是 Agent、Team、消息、终止条件、模型客户端和扩展能力之间的分层关系。
不过也要注意,它当前已经进入维护模式。对于新项目,可以把它当成理解多 Agent 工程设计的好样本,同时认真评估 Microsoft Agent Framework 这条后续路线。