news 2026/8/27 22:06:14

大模型应用技术之 Agent框架 AutoGen

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型应用技术之 Agent框架 AutoGen

1. AutoGen 原理与介绍

1.1 什么是 AutoGen

AutoGen是由微软(Microsoft)开发的开源多智能体对话框架。它允许开发者通过定义多个可对话的 Agent(Conversable Agents),让它们通过自动对话来协作解决任务。AutoGen 的核心优势在于其强大的代码执行能力灵活的对话模式(支持两方对话、群聊、层级对话等)。

1.2 核心设计理念

  • 对话即计算(Conversation as Computation):将任务求解过程建模为多智能体之间的对话
  • 代码优先(Code First):Agent 可以编写代码、调试代码并在本地/Docker 容器中执行代码
  • 人类介入(Human in the Loop):原生支持在对话的任意阶段引入人工反馈
  • 可定制化(Customizable):Agent 的 LLM 配置、系统提示词、技能均可灵活定制

1.3 技术架构

AutoGen 的架构基于ConversableAgent基类:

┌───────────────────────────────────────────────┐ │ ConversableAgent │ │ (基类:负责接收消息、LLM推理、生成回复) │ └──────────────────────┬────────────────────────┘ │ ┌────────────┴────────────┐ ▼ ▼ ┌────────────────┐ ┌────────────────┐ │ AssistantAgent │ │ UserProxyAgent │ │ (AI 助手) │ │ (用户代理) │ │ - 编写代码 │ │ - 执行代码 │ │ - 制定计划 │ │ - 请求人工输入 │ └────────────────┘ └────────────────┘

1.4 版本信息

重要说明:AutoGen 在 PyPI 上的发行形态是元包pyautogen。在pyautogen==0.10.0下:

  • ✅ 可导入模块:autogen_agentchatautogen_core
  • ❌ 不存在:import autogen(会ModuleNotFoundError
  • AutoGen 最新版本(元包)pyautogen==0.10.0
  • 关键子包autogen-agentchat==0.7.5autogen-core==0.7.5(随pyautogen安装)
  • Python 版本要求:Python 3.8+

2. AutoGen 数据流向

2.1 双智能体对话流

最基础的模式是 UserProxyAgent 与 AssistantAgent 的互答:

AssistantAgentUserProxyAgent用户AssistantAgentUserProxyAgent用户alt[执行出错][执行成功]1. 发起任务 ("画一张股价走势图")2. 转发任务3. 思考 & 编写 Python 代码4. 发送代码块5. (自动/人工) 执行代码6. 发送执行结果 (Success/Error)7. 修正代码8. 发送新代码9. "TERMINATE" (结束对话)

2.2 群聊 (GroupChat) 数据流

多个 Agent 参与的群组对话:

选择发言人策略

发起

广播上下文

广播上下文

广播上下文

回复

回复

回复

1.调用 LLM 选择

Coder

UserProxyAgent

GroupChatManager

Coder

Reviewer

ProductManager

谁下一个发言?


3. AutoGen 核心组件

3.1 AssistantAgent

负责解决任务的 AI 角色。它通常配置了 LLM,能够理解指令、编写代码或给出建议。

fromautogen_agentchat.agentsimportAssistantAgentfromautogen_ext.models.openaiimportOpenAIChatCompletionClient llm=OpenAIChatCompletionClient(model="gpt-4",api_key="YOUR_KEY")assistant=AssistantAgent(name="assistant",model_client=llm)

3.2 UserProxyAgent

代表用户或执行环境的代理。它通常配置 LLM(或只作为辅助),主要职责是:

  1. 执行代码:运行 Assistant 发来的代码块。
  2. 请求人工输入:在关键步骤暂停,等待人类确认。
fromautogen_agentchat.agentsimportUserProxyAgent# 注意:在 pyautogen==0.10.0 中,UserProxyAgent 主要用于“代表人类输入/代理人类”。# 旧版 autogen 的 code_execution_config(自动执行代码块)API 已不适用;# 新版需要通过 tool / workbench / runtime 接入代码执行能力(请参考官方文档示例)。user_proxy=UserProxyAgent(name="user_proxy")

3.3 GroupChat & Manager

用于管理 3 个及以上 Agent 的对话。

  • GroupChat: 维护 Agent 列表和对话历史。
  • GroupChatManager: 特殊的 Agent,利用 LLM 来决定"下一个轮到谁发言"。

4. AutoGen vs CrewAI vs LangGraph 三方对比

特性AutoGenCrewAILangGraph
核心隐喻对话(Conversation)团队/角色(Role/Crew)图/状态机(Graph/State)
代码执行原生强项(UserProxy 自动执行)⚠️ 需通过 Tool 间接实现⚠️ 需自定义 Node 实现
控制流自动 (LLM 决定下一发言人)顺序/层级 (Sequential/Hierarchical)精确 (边/条件分支)
适用场景编程、调试、开放式探索内容生成、报告分析、线性任务复杂业务流、生产级应用
上手难度⭐⭐ (概念少,但调试Prompt难)⭐ (封装好,易上手)⭐⭐⭐ (需理解图论/状态)

4.4 为什么选择 AutoGen?

选择 AutoGen 的主要理由通常是:

  1. 你需要 Agent 真的去"做"事情:不仅仅是生成文本,而是生成代码并运行代码(画图、抓取数据、数值计算)。
  2. 任务需要反复试错:AutoGen 的"生成-执行-报错-修正"循环非常成熟,非常适合编程类任务。

5. AutoGen 适用场景

5.1 自动化编程与数据分析

Agent A 写代码,Agent B (Proxy) 运行代码并反馈报错,Agent A 修正代码。这在数据清洗、机器学习模型训练脚本生成中非常有效。

5.2 复杂问题的多角度研讨

创建一个由 “正方代表”、“反方代表” 和 “主持人” 组成的 GroupChat,让他们针对一个议题进行辩论,生成更全面的观点。

5.3 动态工作流

当任务步骤无法预先确定(例如:先搜索,如果没搜到就去爬虫,如果爬虫失败就换个源),AutoGen 的对话驱动模式比硬编码的工作流更灵活。


6. 快速开始指南

6.1 安装

pipinstallpyautogen==0.10.0 autogen-ext==0.7.5

6.2 最小可运行示例(v0.10.0:验证 import 与接线方式)

创建一个简单的脚本app.py

fromautogen_agentchat.agentsimportAssistantAgent,UserProxyAgentfromautogen_agentchat.teamsimportRoundRobinGroupChatfromautogen_agentchat.conditionsimportTextMentionTerminationfromautogen_ext.models.openaiimportOpenAIChatCompletionClient llm=OpenAIChatCompletionClient(model="gpt-4",api_key="sk-...",# 填入你的 OpenAI Key)assistant=AssistantAgent(name="assistant",model_client=llm)user_proxy=UserProxyAgent(name="user_proxy")team=RoundRobinGroupChat(participants=[user_proxy,assistant],termination_condition=TextMentionTermination("TERMINATE"),max_turns=5,)# 注意:该示例会调用真实 LLM;完成后需让 assistant 回复 TERMINATEresult=team.run(task="请用 Python 打印当前日期的斐波那契数列前 10 位;完成后回复 TERMINATE。")print(result)

6.3 运行

python app.py

你会在coding/目录下看到生成的代码文件和执行结果。


7. 最佳实践

  1. 限制对话轮次:使用max_turns(例如RoundRobinGroupChat(max_turns=5))防止无限对话消耗 Token。
  2. 明确终止条件:使用TextMentionTermination(\"TERMINATE\")(或其他 termination condition)明确结束条件。
  3. 代码执行要隔离:新版 AutoGen 通过 tool/workbench/runtime 接入代码执行能力;生产环境务必使用容器/沙盒隔离执行。
  4. 精细化 System Message:给每个 Agent 设定清晰的人设(如 “你是一个极其严谨的代码审查员,只关注安全性漏洞”)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 19:12:42

四层PCB板设计

在 Altium Designer 的 Layer Stack Manager 中,这几个概念的区别和设置方式如下: 一、Add Layer vs Add Internal Plane 功能 Add Layer Add Internal Plane 层类型 添加信号层(Signal Layer) 添加内部电源 / 地平面层(Power/Ground Plane) 用途 用于走信号线(如 Top …

作者头像 李华
网站建设 2026/8/21 17:06:21

bss段、data段、text段、heap堆、stack栈的基本概念

1. bss段bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。bss是英文Block Started by Symbol的简称。bss段属于静态内存分配。2. data段数据段(data segment)通常是指用来存放程序中已初始化的全局变…

作者头像 李华
网站建设 2026/8/22 7:11:15

基于STM32单片机的智能窗帘/晾衣架控制系统 物联网无线控制 蓝牙WIFI传输 定时开关 光线采集 雨滴感应 防盗报警成品套件 DIY设计 实物+源程序+原理图+仿真+其它资料(832-4/5/6)

本人从事毕业论文设计辅导10余载,撰写的毕业论文超2000余篇,为广大的应届毕业生节省了大量的设计和撰写时间。在单片机领域,参与设计51系列、STM32系列、Proteus仿真、JAVA上位机、Android Studio、物联网无线通信等千余套项目,具…

作者头像 李华
网站建设 2026/8/23 4:50:35

并发编程中的CAS机制:原理、实现与应用剖析

在并发编程领域,确保线程安全通常首先会联想到加锁机制,如synchronized或ReentrantLock。虽然加锁是直观且广泛采用的方案,但在高并发场景下,锁带来的性能开销——如上下文切换、内核态切换及线程阻塞——可能成为系统瓶颈。为此&…

作者头像 李华
网站建设 2026/8/21 22:23:59

把设备参数翻译成老板听得懂的“利润语言”

制造业销售常常会犯一个错误:对工厂老板大谈“主轴转速12000rpm”“定位精度0.003mm”“支持五轴联动”……老板表面上点点头,心里却在想:“这跟我赚不赚钱有什么关系?”技术参数是工程师的语言,而利润才是老板的母语&#xff0c…

作者头像 李华