完整教程:多智能体框架AgentScope 1.0 深度技术剖析:架构、场景、选型与实战指南
<style>pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14px !important; line-height: 1.6 !important; padding: 16px !important; margin: 16px 0 !important; background-color: rgba(248, 248, 248, 1) !important; border: 1px solid rgba(225, 228, 232, 1) !important; border-radius: 6px !important; tab-size: 4 !important; -moz-tab-size: 4 !important; max-width: 100% !important; box-sizing: border-box !important }code { font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14px !important; white-space: pre !important; word-wrap: normal !important; word-break: normal !important; overflow-wrap: normal !important; display: inline !important; background: rgba(0, 0, 0, 0) !important; border: none !important; padding: 0 !important; margin: 0 !important; line-height: inherit !important }
pre code { background: rgba(0, 0, 0, 0) !important; border: 0 !important; border-radius: 0 !important; display: block !important; line-height: 1.6 !important; margin: 0 !important; max-width: none !important; overflow: visible !important; padding: 0 !important; white-space: pre !important; word-wrap: normal !important; word-break: normal !important; color: inherit !important }
.token.comment, .token.prolog, .token.doctype, .token.cdata { color: rgba(112, 128, 144, 1) !important; font-style: italic !important }
.token.punctuation { color: rgba(153, 153, 153, 1) !important }
.token.atrule, .token.attr-value, .token.keyword { color: rgba(0, 119, 170, 1) !important; font-weight: bold !important }
.token.function, .token.class-name { color: rgba(221, 74, 104, 1) !important; font-weight: bold !important }
.token.selector, .token.attr-name, .token.string, .token.char, .token.builtin, .token.inserted { color: rgba(102, 153, 0, 1) !important }
.token.property, .token.tag, .token.boolean, .token.number, .token.constant, .token.symbol, .token.deleted { color: rgba(153, 0, 85, 1) !important }
.cnblogs-markdown pre, .cnblogs-post-body pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; background-color: rgba(248, 248, 248, 1) !important; border: 1px solid rgba(225, 228, 232, 1) !important; border-radius: 6px !important; padding: 16px !important; margin: 16px 0 !important }
pre, pre, pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important }</style>
<div class="markdown_views prism-atom-one-dark" id="content_views"><svg style="display: none" xmlns="http://www.w3.org/2000/svg"><path d="M5,0 0,2.5 5,5z" id="raphael-marker-block" stroke-linecap="round" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0)"></path></svg><p></p><div class="toc"><h4>文章目录</h4><ul><li><ul><li>引言:多智能体开发的工程化革命</li><li>一、技术架构:三位一体的工程化设计</li><li><ul><li>1.1 核心框在这里插入图片描述</li><li>1.2 Runtime层:生产级运行保障</li><li>1.3 Studio层:可视化管控中心</li></ul></li><li>二、典型应用场景:从技术到业务落地</li><li><ul><li>2.1 企业级智能协作系统</li><li>2.2 复杂任务自动化处理</li><li>2.3 高敏感场景智能服务</li></ul></li><li>三、主流框架深度对比:专业选型指南</li><li><ul><li>选型决策矩阵</li></ul></li><li>四、实战上手:从环境搭建到分布式部署</li><li><ul><li>4.1 环境准备与基础配置</li><li>4.2 核心功能实战:多智能体协作与实时介入</li><li><ul><li>示例1:多智能体旅行规划系统(基础协作)</li><li>示例2:实时介入与中断处理(高级功能)</li></ul></li><li>4.3 分布式评估与监控配置</li></ul></li><li>五、最佳实践与性能优化</li><li><ul><li>5.1 架构设计最佳实践</li><li>5.2 性能优化策略</li><li>5.3 安全合规要点</li></ul></li></ul></li></ul></div><p></p><h3>引言:多智能体开发的工程化革命</h3><p>多智能体系统(MAS)已成为解决复杂业务问题的核心范式,但工业级落地面临三大核心痛点:智能体协作逻辑黑盒化、LLM幻觉与执行失控风险、多模态/工具集成碎片化、分布式部署门槛高。<br> 9月2日,阿里通义实验室正式发布新一代智能体开发框架——<strong>AgentScope 1.0</strong>。该框架是一款以开发者为核心的开源工具,专注于多智能体系统的构建与应用开发,旨在解决当前智能体在状态管理、工具调用、运行安全和系统监控等方面的共性难题。<br> 作为国内首个覆盖多智能体全生命周期的开源框架,通过"核心框架+Runtime+Studio"三位一体架构,将多智能体开发从"原型验证"推向"工程化落地",为生产级应用提供了可控、可靠、可观测的完整解决方案。本文将从技术架构、场景落地、框架选型、实战上手四个维度,结合官方技术细节与行业实践,进行深度解析。</p><ul><li>官方文档:https://doc.agentscope.io/index.html</li></ul><h3>一、技术架构:三位一体的工程化设计</h3><p>AgentScope 1.0的核心优势源于其分层解耦且协同联动的技术架构,三大组件(AgentScope、AgentScope-Runtime、AgentScope-Studio)既独立可用,又可无缝集成,形成从开发到部署的闭环。<br><img alt="在这里插入图片描述" src="https://i-blog.csdnimg.cn/direct/af3e5fe1e1cf40498761644015229547.jpeg"></p><h4>1.1 核心框在这里插入图片描述</h4><p>架层:智能体协作的引擎核心<br> 核心框架层以"透明可控、模型无关、多智能体优先"为设计理念,构建了模块化的协作体系。</p><ul><li><p><strong>通信中枢:MsgHub消息机制</strong><br> 基于消息驱动架构,通过统一的MsgHub模块实现智能体间通信路由,支持多模态数据(文本、图像、音频)通过URL解耦存储与传输,所有交互过程完全透明可追溯。消息结构支持结构化输出定义,通过Pydantic模型约束,确保数据一致性。<img alt="在这里插入图片描述" src="https://i-blog.csdnimg.cn/direct/8191f4e92b084534bfdfe458e03465d4.png"></p></li><li><p><strong>四大核心组件</strong></p><ul><li>模型接口:通过ModelWrapper抽象统一接入逻辑,支持17+ LLM提供商(通义千问、GPT、Claude等)及本地模型服务,实现"一次编程,多模型运行"。</li><li>记忆系统:长短时记忆协同机制,短期记忆动态压缩语义主干,长期记忆支持关键信息持久化存储与按需检索,解决"健忘症"问题。</li><li>工具调用:基于ReAct范式的工具体系,支持工具分组、元工具动态管理、并行调用,通过asyncio.gather实现多工具异步执行。</li><li>工作流编排:原生支持路由式分发、并行处理、协调者-工作者架构等多种协作模式,通过装饰器语法简化编排逻辑。</li></ul></li><li><p><strong>关键技术特性</strong></p><ul><li>实时介入控制:基于异步架构支持任意时刻安全中断,自动保存上下文与中间状态,恢复后无缝续接任务流。</li><li>钩子扩展机制:预置pre_reply、post_reasoning等多类钩子函数,支持无侵入式自定义监控、日志与数据处理逻辑。</li><li>容错机制:内置自动重试、格式校验修正、自定义异常处理三级容错,保障执行稳定性。</li></ul></li></ul><h4>1.2 Runtime层:生产级运行保障</h4><p>Runtime层作为智能体的"操作系统",聚焦安全与部署能力,解决生产环境中的核心痛点。</p><ul><li><p><strong>安全沙箱机制</strong><br> 基于容器化技术构建隔离执行环境,严格限制代码执行、文件操作与网络访问权限,防止恶意代码扩散,支持K8s编排实现弹性扩展,满足金融、医疗等高敏感场景需求。</p></li><li><p><strong>分布式部署能力</strong><br> 基于Actor模型实现"中心化编程,分布式运行",开发者无需关注节点通信与数据同步,系统自动完成任务并行拆分与资源调度,支持本地、云端、边缘设备混合部署。</p></li><li><p><strong>高并发支撑</strong><br> 内置异步处理框架与实时请求队列,支持批量请求合并处理,可动态调整任务优先级,避免高负载下的请求阻塞。</p></li></ul><h4>1.3 Studio层:可视化管控中心</h4><p>Studio层作为"智能体仪表盘",提供全生命周期的可观测与可操作能力。<br><img alt="在这里插入图片描述" src="https://i-blog.csdnimg.cn/direct/00c5d1bebcb049f39697a9e60f2b2d72.png"></p><p><img alt="" src="https://i-blog.csdnimg.cn/direct/1cb7a7d41ce3468abc59648019d62d11.png"></p><ul><li><p><strong>全链路追踪</strong><br> 基于OpenTelemetry标准实现分布式追踪,支持与Arize-Phoenix、Langfuse等第三方监控平台集成,导出模型调用、工具执行、消息流转等全链路数据。</p></li><li><p><strong>可视化调试</strong><br> 直观展示智能体思考过程、状态变化与协作轨迹,支持对话流回溯与断点调试,将调试从"盲猜"转为"可视化分析"。</p></li><li><p><strong>分布式评估</strong><br> 集成Ray分布式计算框架,支持ACEBench等基准测试集,提供多维度评估指标(准确性、效率、稳定性),支持数千任务并行评估,结果自动聚合分析。</p></li></ul><h3>二、典型应用场景:从技术到业务落地</h3><p>AgentScope 1.0的工程化设计使其能适配多行业复杂场景,以下为经过实践验证的核心落地场景。</p><h4>2.1 企业级智能协作系统</h4><ul><li><strong>供应链协同</strong>:菜鸟物流中,调度Agent调用地图工具分析路况,库存Agent实时同步仓储数据,异常处理Agent动态响应突发状况,通过并行协作将物流效率提升30%+。</li><li><strong>研发协同平台</strong>:盒马供应链场景中,需求分析Agent拆解业务需求,代码生成Agent自动化开发,测试Agent执行单元测试与性能检测,形成"需求-开发-测试"闭环,开发周期缩短40%。</li></ul><h4>2.2 复杂任务自动化处理</h4><ul><li><strong>元规划器驱动的任务分解</strong>:金融研报生成场景中,元规划器Agent将"生成行业研报"拆解为数据采集、数据分析、可视化生成、文案撰写子任务,动态分配给专业Agent并行执行,端到端处理时间从小时级降至分钟级。</li><li><strong>多模态内容生产</strong>:营销内容创作中,图像理解Agent分析产品图,文案Agent生成推广文案,音频Agent将文案转为语音,视频Agent整合多模态内容生成短视频,实现全流程自动化。</li></ul><h4>2.3 高敏感场景智能服务</h4><ul><li><strong>金融智能客服</strong>:通过安全沙箱隔离客户数据处理过程,实时介入机制支持人工接管复杂咨询,长期记忆系统记录客户偏好与历史业务,实现合规前提下的个性化服务。</li><li><strong>医疗辅助诊断</strong>:多Agent分工协作处理病历文本、医学影像、检验数据,工具调用过程全程留痕,支持专家实时修正诊断建议,平衡智能化与医疗安全。</li></ul><h3>三、主流框架深度对比:专业选型指南</h3><p>以下从12个核心技术维度,对AgentScope与当前主流多智能体框架进行精细化对比,数据源于官方文档与实测验证:</p><table><thead><tr><th>对比维度</th><th>AgentScope 1.0</th><th>LangGraph</th><th>AutoGen</th><th>LangChain</th><th>MetaGPT</th><th>CrewAI</th></tr></thead><tbody><tr><td>核心架构</td><td>三位一体(框架+Runtime+Studio)</td><td>图结构工作流</td><td>双代理对话协议</td><td>组件化链式调用</td><td>角色模拟开发团队</td><td>轻量级角色分工</td></tr><tr><td>多智能体协作模式</td><td>支持路由/并行/协调者-工作者等多模式</td><td>基于图节点条件路由</td><td>对话驱动协作</td><td>需手动搭建协作逻辑</td><td>固定角色流程模板</td><td>简单任务分发</td></tr><tr><td>实时介入控制</td><td>原生支持安全中断+状态保存+无缝恢复</td><td>无原生支持,需自定义开发</td><td>支持有限人工介入</td><td>不支持</td><td>不支持</td><td>不支持</td></tr><tr><td>记忆系统</td><td>长短时记忆协同+动态压缩</td><td>基础上下文管理</td><td>对话历史缓存</td><td>多种Memory实现但无协同</td><td>固定流程记忆</td><td>简单会话记忆</td></tr><tr><td>工具调用能力</td><td>分组管理+并行调用+元工具动态调度</td><td>基础工具调用</td><td>代码生成+执行一体化</td><td>丰富工具集成但无并行</td><td>固定开发工具链</td><td>基础函数调用</td></tr><tr><td>多模态支持</td><td>原生支持文本/图像/音频,URL解耦传输</td><td>需额外集成第三方库</td><td>仅支持文本</td><td>需手动扩展</td><td>仅支持文本</td><td>不支持</td></tr><tr><td>安全机制</td><td>容器化沙箱+权限隔离</td><td>无原生安全防护</td><td>基础代码执行隔离</td><td>无安全机制</td><td>无安全机制</td><td>无安全机制</td></tr><tr><td>分布式部署</td><td>原生支持,中心化编程分布式运行</td><td>需额外适配</td><td>复杂,需手动配置</td><td>不支持</td><td>有限支持</td><td>不支持</td></tr><tr><td>可观测性</td><td>OpenTelemetry集成+可视化监控+分布式评估</td><td>基础日志输出</td><td>有限日志</td><td>基础追踪</td><td>流程日志</td><td>无</td></tr><tr><td>容错能力</td><td>自动重试+格式校验+自定义异常处理</td><td>需手动实现</td><td>基础错误捕获</td><td>简单重试</td><td>无</td><td>无</td></tr><tr><td>上手难度</td><td>中(工程化特性丰富)</td><td>高(需图结构思维)</td><td>中(编程友好)</td><td>中(组件多需筛选)</td><td>低(固定模板)</td><td>低(配置化)</td></tr><tr><td>适用场景</td><td>企业级生产环境、复杂任务自动化</td><td>复杂流程建模、学术研究</td><td>代码生成、编程协作</td><td>单智能体工具扩展</td><td>开发流程自动化</td><td>快速原型、简单协作</td></tr></tbody></table><h4>选型决策矩阵</h4><ul><li>若需构建<strong>企业级生产环境</strong>应用,要求安全可控、分布式部署与全生命周期管控,优先选择AgentScope 1.0;</li><li>若聚焦<strong>复杂流程建模</strong>(如科研辅助、多步骤数据分析),且具备图结构设计能力,可选择LangGraph;</li><li>若核心需求是<strong>代码生成与编程协作</strong>,AutoGen的代码执行一体化能力更具优势;</li><li>若需快速搭建<strong>简单协作原型</strong>(如市场调研、内容聚合),CrewAI的低门槛配置更合适;</li><li>若专注<strong>开发流程自动化</strong>(如需求转代码),MetaGPT的预设角色模板可提升效率。</li></ul><h3>四、实战上手:从环境搭建到分布式部署</h3><h4>4.1 环境准备与基础配置</h4>
<pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-bash"><span class="token comment"># 安装核心框架(支持Python 3.8+)</span>
pip <span class="token function">install</span> agentscope<span class="token punctuation">[</span>full<span class="token punctuation">]</span><span class="token comment"># full包含Runtime与Studio组件</span>
<span class="token comment"># 配置API密钥(以通义千问为例)</span>
<span class="token builtin class-name">export</span> <span class="token assign-left variable">DASHSCOPE_API_KEY</span><span class="token operator">=</span><span class="token string">"your-api-key"</span>
<span class="token comment"># 启动Studio可视化界面</span>
agentscope studio<span class="token comment"># 访问http://localhost:8000进入控制台</span></code></pre>
<h4>4.2 核心功能实战:多智能体协作与实时介入</h4><h5>示例1:多智能体旅行规划系统(基础协作)</h5>
<pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-python"><span class="token keyword">import</span> agentscope <span class="token keyword">as</span> ag
<span class="token keyword">from</span> agentscope<span class="token punctuation">.</span>agent <span class="token keyword">import</span> ReActAgent
<span class="token keyword">from</span> agentscope<span class="token punctuation">.</span>model <span class="token keyword">import</span> DashScopeChatModel
<span class="token keyword">from</span> agentscope<span class="token punctuation">.</span>formatter <span class="token keyword">import</span> DashScopeChatFormatter
<span class="token comment"># 1. 定义工具函数</span>
<span class="token keyword">def</span> <span class="token function">get_weather</span><span class="token punctuation">(</span>location<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">:</span>
<span class="token triple-quoted-string string">"""获取目标城市天气信息"""</span>
<span class="token comment"># 实际场景中替换为真实天气API调用</span>
<span class="token keyword">return</span> <span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>location<span class="token punctuation">}</span></span><span class="token string">今日天气:晴,25-32℃,适合户外活动"</span></span>
<span class="token keyword">def</span> <span class="token function">get_attractions</span><span class="token punctuation">(</span>location<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">:</span>
<span class="token triple-quoted-string string">"""获取热门景点信息"""</span>
<span class="token keyword">return</span> <span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>location<span class="token punctuation">}</span></span><span class="token string">热门景点:西湖、灵隐寺、千岛湖,建议游玩顺序:西湖→灵隐寺"</span></span>
<span class="token keyword">def</span> <span class="token function">get_restaurants</span><span class="token punctuation">(</span>location<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span> <span class="token builtin">str</span><span class="token punctuation">:</span>
<span class="token triple-quoted-string string">"""获取特色餐厅信息"""</span>
<span class="token keyword">return</span> <span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>location<span class="token punctuation">}</span></span><span class="token string">特色餐厅:楼外楼(西湖醋鱼)、知味观(小笼包)"</span></span>
<span class="token comment"># 2. 初始化模型配置</span>
model_config <span class="token operator">=</span> ag<span class="token punctuation">.</span>ModelConfig<span class="token punctuation">(</span>
model<span class="token operator">=</span><span class="token string">"qwen-turbo"</span><span class="token punctuation">,</span>
api_key<span class="token operator">=</span>os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">"DASHSCOPE_API_KEY"</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
stream<span class="token operator">=</span><span class="token boolean">False</span>
<span class="token punctuation">)</span>
<span class="token comment"># 3. 创建专业智能体</span>
weather_agent <span class="token operator">=</span> ReActAgent<span class="token punctuation">(</span>
name<span class="token operator">=</span><span class="token string">"WeatherAgent"</span><span class="token punctuation">,</span>
sys_prompt<span class="token operator">=</span><span class="token string">"你是天气查询专家,仅使用get_weather工具回答天气问题"</span><span class="token punctuation">,</span>
model<span class="token operator">=</span>DashScopeChatModel<span class="token punctuation">(</span>model_config<span class="token punctuation">)</span><span class="token punctuation">,</span>
formatter<span class="token operator">=</span>DashScopeChatFormatter<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
tools<span class="token operator">=</span><span class="token punctuation">[</span>get_weather<span class="token punctuation">]</span><span class="token punctuation">,</span>
max_iters<span class="token operator">=</span><span class="token number">3</span>
<span class="token punctuation">)</span>
attraction_agent <span class="token operator">=</span> ReActAgent<span class="token punctuation">(</span>
name<span class="token operator">=</span><span class="token string">"AttractionAgent"</span><span class="token punctuation">,</span>
sys_prompt<span class="token operator">=</span><span class="token string">"你是景点推荐专家,仅使用get_attractions工具推荐景点"</span><span class="token punctuation">,</span>
model<span class="token operator">=</span>DashScopeChatModel<span class="token punctuation">(</span>model_config<span class="token punctuation">)</span><span class="token punctuation">,</span>
formatter<span class="token operator">=</span>DashScopeChatFormatter<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
tools<span class="token operator">=</span><span class="token punctuation">[</span>get_attractions<span class="token punctuation">]</span><span class="token punctuation">,</span>
max_iters<span class="token operator">=</span><span class="token number">3</span>
<span class="token punctuation">)</span>
restaurant_agent <span class="token operator">=</span> ReActAgent<span class="token punctuation">(</span>
name<span class="token operator">=</span><span class="token string">"RestaurantAgent"</span><span class="token punctuation">,</span>
sys_prompt<span class="token operator">=</span><span class="token string">"你是餐饮推荐专家,仅使用get_restaurants工具推荐餐厅"</span><span class="token punctuation">,</span>
model<span class="token operator">=</span>DashScopeChatModel<span class="token punctuation">(</span>model_config<span class="token punctuation">)</span><span class="token punctuation">,</span>
formatter<span class="token operator">=</span>DashScopeChatFormatter<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
tools<span class="token operator">=</span><span class="token punctuation">[</span>get_restaurants<span class="token punctuation">]</span><span class="token punctuation">,</span>
max_iters<span class="token operator">=</span><span class="token number">3</span>
<span class="token punctuation">)</span>
<span class="token comment"># 4. 创建协调智能体(工作流编排)</span>
<span class="token decorator annotation punctuation">@ag<span class="token punctuation">.</span>workflow</span>
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">travel_planning_workflow</span><span class="token punctuation">(</span>location<span class="token punctuation">:</span> <span class="token builtin">str</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
<span class="token comment"># 并行调用专业智能体</span>
weather_task <span class="token operator">=</span> weather_agent<span class="token punctuation">.</span>run_async<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"查询</span><span class="token interpolation"><span class="token punctuation">{</span>location<span class="token punctuation">}</span></span><span class="token string">天气"</span></span><span class="token punctuation">)</span>
attraction_task <span class="token operator">=</span> attraction_agent<span class="token punctuation">.</span>run_async<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"推荐</span><span class="token interpolation"><span class="token punctuation">{</span>location<span class="token punctuation">}</span></span><span class="token string">景点"</span></span><span class="token punctuation">)</span>
restaurant_task <span class="token operator">=</span> restaurant_agent<span class="token punctuation">.</span>run_async<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"推荐</span><span class="token interpolation"><span class="token punctuation">{</span>location<span class="token punctuation">}</span></span><span class="token string">特色餐厅"</span></span><span class="token punctuation">)</span>
<span class="token comment"># 等待所有结果返回</span>
weather_res<span class="token punctuation">,</span> attraction_res<span class="token punctuation">,</span> restaurant_res <span class="token operator">=</span> <span class="token keyword">await</span> asyncio<span class="token punctuation">.</span>gather<span class="token punctuation">(</span>
weather_task<span class="token punctuation">,</span> attraction_task<span class="token punctuation">,</span> restaurant_task
<span class="token punctuation">)</span>
<span class="token comment"># 生成最终旅行计划</span>
planner_agent <span class="token operator">=</span> ReActAgent<span class="token punctuation">(</span>
name<span class="token operator">=</span><span class="token string">"PlannerAgent"</span><span class="token punctuation">,</span>
sys_prompt<span class="token operator">=</span><span class="token string">"基于天气、景点、餐厅信息,生成合理的一日游计划"</span><span class="token punctuation">,</span>
model<span class="token operator">=</span>DashScopeChatModel<span class="token punctuation">(</span>model_config<span class="token punctuation">)</span><span class="token punctuation">,</span>
formatter<span class="token operator">=</span>DashScopeChatFormatter<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">)</span>
plan <span class="token operator">=</span> <span class="token keyword">await</span> planner_agent<span class="token punctuation">.</span>run<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"""
基于以下信息生成</span><span class="token interpolation"><span class="token punctuation">{</span>location<span class="token punctuation">}</span></span><span class="token string">一日游计划:
天气:</span><span class="token interpolation"><span class="token punctuation">{</span>weather_res<span class="token punctuation">}</span></span><span class="token string">
景点:</span><span class="token interpolation"><span class="token punctuation">{</span>attraction_res<span class="token punctuation">}</span></span><span class="token string">
餐厅:</span><span class="token interpolation"><span class="token punctuation">{</span>restaurant_res<span class="token punctuation">}</span></span><span class="token string">
要求:时间安排合理,兼顾游玩体验与餐饮需求
"""</span></span><span class="token punctuation">)</span>
<span class="token keyword">return</span> plan
<span class="token comment"># 5. 执行工作流</span>
<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">"__main__"</span><span class="token punctuation">:</span>
ag<span class="token punctuation">.</span>init<span class="token punctuation">(</span><span class="token punctuation">)</span>
result <span class="token operator">=</span> asyncio<span class="token punctuation">.</span>run<span class="token punctuation">(</span>travel_planning_workflow<span class="token punctuation">(</span><span class="token string">"杭州"</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"最终旅行计划:"</span><span class="token punctuation">,</span> result<span class="token punctuation">)</span></code></pre>
<h5>示例2:实时介入与中断处理(高级功能)</h5>
<pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-python"><span class="token keyword">import</span> agentscope <span class="token keyword">as</span> ag
<span class="token keyword">from</span> agentscope<span class="token punctuation">.</span>interrupt <span class="token keyword">import</span> InterruptContext
ag<span class="token punctuation">.</span>init<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token comment"># 创建支持中断的智能体</span>
long_task_agent <span class="token operator">=</span> ReActAgent<span class="token punctuation">(</span>
name<span class="token operator">=</span><span class="token string">"LongTaskAgent"</span><span class="token punctuation">,</span>
sys_prompt<span class="token operator">=</span><span class="token string">"你是文档分析专家,负责长篇文档摘要与数据分析"</span><span class="token punctuation">,</span>
model<span class="token operator">=</span>DashScopeChatModel<span class="token punctuation">(</span>ag<span class="token punctuation">.</span>ModelConfig<span class="token punctuation">(</span>model<span class="token operator">=</span><span class="token string">"qwen-max"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
formatter<span class="token operator">=</span>DashScopeChatFormatter<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
enable_interrupt<span class="token operator">=</span><span class="token boolean">True</span><span class="token comment"># 启用中断功能</span>
<span class="token punctuation">)</span>
<span class="token comment"># 模拟长任务执行与实时介入</span>
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">run_with_interrupt</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
<span class="token keyword">with</span> InterruptContext<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">as</span> ctx<span class="token punctuation">:</span>
<span class="token comment"># 启动长任务(如分析10万字文档)</span>
task <span class="token operator">=</span> long_task_agent<span class="token punctuation">.</span>run_async<span class="token punctuation">(</span><span class="token string">"分析提供的长篇市场调研报告,生成详细分析报告"</span><span class="token punctuation">)</span>
<span class="token comment"># 模拟执行一段时间后触发中断</span>
<span class="token keyword">await</span> asyncio<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"触发中断,调整任务指令..."</span><span class="token punctuation">)</span>
ctx<span class="token punctuation">.</span>interrupt<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token comment"># 提供新指令,调整任务方向</span>
new_instruction <span class="token operator">=</span> <span class="token string">"无需生成详细报告,仅提取核心结论与数据亮点"</span>
result <span class="token operator">=</span> <span class="token keyword">await</span> ctx<span class="token punctuation">.</span>resume<span class="token punctuation">(</span>new_instruction<span class="token punctuation">)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"中断后执行结果:"</span><span class="token punctuation">,</span> result<span class="token punctuation">)</span>
<span class="token comment"># 执行带中断的任务</span>
asyncio<span class="token punctuation">.</span>run<span class="token punctuation">(</span>run_with_interrupt<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></code></pre>
<h4>4.3 分布式评估与监控配置</h4>
<pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-python"><span class="token keyword">import</span> ray
<span class="token keyword">from</span> agentscope<span class="token punctuation">.</span>evaluate <span class="token keyword">import</span> RayEvaluator<span class="token punctuation">,</span> ACEBenchmark<span class="token punctuation">,</span> FileEvaluatorStorage
<span class="token comment"># 初始化Ray集群</span>
ray<span class="token punctuation">.</span>init<span class="token punctuation">(</span>num_cpus<span class="token operator">=</span><span class="token number">8</span><span class="token punctuation">,</span> include_dashboard<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">,</span> dashboard_port<span class="token operator">=</span><span class="token number">8265</span><span class="token punctuation">)</span>
<span class="token comment"># 配置分布式评估器</span>
evaluator <span class="token operator">=</span> RayEvaluator<span class="token punctuation">(</span>
name<span class="token operator">=</span><span class="token string">"multi_agent_evaluation"</span><span class="token punctuation">,</span>
benchmark<span class="token operator">=</span>ACEBenchmark<span class="token punctuation">(</span>data_dir<span class="token operator">=</span><span class="token string">"./ace_benchmark_data"</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token comment"># 加载基准测试集</span>
n_repeat<span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">,</span><span class="token comment"># 每个任务重复5次</span>
storage<span class="token operator">=</span>FileEvaluatorStorage<span class="token punctuation">(</span>save_dir<span class="token operator">=</span><span class="token string">"./eval_results"</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token comment"># 结果存储目录</span>
n_workers<span class="token operator">=</span><span class="token number">8</span><span class="token punctuation">,</span><span class="token comment"># 8个并行worker</span>
metrics<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">"accuracy"</span><span class="token punctuation">,</span> <span class="token string">"execution_time"</span><span class="token punctuation">,</span> <span class="token string">"failure_rate"</span><span class="token punctuation">]</span><span class="token comment"># 评估指标</span>
<span class="token punctuation">)</span>
<span class="token comment"># 定义评估任务(基于之前的旅行规划智能体)</span>
<span class="token keyword">async</span> <span class="token keyword">def</span> <span class="token function">evaluate_solution</span><span class="token punctuation">(</span>task<span class="token punctuation">)</span><span class="token punctuation">:</span>
result <span class="token operator">=</span> <span class="token keyword">await</span> travel_planning_workflow<span class="token punctuation">(</span>task<span class="token punctuation">.</span><span class="token builtin">input</span><span class="token punctuation">[</span><span class="token string">"location"</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token keyword">return</span> ag<span class="token punctuation">.</span>evaluate<span class="token punctuation">.</span>SolutionOutput<span class="token punctuation">(</span>
success<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">,</span>
output<span class="token operator">=</span>result<span class="token punctuation">,</span>
trajectory<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token comment"># 可记录智能体交互轨迹用于深度分析</span>
<span class="token punctuation">)</span>
<span class="token comment"># 执行分布式评估</span>
evaluator<span class="token punctuation">.</span>run<span class="token punctuation">(</span>evaluate_solution<span class="token punctuation">)</span>
<span class="token comment"># 查看评估结果</span>
results <span class="token operator">=</span> evaluator<span class="token punctuation">.</span>get_aggregated_results<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"评估结果汇总:"</span><span class="token punctuation">,</span> results<span class="token punctuation">)</span></code></pre>
<h3>五、最佳实践与性能优化</h3><h4>5.1 架构设计最佳实践</h4><ul><li>采用"元规划器+专业Agent"架构:元规划器负责任务拆解与调度,专业Agent聚焦单一领域,提升协作效率与准确性;</li><li>工具分层管理:按功能模块分组工具,避免单Agent加载过多工具导致的决策冗余,通过元工具实现动态加载;</li><li>记忆策略优化:短期记忆保留最近3-5轮关键交互,长期记忆仅存储用户偏好、核心结论等结构化信息,减少内存占用。</li></ul><h4>5.2 性能优化策略</h4><ul><li>并行化任务调度:将独立子任务通过asyncio.gather并行执行,缩短端到端处理时间;</li><li>模型资源适配:复杂推理任务使用高性能模型(如qwen-max),简单查询使用轻量模型(如qwen-turbo),平衡性能与成本;</li><li>分布式部署优化:敏感数据处理Agent部署在本地,通用工具Agent部署在云端,通过MsgHub实现跨节点通信。</li></ul><h4>5.3 安全合规要点</h4><ul><li>启用沙箱严格模式:高敏感场景下限制智能体的文件写入、网络访问权限,仅开放必要接口;</li><li>全流程日志留痕:开启OpenTelemetry全链路追踪,记录所有模型调用、工具执行、人工介入操作,满足合规审计要求;</li><li>输入输出校验:通过Pydantic模型约束输入格式,内置敏感信息过滤工具,防止数据泄露。</li></ul></div>
---
<div style="background: rgba(255, 247, 237, 1); padding: 20px; border-left: 4px solid rgba(249, 115, 22, 1); margin-top: 30px">
<h3 style="color: rgba(194, 65, 12, 1); margin-top: 0; font-size: 16px"> 技能提升</h3>
<ul style="line-height: 2; font-size: 14px; padding-left: 20px">
<li><strong>从0开始学架构</strong><br>
<span style="color: rgba(136, 136, 136, 1); font-size: 13px"> 李运华 | 架构设计核心技术与实战案例</span></li>
</ul>
<hr style="border-top: 1px solid rgba(225, 228, 232, 1); border-right: none; border-bottom: none; border-left: none; margin: 15px 0">
<p style="font-size: 14px; color: rgba(51, 51, 51, 1); margin-bottom: 5px"> 开发环境</p>
<ul style="line-height: 2; font-size: 14px; padding-left: 20px">
<li>【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中</li>
</ul>
</div><br><br>
来源:https://www.cnblogs.com/tlnshuju/p/19332287
頁:
[1]