AutoGen 2.0 多智能体实战:从单 Agent 到协作系统

Microsoft 最新 AutoGen 框架完整教程,含真实业务案例

返回教程列表
高级25 分钟

AutoGen 2.0 多智能体实战:从单 Agent 到协作系统

Microsoft 最新 AutoGen 框架完整教程,含真实业务案例

AutoGen 是 Microsoft 开源的多 Agent 框架,2.0 版本重构了核心架构,支持更灵活的 Agent 角色定义和消息路由。本文从零开始,带你用 AutoGen 搭建一个"研究员 + 代码员 + 审核员"三角色协作系统,完成真实的数据分析任务。

AutoGenMicrosoft多智能体GroupChatPythonAgent框架

AutoGen 2.0 多智能体实战

为什么需要多智能体?

单个 Agent 面对复杂任务时有两个核心问题:

  • 角色混淆:同一个 Agent 又要写代码、又要做审查,容易产生质量下降
  • 上下文膨胀:长任务导致上下文窗口撑满,早期信息被遗忘
  • 多智能体的解法:分工明确的专家团队,每个 Agent 只做好一件事。


    AutoGen 核心概念

    Agent 类型

    python
    from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager

    AssistantAgent:由 LLM 驱动,会主动发言

    UserProxyAgent:代表人类,执行代码,控制终止条件

    对话模式

    模式说明适用场景

    Two-Agent两个 Agent 直接对话简单任务 GroupChat多 Agent 共享对话需要多角色协作 Nested ChatAgent 内部再起子对话复杂子任务分解


    安装与配置

    bash
    pip install pyautogen
    

    python
    config_list = [
        {"model": "gpt-4o", "api_key": "sk-..."},
        {"model": "claude-3-5-sonnet-20241022", "api_key": "sk-ant-...", "api_type": "anthropic"},
    ]

    llm_config = {"config_list": config_list, "temperature": 0.1}


    实战案例:数据分析协作系统

    定义三个 Agent

    python
    

    1. 数据分析师:负责理解数据、规划分析思路

    analyst = AssistantAgent( name="DataAnalyst", system_message="""你是资深数据分析师。 你的职责:分析数据结构、发现关键趋势、规划可视化方案。 不要自己写代码,告诉 Coder 需要什么代码。""", llm_config=llm_config )

    2. 程序员:负责写 Python 代码

    coder = AssistantAgent( name="Coder", system_message="""你是 Python 数据工程师。 你的职责:根据 Analyst 的指示写 pandas/matplotlib 代码。 代码必须可直接运行,包含完整的 import 语句。""", llm_config=llm_config )

    3. 评审员:负责检查代码和结论的质量

    reviewer = AssistantAgent( name="Reviewer", system_message="""你是 QA 审核员。 检查内容:代码是否有 bug、结论是否有数据支撑、可视化是否清晰。 如果发现问题,明确指出并要求修改。""", llm_config=llm_config )

    4. 执行者(代表用户,运行代码)

    executor = UserProxyAgent( name="Executor", human_input_mode="NEVER", code_execution_config={"work_dir": "output", "use_docker": False}, max_consecutive_auto_reply=10 )

    启动 GroupChat

    python
    groupchat = GroupChat(
        agents=[analyst, coder, reviewer, executor],
        messages=[],
        max_round=20,
        speaker_selection_method="auto"
    )

    manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config)

    executor.initiate_chat( manager, message=""" 分析 sales_data.csv(包含:日期、产品类别、销售额、地区) 需要输出: 1. 过去12个月的销售趋势图 2. 各产品类别占比饼图 3. 表现最好/最差的地区对比 4. 3条关键业务洞察 """ )


    常见问题与解决方案

    问题 1:Agent 陷入无限循环

    python
    def is_termination_msg(msg):
        return "ANALYSIS_COMPLETE" in msg.get("content", "")

    executor = UserProxyAgent( ... is_termination_msg=is_termination_msg )

    问题 2:代码执行失败不处理

    在 system_message 中明确要求:如果代码执行报错,分析错误原因并重写,最多重试 3 次。


    AutoGen vs LangGraph vs CrewAI

    框架学习曲线灵活性生产成熟度最适合

    AutoGen中等高较高代码执行场景 LangGraph较高最高高复杂状态管理 CrewAI低中中快速原型


    延伸阅读

  • 多智能体协作模式
  • LangGraph 有状态 Agent
  • MCP 标准化工具接入
  • 相关工具

    AutoGenLangGraphCrewAIOpenAI