<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>AutoGen on On My Way</title>
    <link>https://tuanzi-wow.cn/categories/autogen/</link>
    <description>Recent content in AutoGen on On My Way</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <atom:link href="https://tuanzi-wow.cn/categories/autogen/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AutoGen学习文档</title>
      <link>https://tuanzi-wow.cn/frameworks/autogen/autogen-learning-notes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://tuanzi-wow.cn/frameworks/autogen/autogen-learning-notes/</guid>
      <description>AutoGen学习文档相关学习笔记与实践要点。</description>
      <content:encoded><![CDATA[<h1 id="autogen-框架深度解析与全景知识总结报告">AutoGen 框架深度解析与全景知识总结报告</h1>
<blockquote>
<p><strong>编制日期</strong>：2026年11月<br>
<strong>报告归档目录</strong>：<code>D:\那就，战个未来吧\content\Frameworks\AutoGen</code><br>
<strong>适用版本</strong>：Microsoft AutoGen v0.4+（现代 Actor 架构）、AG2 / pyautogen（经典兼顾版）及 AutoGen Studio</p>
</blockquote>
<hr>
<h2 id="目录">目录</h2>
<ol>
<li><a href="/frameworks/autogen/autogen-learning-notes/#1-%e6%a1%86%e6%9e%b6%e8%83%8c%e6%99%af%e4%b8%8e%e5%8f%91%e5%b1%95%e6%bc%94%e5%8f%98%e8%b5%b7%e6%ba%90%e5%88%86%e6%ad%a7%e4%b8%8e%e7%8e%b0%e7%8a%b6">框架背景与发展演变：起源、分歧与现状</a></li>
<li><a href="/frameworks/autogen/autogen-learning-notes/#2-%e6%a0%b8%e5%bf%83%e8%ae%be%e8%ae%a1%e8%8c%83%e5%bc%8f%e5%af%b9%e8%af%9d%e5%8d%b3%e8%ae%a1%e7%ae%97-vs-actor-%e6%a8%a1%e5%9e%8b">核心设计范式：对话即计算 vs Actor 模型</a></li>
<li><a href="/frameworks/autogen/autogen-learning-notes/#3-autogen-v04-%e7%8e%b0%e4%bb%a3%e5%8c%96%e6%9e%b6%e6%9e%84%e5%88%86%e5%b1%82%e5%89%96%e6%9e%90">AutoGen v0.4 现代化架构分层剖析</a></li>
<li><a href="/frameworks/autogen/autogen-learning-notes/#4-%e6%a0%b8%e5%bf%83%e6%9e%84%e4%bb%b6%e4%b8%8e%e5%85%b3%e9%94%ae%e6%8a%bd%e8%b1%a1">核心构件与关键抽象</a></li>
<li><a href="/frameworks/autogen/autogen-learning-notes/#5-%e5%a4%9a%e6%99%ba%e8%83%bd%e4%bd%93%e7%bc%96%e6%8e%92%e4%b8%8e%e5%8d%8f%e4%bd%9c%e6%8b%93%e6%89%91%e6%a8%a1%e5%bc%8f">多智能体编排与协作拓扑模式</a></li>
<li><a href="/frameworks/autogen/autogen-learning-notes/#6-%e6%97%97%e8%88%b0%e7%ba%a7%e9%80%9a%e7%94%a8%e5%a4%9a%e6%99%ba%e8%83%bd%e4%bd%93%e7%b3%bb%e7%bb%9fmagnetic-one-%e6%9e%b6%e6%9e%84">旗舰级通用多智能体系统：Magentic-One 架构</a></li>
<li><a href="/frameworks/autogen/autogen-learning-notes/#7-%e5%85%b3%e9%94%ae%e6%9c%ba%e5%88%b6%e8%af%a6%e8%a7%a3%e4%bb%a3%e7%a0%81%e6%b2%99%e7%ae%b1%e6%89%a7%e8%a1%8c%e7%bb%88%e6%ad%a2%e6%9d%a1%e4%bb%b6%e4%b8%8e%e4%ba%ba%e6%9c%ba%e5%8d%8f%e5%90%8c">关键机制详解：代码沙箱执行、终止条件与人机协同</a></li>
<li><a href="/frameworks/autogen/autogen-learning-notes/#8-%e5%8f%af%e8%a7%86%e5%8c%96%e4%b8%8e%e4%bd%8e%e4%bb%a3%e7%a0%81%e4%b8%ad%e6%9e%a2autogen-studio">可视化与低代码中枢：AutoGen Studio</a></li>
<li><a href="/frameworks/autogen/autogen-learning-notes/#9-%e4%b8%bb%e6%b5%81%e5%a4%9a%e6%99%ba%e8%83%bd%e4%bd%93%e6%a1%86%e6%9e%b6%e6%a8%aa%e5%90%91%e5%af%b9%e6%af%94autogen-vs-langgraph-vs-crewai">主流多智能体框架横向对比：AutoGen vs LangGraph vs CrewAI</a></li>
<li><a href="/frameworks/autogen/autogen-learning-notes/#10-%e5%b7%a5%e4%b8%9a%e7%ba%a7%e5%ae%9e%e6%88%98%e4%bb%a3%e7%a0%81%e6%a0%b7%e4%be%8b%e5%a4%a7%e5%85%a8">工业级实战代码样例大全</a></li>
<li><a href="/frameworks/autogen/autogen-learning-notes/#11-%e7%94%9f%e4%ba%a7%e8%90%bd%e5%9c%b0%e6%8c%91%e6%88%98%e9%98%b2%e5%9d%91%e6%8c%87%e5%8d%97%e4%b8%8e%e6%9c%80%e4%bd%b3%e5%ae%9e%e8%b7%b5">生产落地挑战、防坑指南与最佳实践</a></li>
</ol>
<hr>
<h2 id="1-框架背景与发展演变起源分歧与现状">1. 框架背景与发展演变：起源、分歧与现状</h2>
<h3 id="11-起源与核心愿景">1.1 起源与核心愿景</h3>
<p>AutoGen 最早由 <strong>微软研究院（Microsoft Research）</strong> 联合宾夕法尼亚州立大学与华盛顿大学团队于 2023 年秋季开源推出（主创团队包括 Chi Wang、Qingyun Wu 等人）。其诞生的初衷是为了打破单一 LLM 提示工程（Prompt Engineering）的能力瓶颈，通过模拟人类团队在面对复杂多步骤问题时的<strong>多角色分工协作、批判审查、动态反馈与工具调用</strong>，来完成复杂的自动化软件工程、数据科学研究及多步骤推理任务。</p>
<p>AutoGen 首创了以**“对话（Conversation）”作为多智能体交互的统一通信范式**，让 Agent 之间的协作就像工程师团队在 Slack / 钉钉群聊中交流一样自然，迅速成为开源界最受欢迎的多智能体框架之一。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">timeline
</span></span><span class="line"><span class="cl">    title AutoGen 演进与分化历史脉络
</span></span><span class="line"><span class="cl">    2023年下半年 : 微软开源 AutoGen (v0.1 / v0.2) : &#34;ConversableAgent&#34; 奠定对话协作范式 : PyPI 注册 pyautogen
</span></span><span class="line"><span class="cl">    2024年中期 : AutoGen Studio 诞生 : 引入低代码 Web 界面原型调试 : 社区生态爆炸式增长
</span></span><span class="line"><span class="cl">    2024年底 : 治理与技术路线大分流 : 创始人团队推出 AG2 保持兼容 : 微软启动 v0.4 底层异步 Actor 重构
</span></span><span class="line"><span class="cl">    2025年 - 2026年 : 微软统一生态 : AutoGen v0.4 融入 Microsoft Agent Framework : Magentic-One 确立复杂任务工业标杆
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="12-历史分歧ag2-与-microsoft-autogen-v04-的双轨现状">1.2 历史分歧：AG2 与 Microsoft AutoGen (v0.4+) 的双轨现状</h3>
<p>在 2024 年末，AutoGen 社区经历了一次重大的技术与治理分水岭，了解这一分歧对于当下开发者选型至关重要：</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">维度</th>
					<th style="text-align: left">AG2 (原团队 / 社区分支)</th>
					<th style="text-align: left">Microsoft AutoGen (微软官方分支 v0.4+)</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>所属组织 / 仓库</strong></td>
					<td style="text-align: left"><code>ag2ai/ag2</code>（独立社区基金会）</td>
					<td style="text-align: left"><code>microsoft/autogen</code>（微软企业级主导）</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>PyPI 包名</strong></td>
					<td style="text-align: left"><code>autogen</code>, <code>pyautogen</code>, <code>ag2</code></td>
					<td style="text-align: left"><code>autogen-agentchat</code>, <code>autogen-core</code>, <code>autogen-ext</code></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>设计哲学</strong></td>
					<td style="text-align: left"><strong>向后兼容优先</strong>，延续经典对话 API，演进为全功能 AgentOS</td>
					<td style="text-align: left"><strong>彻底重写重构</strong>，引入底层 Actor 模型与异步事件总线，面向高并发与分布式</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>核心 API 风格</strong></td>
					<td style="text-align: left"><code>ConversableAgent</code>, <code>GroupChat</code>, <code>GroupChatManager</code>（同步阻塞或原生循环）</td>
					<td style="text-align: left">异步/事件驱动（<code>asyncio</code>）、<code>AssistantAgent</code>、<code>RoundRobinGroupChat</code>、<code>SelectorGroupChat</code></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>典型生态配合</strong></td>
					<td style="text-align: left">适合习惯 v0.2/v0.3 教程、快速脚本、丰富社区插件的开发者</td>
					<td style="text-align: left">适合需要企业级分布式部署、高可观测性、对接微软 Agent Framework / Semantic Kernel 的团队</td>
			</tr>
	</tbody>
</table>
<blockquote>
<p>[!IMPORTANT]
<strong>安装与导入防坑提示</strong>：</p>
<ul>
<li>如果执行 <code>pip install autogen</code> 或 <code>pip install pyautogen</code>，安装的是 <strong>AG2（经典兼容分支）</strong>。</li>
<li>如果要使用微软最新的现代化架构，应安装：<code>pip install -U autogen-agentchat autogen-ext[openai]</code>。</li>
<li>本报告将重点以<strong>现代 v0.4+ 架构</strong>为主轴进行深度解构，同时兼顾经典的 v0.2 / AG2 核心理念，提供全景认知。</li>
</ul>
</blockquote>
<hr>
<h2 id="2-核心设计范式对话即计算-vs-actor-模型">2. 核心设计范式：对话即计算 vs Actor 模型</h2>
<h3 id="21-传统理念对话即计算conversation-as-computation">2.1 传统理念：“对话即计算”（Conversation as Computation）</h3>
<p>在经典的 AutoGen 设计中，核心哲学是：</p>
<ol>
<li><strong>统一接口</strong>：任何能够发送和接收消息的实体都可以抽象为一个 Agent（无论是大模型、Python 代码执行器、数据库代理、还是坐在电脑前的人类）。</li>
<li><strong>状态共享与推进</strong>：计算过程不是由硬编码的控制流（如 if-else）决定的，而是由 Agent 发送的消息流驱动。一条消息既是<strong>交流媒介</strong>，也是<strong>计算输入</strong>。</li>
</ol>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">flowchart LR
</span></span><span class="line"><span class="cl">    User([人类用户 / 触发器]) --&gt;|发包任务| Proxy[UserProxyAgent]
</span></span><span class="line"><span class="cl">    Proxy --&gt;|请求解决方案| Coder[Coder Agent]
</span></span><span class="line"><span class="cl">    Coder --&gt;|返回代码块| Proxy
</span></span><span class="line"><span class="cl">    Proxy --&gt;|沙箱执行代码| Runner[(Code Runner / Docker)]
</span></span><span class="line"><span class="cl">    Runner --&gt;|输出运行日志/报错| Proxy
</span></span><span class="line"><span class="cl">    Proxy --&gt;|反馈报错| Coder
</span></span><span class="line"><span class="cl">    Coder --&gt;|修复代码| Proxy
</span></span><span class="line"><span class="cl">    Proxy --&gt;|运行成功，产出成果| User
</span></span></code></pre></td></tr></table>
</div>
</div><p>这种机制极大降低了构建多角色协同的门槛，但也暴露出了局限：高度依赖 Chat Loop 循环，长流程下容易死循环、缺乏强类型事件约束、分布式横向扩展困难。</p>
<h3 id="22-现代演进基于-actor-模型的事件驱动架构">2.2 现代演进：基于 Actor 模型的事件驱动架构</h3>
<p>在 AutoGen v0.4+ 中，系统引入了计算机科学经典的 <strong>Actor 模型（Actor Model）</strong>：</p>
<ul>
<li><strong>完全解耦与隔离</strong>：每一个 Agent 都是一个完全独立的 Actor，拥有自己私有的内部状态，彼此之间绝不共享内存或直接调用对方的内部方法。</li>
<li><strong>消息总线传递（Message Passing）</strong>：Agent 之间唯一的交互方式是向**代理运行时（Agent Runtime）**的消息总线投递强类型消息包。</li>
<li><strong>异步响应驱动</strong>：Agent 监听特定类型的事件/消息，非阻塞地进行推理、工具调用或状态变更，随后向外广播事件或定向回复。</li>
</ul>
<p>这一转变使 AutoGen 从“实验性脚本库”蜕变为具备<strong>高并发处理能力、分布式跨机通信潜力与工业级 OpenTelemetry 追踪能力</strong>的企业级基础平台。</p>
<hr>
<h2 id="3-autogen-v04-现代化架构分层剖析">3. AutoGen v0.4 现代化架构分层剖析</h2>
<p>现代 AutoGen 采用了优雅的三层分层架构，从底层运行时到顶层高阶协作进行彻底解耦：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">+---------------------------------------------------------------------------------+
</span></span><span class="line"><span class="cl">|                                 Extensions Layer                                |
</span></span><span class="line"><span class="cl">|                                  (autogen-ext)                                  |
</span></span><span class="line"><span class="cl">|   - 模型客户端: OpenAI, Azure OpenAI, Anthropic, Gemini, Ollama, LiteLLM        |
</span></span><span class="line"><span class="cl">|   - 代码沙箱: DockerCommandLineCodeExecutor, LocalCommandLineCodeExecutor        |
</span></span><span class="line"><span class="cl">|   - 向量检索与缓存: Qdrant, Chroma, Redis                                        |
</span></span><span class="line"><span class="cl">+---------------------------------------------------------------------------------+
</span></span><span class="line"><span class="cl">                                         ▲
</span></span><span class="line"><span class="cl">                                         │  集成插件与服务
</span></span><span class="line"><span class="cl">+---------------------------------------------------------------------------------+
</span></span><span class="line"><span class="cl">|                                 AgentChat Layer                                 |
</span></span><span class="line"><span class="cl">|                               (autogen-agentchat)                               |
</span></span><span class="line"><span class="cl">|   - 智能体定义: AssistantAgent, CodeExecutorAgent, UserProxyAgent               |
</span></span><span class="line"><span class="cl">|   - 协作拓扑: RoundRobinGroupChat, SelectorGroupChat, Swarm                     |
</span></span><span class="line"><span class="cl">|   - 控制原语: TerminationConditions (AND / OR / Regex), Console UI 实时流        |
</span></span><span class="line"><span class="cl">+---------------------------------------------------------------------------------+
</span></span><span class="line"><span class="cl">                                         ▲
</span></span><span class="line"><span class="cl">                                         │  构建于运行时之上
</span></span><span class="line"><span class="cl">+---------------------------------------------------------------------------------+
</span></span><span class="line"><span class="cl">|                                   Core Layer                                    |
</span></span><span class="line"><span class="cl">|                                 (autogen-core)                                  |
</span></span><span class="line"><span class="cl">|   - Actor Runtime: AgentId, SingleThreadedAgentRuntime, 消息总线路由           |
</span></span><span class="line"><span class="cl">|   - 事件驱动基石: 强类型消息（Typed Message Handler）、订阅与广播机制            |
</span></span><span class="line"><span class="cl">|   - 状态追踪与可观测性: OpenTelemetry 分布式跟踪, 上下文生命周期管理                |
</span></span><span class="line"><span class="cl">+---------------------------------------------------------------------------------+
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="31-autogen-core底层基础设施与-actor-运行时">3.1 <code>autogen-core</code>：底层基础设施与 Actor 运行时</h3>
<ul>
<li><strong><code>AgentRuntime</code></strong>：Actor 的托管容器与路由中心，负责管理 Agent 实例的注册、生命周期、跨 Actor 投递消息。</li>
<li><strong><code>AgentId</code></strong>：全局唯一的身份标识（由 <code>type</code> 和 <code>key</code> 组成），支持多租户和多会话隔离。</li>
<li><strong>消息协议与类型派发</strong>：通过 Python 的类型注解和处理装饰器（如 <code>@message_handler</code>），让 Agent 只响应其关心的事件消息，极大增强了鲁棒性。</li>
</ul>
<h3 id="32-autogen-agentchat高阶协作抽象层">3.2 <code>autogen-agentchat</code>：高阶协作抽象层</h3>
<p>大部分应用开发者直接接触该层：</p>
<ul>
<li>提供面向自然语言对话的标准 Agent 封装。</li>
<li>提供了高度成熟的多智能体团队（Teams）模式，无需开发者从底层编写消息广播逻辑。</li>
<li>统一的异步流式接口（<code>run()</code> 与 <code>run_stream()</code>），无缝支撑 Web 前端实时打字机效果。</li>
</ul>
<h3 id="33-autogen-ext连接外部生态的扩展桥梁">3.3 <code>autogen-ext</code>：连接外部生态的扩展桥梁</h3>
<p>保持核心最小化的关键。无论是不同的模型厂商驱动、代码安全沙箱、还是各种内存与向量数据库，均作为可选插件在此模块发布，避免依赖膨胀。</p>
<hr>
<h2 id="4-核心构件与关键抽象">4. 核心构件与关键抽象</h2>
<h3 id="41-智能体角色agents">4.1 智能体角色（Agents）</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="n">classDiagram</span>
</span></span><span class="line"><span class="cl">    <span class="k">class</span> <span class="n">Agent</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="ne">String</span> <span class="n">name</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="ne">String</span> <span class="n">description</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="n">on_messages</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">class</span> <span class="n">AssistantAgent</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="n">ChatCompletionClient</span> <span class="n">model_client</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="ne">String</span> <span class="n">system_message</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="n">List</span><span class="o">~</span><span class="n">Tool</span><span class="o">~</span> <span class="n">tools</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="n">generate_reply</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">class</span> <span class="n">CodeExecutorAgent</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="n">CodeExecutor</span> <span class="n">code_executor</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="n">execute_code_blocks</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="k">class</span> <span class="n">UserProxyAgent</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="n">HumanInputMode</span> <span class="n">input_mode</span>
</span></span><span class="line"><span class="cl">        <span class="o">+</span><span class="n">get_human_input</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="n">Agent</span> <span class="o">&lt;|--</span> <span class="n">AssistantAgent</span>
</span></span><span class="line"><span class="cl">    <span class="n">Agent</span> <span class="o">&lt;|--</span> <span class="n">CodeExecutorAgent</span>
</span></span><span class="line"><span class="cl">    <span class="n">Agent</span> <span class="o">&lt;|--</span> <span class="n">UserProxyAgent</span>
</span></span></code></pre></td></tr></table>
</div>
</div><ol>
<li><strong><code>AssistantAgent</code>（LLM 助理）</strong>：
<ul>
<li>依赖底层的 <code>ChatCompletionClient</code> 调用模型。</li>
<li>具备系统提示词（<code>system_message</code>）与工具（<code>tools</code>）注册能力。</li>
<li>必须配置清晰的 <code>description</code>。在多智能体动态路由中，路由选择器根据 <code>description</code> 来评估由谁接管任务。</li>
</ul>
</li>
<li><strong><code>CodeExecutorAgent</code>（代码执行专员）</strong>：
<ul>
<li>不依赖大语言模型进行文本生成，其职责是专门扫描上一轮对话中的 Markdown 代码块（如 <code>```python ... ```</code>），将其送入沙箱环境运行，并将执行输出（STDOUT / STDERR）作为新消息返回。</li>
</ul>
</li>
<li><strong><code>UserProxyAgent</code>（人类代理）</strong>：
<ul>
<li>作为现实世界用户与数字智能体群之间的桥梁，支持配置人工介入模式（如每轮必确认、仅在报错时确认、完全自动）。</li>
</ul>
</li>
</ol>
<hr>
<h3 id="42-团队与编排容器teams">4.2 团队与编排容器（Teams）</h3>
<p>在 v0.4 中，多个 Agent 协同的容器统称为 <strong>Team</strong>。Team 统一实现了任务派发、对话历史维持、流式状态广播以及终止条件裁决。</p>
<ul>
<li><code>team.run(task=&quot;...&quot;)</code>：返回最终的执行汇总（TaskResult）。</li>
<li><code>team.run_stream(task=&quot;...&quot;)</code>：返回异步生成器，实时捕获每一个内部事件（发言、思考、工具调用、工具返回）。</li>
</ul>
<hr>
<h3 id="43-强类型终止条件termination-conditions">4.3 强类型终止条件（Termination Conditions）</h3>
<p>避免无限递归或无休止的“客套对话”（如 A说“谢谢”，B说“不客气”，A又说“应该的”）是多智能体系统的核心难题。现代 AutoGen 提供了强大的组合式终止条件系统：</p>
<ul>
<li><strong><code>TextMentionTermination(text=&quot;TERMINATE&quot;)</code></strong>：当任意消息中出现指定终止关键词时触发。</li>
<li><strong><code>MaxMessageTermination(max_messages=10)</code></strong>：对话总消息数达到上限时强制刹车，作为防止 Token 爆炸的安全底线。</li>
<li><strong><code>StopMessageTermination()</code></strong>：当智能体发出特定的显式 Stop 信号时触发。</li>
<li><strong>逻辑运算符重载</strong>：
<ul>
<li><code>condition_a | condition_b</code>：<strong>或（OR）逻辑</strong>，只要满足其一即终止。</li>
<li><code>condition_a &amp; condition_b</code>：<strong>与（AND）逻辑</strong>，必须全部满足才终止。</li>
</ul>
</li>
</ul>
<hr>
<h2 id="5-多智能体编排与协作拓扑模式">5. 多智能体编排与协作拓扑模式</h2>
<p>AutoGen 提供了从简单到高度复杂的全谱系协作拓扑结构：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">flowchart TD
</span></span><span class="line"><span class="cl">    subgraph 模式A: 轮询协作 (RoundRobin)
</span></span><span class="line"><span class="cl">        A1[Agent 1] --&gt; A2[Agent 2] --&gt; A3[Agent 3] --&gt; A1
</span></span><span class="line"><span class="cl">    end
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    subgraph 模式B: 动态选择器 (SelectorGroupChat)
</span></span><span class="line"><span class="cl">        M[Selector / Router]
</span></span><span class="line"><span class="cl">        M --&gt;|1. 分析上下文| B1[Planner]
</span></span><span class="line"><span class="cl">        M --&gt;|2. 调度执行| B2[Coder]
</span></span><span class="line"><span class="cl">        M --&gt;|3. 调度校验| B3[Reviewer]
</span></span><span class="line"><span class="cl">        B1 -.-&gt;|返回结果| M
</span></span><span class="line"><span class="cl">        B2 -.-&gt;|返回结果| M
</span></span><span class="line"><span class="cl">        B3 -.-&gt;|返回结果| M
</span></span><span class="line"><span class="cl">    end
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    subgraph 模式C: 蜂群交接 (Swarm / Handoffs)
</span></span><span class="line"><span class="cl">        S1[FrontDesk] --&gt;|Handoff: 账务问题| S2[BillingAgent]
</span></span><span class="line"><span class="cl">        S1 --&gt;|Handoff: 技术故障| S3[TechSupport]
</span></span><span class="line"><span class="cl">        S3 --&gt;|Handoff: 需要退款| S2
</span></span><span class="line"><span class="cl">    end
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="51-轮询协作roundrobingroupchat">5.1 轮询协作（RoundRobinGroupChat）</h3>
<ul>
<li><strong>机制</strong>：智能体按照预先定义的数组顺序依次轮流发言。</li>
<li><strong>适用场景</strong>：线性工作流，如【需求分析师 $\rightarrow$ 架构设计师 $\rightarrow$ 编码工程师 $\rightarrow$ 测试人员】。</li>
<li><strong>优缺点</strong>：逻辑清晰、执行顺序 100% 确定；但缺乏根据运行时突发情况动态调整人员的能力。</li>
</ul>
<h3 id="52-动态选择器群聊selectorgroupchat">5.2 动态选择器群聊（SelectorGroupChat）</h3>
<ul>
<li><strong>机制</strong>：内部配备一个独立的“路由大模型”，在每一轮对话结束时，该模型阅读当前全量对话记录以及每个 Agent 的 <code>description</code>，动态判断下一轮最适合发言的成员。</li>
<li><strong>关键参数</strong>：
<ul>
<li><code>allow_repeated_speaker=False</code>：防止同一个 Agent 连续自我对话陷入死循环。</li>
<li><code>selector_prompt</code>：可定制选择器的决策依据和规则。</li>
</ul>
</li>
<li><strong>适用场景</strong>：开放式探索、故障排查、复杂调试闭环（例如：Coder 编写 $\rightarrow$ Executor 运行 $\rightarrow$ 报错 $\rightarrow$ Coder 修复；Reviewer 只有在运行成功后才切入验证）。</li>
</ul>
<h3 id="53-蜂群交接模式swarm--handoffs">5.3 蜂群交接模式（Swarm &amp; Handoffs）</h3>
<ul>
<li><strong>机制</strong>：受到 OpenAI Swarm 的启发，由当前的执行 Agent 自主决定何时何地将当前对话上下文与控制权“交接（Handoff）”给指定名字的目标 Agent。</li>
<li><strong>适用场景</strong>：多分支客服系统、分诊引导、多级审批系统。</li>
</ul>
<h3 id="54-层次化与社会心智模式society-of-mind--hierarchical">5.4 层次化与社会心智模式（Society of Mind / Hierarchical）</h3>
<ul>
<li><strong>机制</strong>：将一个内部由多个 Agent 组成的复杂 Team 封装为一个对外的单一“虚拟 Agent”。对于外部观察者而言，它表现为一个输入输出接口；在内部，它启动子会话完成深度分工。</li>
<li><strong>适用场景</strong>：超大规模项目管理、跨领域知识集成、隔离子任务上下文（防止子任务的繁琐交互污染主上下文）。</li>
</ul>
<hr>
<h2 id="6-旗舰级通用多智能体系统magentic-one-架构">6. 旗舰级通用多智能体系统：Magentic-One 架构</h2>
<p>在 AutoGen v0.4 中，微软推出了其集大成的通用多智能体参考架构 —— <strong>Magentic-One</strong>（发表于顶级学术评测，专为解决跨 Web 与复杂本地文件系统的长时间开放性任务设计）。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">graph TD
</span></span><span class="line"><span class="cl">    User([用户高维任务目标]) --&gt; Orchestrator
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    subgraph Magentic-One 编排中枢
</span></span><span class="line"><span class="cl">        Orchestrator[Orchestrator 核心调度器]
</span></span><span class="line"><span class="cl">        TaskLedger[(Task Ledger 任务总账本\n事实 / 猜测 / 宏观计划)]
</span></span><span class="line"><span class="cl">        ProgressLedger[(Progress Ledger 进度账本\n当前步骤 / 评估 / 下一步决策)]
</span></span><span class="line"><span class="cl">        Orchestrator &lt;--&gt; TaskLedger
</span></span><span class="line"><span class="cl">        Orchestrator &lt;--&gt; ProgressLedger
</span></span><span class="line"><span class="cl">    end
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    subgraph 领域专家 Worker 矩阵
</span></span><span class="line"><span class="cl">        WebSurfer[MultimodalWebSurfer\n基于 Chromium 视觉驱动网页浏览]
</span></span><span class="line"><span class="cl">        FileSurfer[FileSurfer\n深度探索与解析本地文件系统]
</span></span><span class="line"><span class="cl">        Coder[Coder\n编写并审查高质量 Python 脚本]
</span></span><span class="line"><span class="cl">        Terminal[ComputerTerminal\n安全沙箱命令与脚本执行环境]
</span></span><span class="line"><span class="cl">    end
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    Orchestrator --&gt;|调度与分发| WebSurfer
</span></span><span class="line"><span class="cl">    Orchestrator --&gt;|调度与分发| FileSurfer
</span></span><span class="line"><span class="cl">    Orchestrator --&gt;|调度与分发| Coder
</span></span><span class="line"><span class="cl">    Orchestrator --&gt;|调度与分发| Terminal
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="61-双层推理循环dual-loop-mechanism">6.1 双层推理循环（Dual-Loop Mechanism）</h3>
<p>Magentic-One 克服复杂长程任务失控的关键，在于其著名的“双账本双循环”设计：</p>
<ol>
<li><strong>外层循环（Task Ledger &amp; 宏观规划）</strong>：
<ul>
<li>维护结构化的<strong>任务总账本</strong>（Task Ledger），详细记录当前已确认的客观事实（Facts）、尚待求证的推论（Educated Guesses）以及分步实施计划。</li>
<li>当任务遭遇重大挫折、路线走不通或内层循环多次重试失败时，触发外层规划重置（Replanning），推翻旧计划并重构路线。</li>
</ul>
</li>
<li><strong>内层循环（Progress Ledger &amp; 微观执行）</strong>：
<ul>
<li>维护<strong>执行进度账本</strong>（Progress Ledger），跟踪当前这一微观步骤是否完成、下一步应当委派哪个专属 Agent 进行操作。</li>
</ul>
</li>
</ol>
<h3 id="62-专属专家矩阵">6.2 专属专家矩阵</h3>
<ul>
<li><strong>MultimodalWebSurfer</strong>：结合视觉与 DOM 树的网页冲浪专员，能自主点击、滚动、填写表单、阅读验证码与抓取图文信息。</li>
<li><strong>FileSurfer</strong>：擅长在复杂的本地文件目录中检索、分析结构化与非结构化文件（PDF、Excel、CSV 等）。</li>
<li><strong>Coder &amp; ComputerTerminal</strong>：代码构思与命令行执行的黄金搭档，负责数值计算、数据整理与环境交互。</li>
</ul>
<hr>
<h2 id="7-关键机制详解代码沙箱执行终止条件与人机协同">7. 关键机制详解：代码沙箱执行、终止条件与人机协同</h2>
<h3 id="71-安全隔离的代码执行机制">7.1 安全隔离的代码执行机制</h3>
<p>AutoGen 与其他框架最显著的区别之一，是其自诞生起就将“代码生成与就地运行反馈”作为一等公民（First-class Citizen）。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">[智能体产出 Markdown 文本]
</span></span><span class="line"><span class="cl">           │
</span></span><span class="line"><span class="cl">           ▼
</span></span><span class="line"><span class="cl">[代码提取器识别 ```python ... ``` 块]
</span></span><span class="line"><span class="cl">           │
</span></span><span class="line"><span class="cl">           ▼
</span></span><span class="line"><span class="cl">┌─────────────────────────────────────────────────────────────┐
</span></span><span class="line"><span class="cl">│                    执行器选择 (Code Executor)                │
</span></span><span class="line"><span class="cl">├──────────────────────────────┬──────────────────────────────┤
</span></span><span class="line"><span class="cl">│  LocalCommandLineCodeExecutor│ DockerCommandLineCodeExecutor│
</span></span><span class="line"><span class="cl">│  - 本地宿主机进程环境运行    │ - 容器安全隔离               │
</span></span><span class="line"><span class="cl">│  - 响应速度快，开箱即用      │ - 避免删库/注入攻击风险      │
</span></span><span class="line"><span class="cl">│  - 仅推荐本地测试调试        │ - 企业级生产环境强制规范     │
</span></span><span class="line"><span class="cl">└──────────────────────────────┴──────────────────────────────┘
</span></span><span class="line"><span class="cl">           │
</span></span><span class="line"><span class="cl">           ▼
</span></span><span class="line"><span class="cl">[捕获返回 Exit Code, STDOUT, STDERR]
</span></span><span class="line"><span class="cl">           │
</span></span><span class="line"><span class="cl">           ▼
</span></span><span class="line"><span class="cl">[作为消息重注入会话，由 Agent 评估或自我修复]
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>[!CAUTION]
<strong>生产安全警示</strong>：永远不要在没有隔离措施的生产服务器上，使用 <code>LocalCommandLineCodeExecutor</code> 运行未经审核的 Agent 生成代码！必须使用 Docker 沙箱或云端隔离容器（如 Azure Container Apps, E2B 沙箱）。</p>
</blockquote>
<hr>
<h3 id="72-动态人机协同human-in-the-loop-hitl">7.2 动态人机协同（Human-in-the-Loop, HITL）</h3>
<p>AutoGen 允许人类随时作为最高裁决者介入流程。在 v0.4 中，主要通过以下方式实现：</p>
<ol>
<li><strong>拦截批准机制（Approval Handlers）</strong>：在工具调用或代码执行前，挂载审批钩子函数。如果操作涉及危险命令（如删除数据库、发送外部邮件），挂起等待用户终端或 Web 端确认。</li>
<li><strong><code>UserProxyAgent</code> 交互注入</strong>：配置输入模式：
<ul>
<li><code>ALWAYS</code>：每一步执行完毕均暂停并要求人类输入下一步指令或评价。</li>
<li><code>NEVER</code>：完全自动化运行，直至触发终止条件。</li>
<li><code>TERMINATE</code>：仅在 Agent 准备结束会话时，询问人类是否认可结果；若不认可，可输入反馈让 Agent 继续修改。</li>
</ul>
</li>
</ol>
<hr>
<h2 id="8-可视化与低代码中枢autogen-studio">8. 可视化与低代码中枢：AutoGen Studio</h2>
<p>为了降低多智能体系统的配置门槛，微软推出了配套的可视化工作台 —— <strong>AutoGen Studio</strong>（在 v0.4 伴随底层进行了全面重构）。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">graph LR
</span></span><span class="line"><span class="cl">    subgraph AutoGen Studio Web 架构
</span></span><span class="line"><span class="cl">        UI[现代 Web 前端\nReact / Next.js] &lt;---&gt; API[FastAPI 后端服务]
</span></span><span class="line"><span class="cl">        API &lt;---&gt; ORM[SQLModel / SQLAlchemy\nSQLite, PostgreSQL]
</span></span><span class="line"><span class="cl">        API &lt;---&gt; Engine[AutoGen v0.4 AgentChat Engine]
</span></span><span class="line"><span class="cl">    end
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="81-核心功能板块">8.1 核心功能板块</h3>
<ol>
<li><strong>Team Builder（团队构建画布）</strong>：
<ul>
<li>可视化配置 Agent 的 System Message、模型参数（Temperature、Top_p）、绑定工具（Skills）与终止规则。</li>
<li>以声明式 JSON / YAML Schema 导出配置，方便 Git 版本控制与 CI/CD 交付。</li>
</ul>
</li>
<li><strong>Playground（交互式试验场）</strong>：
<ul>
<li>提供类似聊天界面的对话控制台，支持<strong>实时打字机流式展示</strong>思考轨迹（Thoughts）与工具输出。</li>
<li><strong>交互拓扑图（Transition Graph）</strong>：可视化显示当前轮次信息在哪个 Agent 之间流转。</li>
<li><strong>中途打断与状态回滚（Mid-Execution Control）</strong>：可在 Agent 偏离预期时暂停任务，修正上下文后继续。</li>
</ul>
</li>
<li><strong>Gallery（模板画廊）</strong>：
<ul>
<li>沉淀官方与社区的最佳实践模板（如数据分析套件、学术论文精读团队、代码审查流水线），一键拉起复用。</li>
</ul>
</li>
</ol>
<h3 id="82-快速启动指南">8.2 快速启动指南</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 1. 安装 AutoGen Studio</span>
</span></span><span class="line"><span class="cl">pip install autogenstudio
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 2. 设置大模型 API 密钥 (Windows PowerShell)</span>
</span></span><span class="line"><span class="cl"><span class="nv">$env</span>:OPENAI_API_KEY<span class="o">=</span><span class="s2">&#34;sk-...&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 3. 启动本地 Web 服务</span>
</span></span><span class="line"><span class="cl">autogenstudio ui --port <span class="m">8081</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><em>浏览器访问 <code>http://localhost:8081</code> 即可进入可视化操作界面。</em></p>
<hr>
<h2 id="9-主流多智能体框架横向对比autogen-vs-langgraph-vs-crewai">9. 主流多智能体框架横向对比：AutoGen vs LangGraph vs CrewAI</h2>
<p>在当前的技术生态中，<strong>AutoGen</strong>、<strong>LangGraph</strong> 与 <strong>CrewAI</strong> 形成了三足鼎立的局面。下表从底层原理到适用场景进行了全维度剖析：</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">评估维度</th>
					<th style="text-align: left">AutoGen (v0.4+ / AG2)</th>
					<th style="text-align: left">LangGraph</th>
					<th style="text-align: left">CrewAI</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>底层核心范式</strong></td>
					<td style="text-align: left"><strong>对话协商与 Actor 消息传递</strong><br>（Conversational / Actor-based）</td>
					<td style="text-align: left"><strong>状态图与有限状态机</strong><br>（StateGraph / Pregel DAGs）</td>
					<td style="text-align: left"><strong>拟人化角色与任务链</strong><br>（Role-Playing Task Teams）</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>控制流确定性</strong></td>
					<td style="text-align: left"><strong>中 $\rightarrow$ 高</strong><br>通过 Team 类型与终止条件约束，自组织性强</td>
					<td style="text-align: left"><strong>极高</strong><br>通过显式边（Edges）和条件分支精确编码</td>
					<td style="text-align: left"><strong>中等</strong><br>通过 Crew 序列或层级委派执行，强调角色扮演</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>状态持久化与回滚</strong></td>
					<td style="text-align: left"><strong>成熟中</strong><br>v0.4 依靠 Actor 状态与 Studio 数据库存储</td>
					<td style="text-align: left"><strong>原生顶级</strong><br>内置 Checkpointer，完美支持 Time-Travel 回滚与分支</td>
					<td style="text-align: left"><strong>良好</strong><br>提供短期、长期与实体记忆库，易于开箱即用</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>代码执行与纠错能力</strong></td>
					<td style="text-align: left"><strong>天花板级别</strong><br>原生将代码沙箱与自我调试作为核心交互机制</td>
					<td style="text-align: left"><strong>需自行组装</strong><br>需编写对应节点并挂载沙箱工具</td>
					<td style="text-align: left"><strong>良好</strong><br>内置基础代码执行工具，但交互循环略重</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>上手门槛与研发周期</strong></td>
					<td style="text-align: left"><strong>快（2~6小时）</strong><br>AgentChat 高层封装优雅，开箱即用</td>
					<td style="text-align: left"><strong>陡峭（2~5天）</strong><br>需要深入理解图论、Reducer 及状态模式</td>
					<td style="text-align: left"><strong>极快（1~3小时）</strong><br>直观的“角色、目标、背景故事、任务”抽象</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>企业生产就绪度</strong></td>
					<td style="text-align: left"><strong>高</strong><br>微软背书，集成分布式运行时与 OTEL 遥测</td>
					<td style="text-align: left"><strong>极高</strong><br>LangSmith 生态协同，强合规金融/法律场景首选</td>
					<td style="text-align: left"><strong>高</strong><br>CrewAI Enterprise 企业平台支持</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>最佳匹配业务场景</strong></td>
					<td style="text-align: left"><strong>研发协同、代码调试、复杂探索性分析、Magentic 级多工具联动作业</strong></td>
					<td style="text-align: left"><strong>确定性极强的工作流、高合规审批流、强依赖分支回溯的业务</strong></td>
					<td style="text-align: left"><strong>内容生产矩阵、营销策划、固定流程的信息收集与汇总</strong></td>
			</tr>
	</tbody>
</table>
<hr>
<h2 id="10-工业级实战代码样例大全">10. 工业级实战代码样例大全</h2>
<p>以下代码均基于现代 <strong>AutoGen v0.4+ (<code>autogen-agentchat</code>, <code>autogen-ext</code>)</strong> 规范编写，采用原生 <code>asyncio</code> 与强类型架构。</p>
<h3 id="101-场景一双智能体协同思考与流式输出规划者--创作者">10.1 场景一：双智能体协同思考与流式输出（规划者 + 创作者）</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span><span class="lnt">51
</span><span class="lnt">52
</span><span class="lnt">53
</span><span class="lnt">54
</span><span class="lnt">55
</span><span class="lnt">56
</span><span class="lnt">57
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">asyncio</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_agentchat.agents</span> <span class="kn">import</span> <span class="n">AssistantAgent</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_agentchat.conditions</span> <span class="kn">import</span> <span class="n">MaxMessageTermination</span><span class="p">,</span> <span class="n">TextMentionTermination</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_agentchat.teams</span> <span class="kn">import</span> <span class="n">RoundRobinGroupChat</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_agentchat.ui</span> <span class="kn">import</span> <span class="n">Console</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_ext.models.openai</span> <span class="kn">import</span> <span class="n">OpenAIChatCompletionClient</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">run_round_robin_demo</span><span class="p">():</span>
</span></span><span class="line"><span class="cl">  <span class="c1"># 1. 实例化底层大模型客户端</span>
</span></span><span class="line"><span class="cl">  <span class="n">model_client</span> <span class="o">=</span> <span class="n">OpenAIChatCompletionClient</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">      <span class="n">model</span><span class="o">=</span><span class="s2">&#34;gpt-4o&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="c1"># api_key=&#34;sk-...&#34; 可从环境变量 OPENAI_API_KEY 自动读取</span>
</span></span><span class="line"><span class="cl">  <span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1"># 2. 定义角色清晰的专家 Agent</span>
</span></span><span class="line"><span class="cl">  <span class="n">planner</span> <span class="o">=</span> <span class="n">AssistantAgent</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">      <span class="n">name</span><span class="o">=</span><span class="s2">&#34;Architect&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">model_client</span><span class="o">=</span><span class="n">model_client</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">system_message</span><span class="o">=</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">          <span class="s2">&#34;你是一位资深系统架构师。面对用户的需求，请给出精炼的 3 步高可用设计框架。&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="s2">&#34;不要长篇大论，突出技术选型与关键考量。&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="n">engineer</span> <span class="o">=</span> <span class="n">AssistantAgent</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">      <span class="n">name</span><span class="o">=</span><span class="s2">&#34;Engineer&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">model_client</span><span class="o">=</span><span class="n">model_client</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">system_message</span><span class="o">=</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">          <span class="s2">&#34;你是一位资深全栈研发工程师。根据架构师给出的方案，给出具体的实现要点或伪代码。&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="s2">&#34;当确认设计与实现完整闭环后，请在回复末尾附带严格的单词：TERMINATE。&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1"># 3. 设置鲁棒的组合终止条件（满足其一即停）</span>
</span></span><span class="line"><span class="cl">  <span class="c1"># - 文本中包含 TERMINATE</span>
</span></span><span class="line"><span class="cl">  <span class="c1"># - 或对话达到 6 轮防死锁上限</span>
</span></span><span class="line"><span class="cl">  <span class="n">termination</span> <span class="o">=</span> <span class="n">TextMentionTermination</span><span class="p">(</span><span class="s2">&#34;TERMINATE&#34;</span><span class="p">)</span> <span class="o">|</span> <span class="n">MaxMessageTermination</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">      <span class="n">max_messages</span><span class="o">=</span><span class="mi">6</span>
</span></span><span class="line"><span class="cl">  <span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1"># 4. 构建轮询编排团队</span>
</span></span><span class="line"><span class="cl">  <span class="n">team</span> <span class="o">=</span> <span class="n">RoundRobinGroupChat</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">      <span class="n">participants</span><span class="o">=</span><span class="p">[</span><span class="n">planner</span><span class="p">,</span> <span class="n">engineer</span><span class="p">],</span> <span class="n">termination_condition</span><span class="o">=</span><span class="n">termination</span>
</span></span><span class="line"><span class="cl">  <span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1"># 5. 启动任务并以控制台流式渲染</span>
</span></span><span class="line"><span class="cl">  <span class="n">task_prompt</span> <span class="o">=</span> <span class="s2">&#34;请为日均千万级请求的短链接系统设计一套后端架构。&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;=== 开始执行任务: </span><span class="si">{</span><span class="n">task_prompt</span><span class="si">}</span><span class="s2"> ===</span><span class="se">\n</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1"># Console 自动流式打印每个 Agent 的回复与状态</span>
</span></span><span class="line"><span class="cl">  <span class="k">await</span> <span class="n">Console</span><span class="p">(</span><span class="n">team</span><span class="o">.</span><span class="n">run_stream</span><span class="p">(</span><span class="n">task</span><span class="o">=</span><span class="n">task_prompt</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">  <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;</span><span class="se">\n</span><span class="s2">=== 任务执行结束 ===&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&#34;__main__&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">  <span class="n">asyncio</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">run_round_robin_demo</span><span class="p">())</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="102-场景二动态路由selector-本地安全代码执行闭环">10.2 场景二：动态路由（Selector）+ 本地安全代码执行闭环</h3>
<p>此场景展示动态自主调度：大模型根据当前进度自动选择是该“编码”、“运行代码”还是“验收确认”。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span><span class="lnt">51
</span><span class="lnt">52
</span><span class="lnt">53
</span><span class="lnt">54
</span><span class="lnt">55
</span><span class="lnt">56
</span><span class="lnt">57
</span><span class="lnt">58
</span><span class="lnt">59
</span><span class="lnt">60
</span><span class="lnt">61
</span><span class="lnt">62
</span><span class="lnt">63
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">asyncio</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_agentchat.agents</span> <span class="kn">import</span> <span class="n">AssistantAgent</span><span class="p">,</span> <span class="n">CodeExecutorAgent</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_agentchat.conditions</span> <span class="kn">import</span> <span class="n">TextMentionTermination</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_agentchat.teams</span> <span class="kn">import</span> <span class="n">SelectorGroupChat</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_agentchat.ui</span> <span class="kn">import</span> <span class="n">Console</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_ext.code_executors.local</span> <span class="kn">import</span> <span class="n">LocalCommandLineCodeExecutor</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">autogen_ext.models.openai</span> <span class="kn">import</span> <span class="n">OpenAIChatCompletionClient</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">run_code_execution_selector_demo</span><span class="p">():</span>
</span></span><span class="line"><span class="cl">  <span class="n">model_client</span> <span class="o">=</span> <span class="n">OpenAIChatCompletionClient</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="s2">&#34;gpt-4o&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1"># 1. 编程专家：输出规范的 markdown 代码块</span>
</span></span><span class="line"><span class="cl">  <span class="n">coder</span> <span class="o">=</span> <span class="n">AssistantAgent</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">      <span class="n">name</span><span class="o">=</span><span class="s2">&#34;PythonCoder&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">model_client</span><span class="o">=</span><span class="n">model_client</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">description</span><span class="o">=</span><span class="s2">&#34;精通 Python 的算法工程师。负责编写完整的、可直接运行的代码块来解决问题。&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">system_message</span><span class="o">=</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">          <span class="s2">&#34;你是一名资深 Python 开发者。请针对任务编写无外部危险依赖的高效代码。&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="s2">&#34;务必将代码包裹在 ```python ... ``` 格式的 markdown 代码块中。&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1"># 2. 代码执行专员：只负责运行代码并捕获控制台输出</span>
</span></span><span class="line"><span class="cl">  <span class="n">workspace_dir</span> <span class="o">=</span> <span class="s2">&#34;./coding_workspace&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="n">local_executor</span> <span class="o">=</span> <span class="n">LocalCommandLineCodeExecutor</span><span class="p">(</span><span class="n">work_dir</span><span class="o">=</span><span class="n">workspace_dir</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  <span class="n">executor</span> <span class="o">=</span> <span class="n">CodeExecutorAgent</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">      <span class="n">name</span><span class="o">=</span><span class="s2">&#34;CodeRunner&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">code_executor</span><span class="o">=</span><span class="n">local_executor</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">description</span><span class="o">=</span><span class="s2">&#34;代码执行专员。负责运行上文对话中的 Python 代码，并反馈控制台标准输出和错误。&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1"># 3. 质量审查与验收员</span>
</span></span><span class="line"><span class="cl">  <span class="n">reviewer</span> <span class="o">=</span> <span class="n">AssistantAgent</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">      <span class="n">name</span><span class="o">=</span><span class="s2">&#34;QualityReviewer&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">model_client</span><span class="o">=</span><span class="n">model_client</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">description</span><span class="o">=</span><span class="s2">&#34;质量评估专家。审查运行结果是否正确，决定是否验收通过。&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">system_message</span><span class="o">=</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">          <span class="s2">&#34;你负责审查代码执行返回的结果是否完全符合用户需求。&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="s2">&#34;如果运行报错，请指出问题并要求 PythonCoder 修复；&#34;</span>
</span></span><span class="line"><span class="cl">          <span class="s2">&#34;如果计算结果准确无误，请在发言末尾输出 TERMINATE。&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1"># 4. 终止条件</span>
</span></span><span class="line"><span class="cl">  <span class="n">termination</span> <span class="o">=</span> <span class="n">TextMentionTermination</span><span class="p">(</span><span class="s2">&#34;TERMINATE&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="c1"># 5. 构建动态选择器团队（SelectorGroupChat）</span>
</span></span><span class="line"><span class="cl">  <span class="c1"># Selector 会利用 model_client 来分析各 Agent 的 description 并决定下一位发言人</span>
</span></span><span class="line"><span class="cl">  <span class="n">team</span> <span class="o">=</span> <span class="n">SelectorGroupChat</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">      <span class="n">participants</span><span class="o">=</span><span class="p">[</span><span class="n">coder</span><span class="p">,</span> <span class="n">executor</span><span class="p">,</span> <span class="n">reviewer</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">      <span class="n">model_client</span><span class="o">=</span><span class="n">model_client</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">termination_condition</span><span class="o">=</span><span class="n">termination</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="n">allow_repeated_speaker</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>  <span class="c1"># 强制禁止同一个智能体连续发言两次</span>
</span></span><span class="line"><span class="cl">  <span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="n">task</span> <span class="o">=</span> <span class="s2">&#34;请计算第 30 个斐波那契数列的值，并计算前 30 个数的总和，打印输出结果。&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;=== 动态协同执行任务: </span><span class="si">{</span><span class="n">task</span><span class="si">}</span><span class="s2"> ===</span><span class="se">\n</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  <span class="k">await</span> <span class="n">Console</span><span class="p">(</span><span class="n">team</span><span class="o">.</span><span class="n">run_stream</span><span class="p">(</span><span class="n">task</span><span class="o">=</span><span class="n">task</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&#34;__main__&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">  <span class="n">asyncio</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">run_code_execution_selector_demo</span><span class="p">())</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="103-场景三经典版ag2--autogen-v02常用代码存照">10.3 场景三：经典版（AG2 / AutoGen v0.2）常用代码存照</h3>
<p>为了方便开发者维护存量系统或阅读历史开源代码，下文列出经典的 <code>ConversableAgent</code> 群聊实现：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 适用环境：pip install pyautogen 或 pip install ag2</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">autogen</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">config_list</span> <span class="o">=</span> <span class="p">[{</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;model&#34;</span><span class="p">:</span> <span class="s2">&#34;gpt-4o&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;api_key&#34;</span><span class="p">:</span> <span class="s2">&#34;sk-...&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="p">}]</span>
</span></span><span class="line"><span class="cl"><span class="n">llm_config</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;config_list&#34;</span><span class="p">:</span> <span class="n">config_list</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;temperature&#34;</span><span class="p">:</span> <span class="mf">0.2</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;timeout&#34;</span><span class="p">:</span> <span class="mi">120</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 1. 具备代码执行能力的 UserProxyAgent</span>
</span></span><span class="line"><span class="cl"><span class="n">user_proxy</span> <span class="o">=</span> <span class="n">autogen</span><span class="o">.</span><span class="n">UserProxyAgent</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">name</span><span class="o">=</span><span class="s2">&#34;Admin&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">system_message</span><span class="o">=</span><span class="s2">&#34;人类管理者。负责协调任务并执行生成的代码。&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">code_execution_config</span><span class="o">=</span><span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;work_dir&#34;</span><span class="p">:</span> <span class="s2">&#34;classic_workspace&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;use_docker&#34;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>  <span class="c1"># 仅测试，生产务必设为 True</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="n">human_input_mode</span><span class="o">=</span><span class="s2">&#34;NEVER&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">is_termination_msg</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="s2">&#34;TERMINATE&#34;</span> <span class="ow">in</span> <span class="n">x</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&#34;content&#34;</span><span class="p">,</span> <span class="s2">&#34;&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 2. 专家助理</span>
</span></span><span class="line"><span class="cl"><span class="n">engineer</span> <span class="o">=</span> <span class="n">autogen</span><span class="o">.</span><span class="n">AssistantAgent</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">name</span><span class="o">=</span><span class="s2">&#34;Engineer&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">llm_config</span><span class="o">=</span><span class="n">llm_config</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">system_message</span><span class="o">=</span><span class="s2">&#34;资深数据分析师。通过编写 Python 代码处理数据，当结论得出后输出 TERMINATE。&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 3. 经典双 Agent 发起对话</span>
</span></span><span class="line"><span class="cl"><span class="n">user_proxy</span><span class="o">.</span><span class="n">initiate_chat</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">engineer</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="s2">&#34;请帮我抓取近 7 天某加密货币的价格趋势并绘制折线图保存在本地。&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="11-生产落地挑战防坑指南与最佳实践">11. 生产落地挑战、防坑指南与最佳实践</h2>
<h3 id="111-常见问题与避坑策略">11.1 常见问题与避坑策略</h3>
<h4 id="坑点-1agent-间陷入客套与循环死锁">坑点 1：Agent 间陷入“客套与循环死锁”</h4>
<ul>
<li><strong>现象</strong>：Agent A 与 Agent B 反复互相道谢，或者在某个微小逻辑上反复横跳，Token 飞速消耗。</li>
<li><strong>解决策略</strong>：
<ol>
<li>必须始终配置 <code>MaxMessageTermination</code> 作为双保险底线。</li>
<li>在 <code>system_message</code> 中明确规范退出准则（例如：“当目标达成时，严禁输出任何多余寒暄，只输出结论与 TERMINATE”）。</li>
<li>在 <code>SelectorGroupChat</code> 中开启 <code>allow_repeated_speaker=False</code>。</li>
</ol>
</li>
</ul>
<h4 id="坑点-2动态选择器selector频繁选错人">坑点 2：动态选择器（Selector）频繁选错人</h4>
<ul>
<li><strong>根因</strong>：Agent 的 <code>description</code> 写得过于简略或互相重叠。</li>
<li><strong>最佳实践</strong>：<strong>“Agent 的 description 是写给 Router 模型的提示词”</strong>。必须明确写出：该 Agent 能做什么、不能做什么、在什么输入出现时应当触发它（如上文样例中，明确指出 CodeRunner 专门“执行代码”）。</li>
</ul>
<h4 id="坑点-3上下文窗口溢出与成本剧增">坑点 3：上下文窗口溢出与成本剧增</h4>
<ul>
<li><strong>解决策略</strong>：
<ol>
<li><strong>层级折叠</strong>：采用 Society of Mind 模式，将低级别的调试和长日志封印在子 Team 中，只向主 Team 汇报最终结论。</li>
<li><strong>上下文修剪与总结</strong>：在长程对话中挂载消息过滤器（Message Truncation），定期对历史记录进行摘要压缩。</li>
</ol>
</li>
</ul>
<h4 id="坑点-4生产环境代码执行安全风险">坑点 4：生产环境代码执行安全风险</h4>
<ul>
<li><strong>铁律</strong>：严禁在生产宿主机直接运行 <code>LocalCommandLineCodeExecutor</code>。必须配置 Docker 沙箱，限制容器的最大内存、CPU 配额、磁盘写权限与对外网络访问（阻止反弹 Shell 或泄露环境变量）。</li>
</ul>
<hr>
<h3 id="112-生产化架构落地推荐范式">11.2 生产化架构落地推荐范式</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">                                [客户端 / 前端应用]
</span></span><span class="line"><span class="cl">                                         │
</span></span><span class="line"><span class="cl">                                         ▼ (WebSocket / SSE 流)
</span></span><span class="line"><span class="cl">┌─────────────────────────────────────────────────────────────────────────────┐
</span></span><span class="line"><span class="cl">│                       应用服务网关 (FastAPI / gRPC)                         │
</span></span><span class="line"><span class="cl">│  - 鉴权认证、速率限制 (Rate Limit)、输入安全审查 (Guardrails)                │
</span></span><span class="line"><span class="cl">└─────────────────────────────────────────────────────────────────────────────┘
</span></span><span class="line"><span class="cl">                                         │
</span></span><span class="line"><span class="cl">                                         ▼
</span></span><span class="line"><span class="cl">┌─────────────────────────────────────────────────────────────────────────────┐
</span></span><span class="line"><span class="cl">│                 AutoGen v0.4 运行时容器 (Agent Runtime Pool)                │
</span></span><span class="line"><span class="cl">│  - 基于 Team 组织架构 (Selector / Magentic-One 模式)                         │
</span></span><span class="line"><span class="cl">│  - OpenTelemetry 链路跟踪: 监控 LLM 延迟、Token 消耗、工具调用耗时          │
</span></span><span class="line"><span class="cl">└─────────────────────────────────────────────────────────────────────────────┘
</span></span><span class="line"><span class="cl">                     │                                   │
</span></span><span class="line"><span class="cl">                     ▼                                   ▼
</span></span><span class="line"><span class="cl">┌─────────────────────────────────────┐ ┌─────────────────────────────────────┐
</span></span><span class="line"><span class="cl">│         模型服务接入层              │ │            隔离沙箱执行层           │
</span></span><span class="line"><span class="cl">│  - 统一调用网关 (Azure / LiteLLM)   │ │  - 弹性容器池 (Docker / E2B)        │
</span></span><span class="line"><span class="cl">│  - 具备重试、熔断与主备模型平滑切换 │ │  - 挂载独立虚拟工作空间目录         │
</span></span><span class="line"><span class="cl">└─────────────────────────────────────┘ └─────────────────────────────────────┘
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="12-总结与未来展望">12. 总结与未来展望</h2>
<p>AutoGen 以其独特的<strong>对话协同设计</strong>与<strong>强大的代码自我闭环</strong>，极大地推动了多智能体范式在学术界与工业界的繁荣。</p>
<ul>
<li>从 <strong>AutoGen 0.2</strong> 的轻量级对话探索，到 <strong>AutoGen 0.4</strong> 的分布式异步 <strong>Actor 模型</strong> 重塑；</li>
<li>从单体实验脚本，到以 <strong>Magentic-One</strong> 为代表的工业级通用任务解决架构；</li>
<li>从单一命令行，到 <strong>AutoGen Studio</strong> 的可视化低代码协同。</li>
</ul>
<p>无论你选择拥抱原班作者团队维护的 <strong>AG2</strong> 开源生态，还是选择深耕微软官方的 <strong>AutoGen v0.4 与 Microsoft Agent Framework</strong>，深入理解其<strong>消息传递机制、角色职责解耦、安全执行沙箱与严格终止控制</strong>，都将是构建下一代生产级企业 AI Agent 系统的核心竞争力。</p>
]]></content:encoded>
    </item>
    <item>
      <title>README</title>
      <link>https://tuanzi-wow.cn/frameworks/autogen/readme/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://tuanzi-wow.cn/frameworks/autogen/readme/</guid>
      <description>README相关学习笔记与实践要点。</description>
      <content:encoded><![CDATA[<h1 id="autogen-知识库与全景总结">AutoGen 知识库与全景总结</h1>
<p>本目录存放了关于 <strong>AutoGen（多智能体对话协作框架）</strong> 的全面知识总结、架构解析与工程落地实践指南。</p>
<h2 id="核心文档索引">核心文档索引</h2>
<ul>
<li>📄 <strong><a href="/frameworks/autogen/autogen-learning-notes/">AutoGen学习文档.md</a></strong>（完整全景知识总结报告）
<ul>
<li><strong>第 1 章</strong>：框架背景与发展演变（起源、AG2 与微软官方 v0.4+ 的历史分流）</li>
<li><strong>第 2 章</strong>：核心设计范式（对话即计算 vs 现代化 Actor 模型与事件驱动）</li>
<li><strong>第 3 章</strong>：AutoGen v0.4 分层架构深度剖析（<code>autogen-core</code>, <code>autogen-agentchat</code>, <code>autogen-ext</code>）</li>
<li><strong>第 4 章</strong>：核心构件与关键抽象（Agents, Teams, TerminationConditions）</li>
<li><strong>第 5 章</strong>：多智能体编排与协作拓扑模式（轮询、动态选择器 Selector、蜂群 Swarm、层级式）</li>
<li><strong>第 6 章</strong>：旗舰级通用系统 Magentic-One 架构（双层推理循环 Ledgers 与专家矩阵）</li>
<li><strong>第 7 章</strong>：关键机制（代码沙箱安全隔离、人机协同 HITL、工具调用）</li>
<li><strong>第 8 章</strong>：可视化中枢 AutoGen Studio 原理与实战</li>
<li><strong>第 9 章</strong>：横向对比（AutoGen vs LangGraph vs CrewAI 全维度矩阵）</li>
<li><strong>第 10 章</strong>：工业级代码实战样例（RoundRobin、Selector+代码沙箱、经典 v0.2/AG2 存照）</li>
<li><strong>第 11 章</strong>：生产落地避坑指南与最佳实践</li>
</ul>
</li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
