🤖 AutoGen

1. 概述

AutoGen 是微软推出的多Agent对话框架,核心思想是将多个AI Agent视为对话参与者, 通过自然语言对话来协作完成任务。它由微软研究院 FLAML 团队开发,支持 Python 和 .NET。

💡 AutoGen 核心理念

"一切皆对话" —— Agent之间通过结构化的对话消息来交换信息、协调行动。不需要预定义的工作流DAG,Agent可以动态决定下一步该和谁对话、说什么。

2. 核心Agent类型

2.1 AssistantAgent

AssistantAgent 是内置了LLM的AI Agent,能够理解任务、生成方案、编写代码。 它通常作为团队中的"智囊"角色,负责思考、规划和执行任务。

AssistantAgent 核心能力

  • 代码生成与执行:自动编写Python代码来解决问题
  • 工具调用:通过Function Calling调用外部工具
  • 反思与修正:收到错误反馈后自动修正输出
  • 多角色扮演:通过 system_message 定义不同角色的Assistant

2.2 UserProxyAgent

UserProxyAgent 是用户的代理,它不调用LLM,而是负责:

  • 代码执行:在本地或Docker中安全执行AssistantAgent生成的代码
  • 人工介入:在关键决策点暂停并等待人工输入
  • 结果反馈:将执行结果(成功/失败/输出)传回AssistantAgent

3. 群组聊天(GroupChat)

AutoGen最强大的特性之一是群组聊天,多个Agent在同一个聊天室中协作。 由 GroupChatManager 管理发言顺序和消息路由。

💬 群组聊天工作流

步骤说明
1. 任务发布UserProxyAgent 在群聊中发布任务
2. Speaker选择GroupChatManager 决定下一个发言者
3. Agent发言被选中的Agent基于上下文生成回复
4. 消息广播消息共享给群聊中所有Agent
5. 循环/终止直到任务完成或收到终止信号

🔀 Speaker选择策略

  • Auto:由 GroupChatManager 内置的LLM动态决定下一个发言者
  • Round Robin:Agent轮流发言(简单但不够智能)
  • Random:随机选择(用于探索性实验)
  • Custom:自定义选择函数,实现特定业务规则

4. 典型使用模式

🔧 双Agent模式

AssistantAgent + UserProxyAgent,最小化的协作单元。Assistant负责思考,UserProxy负责执行和反馈。

👥 多角色协作

多个不同专业领域的AssistantAgent(工程师、测试、PM) + 一个UserProxyAgent协调。

🔄 嵌套对话

一个Agent在对话中启动子对话来独立解决子问题,然后汇总结果回到主对话。

5. 代码执行安全

AutoGen将代码执行作为一等公民,提供了多层安全机制:

  • Docker隔离:在独立容器中执行代码,防止影响宿主机
  • 执行超时:设置代码执行的最大时长,防止死循环
  • 命令黑名单:禁止 `rm -rf`、`curl` 等危险操作
  • 人工审批:关键执行前要求人工确认

6. 适用场景

✅ 适合

  • 需要多Agent通过对话协作的场景
  • 代码生成与自主调试的自动化任务
  • 需要动态路由和灵活Agent交互的系统
  • 研究多Agent对话策略的实验

❌ 不适合

  • 需要严格确定性的工作流(用LangGraph更好)
  • 简单单Agent任务(对话开销过大)
  • 对延迟要求极高的场景(多轮对话耗时)
  • 需要复杂状态管理的应用