鸿蒙智能体开发实战:8.多Agent创建智能体

📅 2026/7/9 13:34:54
鸿蒙智能体开发实战:8.多Agent创建智能体
前言在前面的文章中我们介绍了**单AgentLLM模式**的创建和编排。然而当业务逻辑变得复杂——需要同时处理用户管理、订单查询、物流追踪等多个子任务时单Agent可能显得力不从心。多Agents模式正是为解决这类复杂场景而设计的。多Agents模式将复杂任务拆解为多个独立子任务每个子任务由一个Agent承担各Agent配置独立的角色指令、插件与工作流。通过LLM作为任务规划中枢实现动态调度和协同执行。多Agents模式适用于逻辑复杂、业务多样性的场景如智能客服平台分流咨询/投诉/售后、企业工作流自动化、多领域知识问答等。一、鸿蒙智能体编排模式概览1.1 六种编排模式鸿蒙小艺开放平台提供了六种编排模式适用于不同的业务场景编排模式适用场景复杂度灵活性单AgentLLM模式简单对话、知识问答、内容生成低中单Agent自主规划模式目标明确、逻辑连贯的标准任务低高工作流模式多步骤协同、逻辑复杂的业务中中多Agents模式复杂业务、多子任务协同高高A2A模式三方智能体接入、企业级集成高高OpenClaw模式个性化助手、自动化服务中高1.2 多Agents的核心优势多Agents模式相比其他模式具有以下核心优势任务分解将复杂任务拆解为多个独立子任务降低单个Agent的复杂度专业分工每个Agent专注特定领域配置专属指令和能力动态调度LLM作为规划中枢根据用户需求动态选择合适的Agent易于扩展新增业务只需添加新的子Agent不影响现有系统并行处理多个Agent可以并行执行提升处理效率二、多Agents架构设计2.1 架构模型多Agents模式采用星型拓扑结构以LLM为中央规划器┌─────────────────┐ │ 用户输入/查询 │ └────────┬────────┘ │ ┌────────▼────────┐ │ LLM 规划中枢 │ │ (任务分解与调度) │ └────────┬────────┘ │ ┌─────────────────┼─────────────────┐ │ │ │ ┌───────▼───────┐ ┌───────▼───────┐ ┌───────▼───────┐ │ Agent A │ │ Agent B │ │ Agent C │ │ (订单查询) │ │ (物流追踪) │ │ (售后服务) │ │ 插件 知识库 │ │ 插件 工作流 │ │ 角色指令 插件│ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘ │ │ │ └─────────────────┼─────────────────┘ │ ┌────────▼────────┐ │ 结果整合输出 │ └─────────────────┘2.2 任务调度策略LLM规划中枢采用以下调度策略串行调度按顺序依次调用子Agent前一个结果作为后一个的上下文并行调度同时调用多个不相关的子Agent提升响应速度条件路由根据用户输入的条件判断选择特定的Agent执行动态规划LLM根据任务需求动态决定调用哪些Agent提示合理设计子Agent的描述信息是关键——LLM会根据Agent的描述判断何时调用该Agent。三、创建多Agents智能体3.1 创建步骤第一步新建智能体进入小艺开放平台点击新建智能体选择**“多Agents模式”**。配置项说明智能体名称例如智能客服助手智能体描述“一个支持订单查询、物流追踪和售后服务的智能客服”支持的设备默认勾选手机-HarmonyOS NEXT第二步配置规划中枢规划中枢的角色指令决定如何分解任务和调度子Agent你是一个智能客服的规划中枢。你需要根据用户的问题选择合适的子Agent进行处理。 可用的子Agent 1. 订单查询Agent - 负责查询用户的订单状态和详情 2. 物流追踪Agent - 负责追踪已发货订单的物流信息 3. 售后服务Agent - 负责处理退换货、退款等售后问题 调度规则 - 当用户查询我的订单时调用订单查询Agent - 当用户查询快递到哪里了时调用物流追踪Agent - 当用户说我要退货时调用售后服务Agent - 当用户的问题涉及多个方面时依次调用对应的Agent第三步创建子Agent在多Agents模式下每个子Agent都需要独立配置配置项订单查询Agent物流追踪Agent售后服务AgentAgent名称订单查询物流追踪售后服务模型选择根据业务需求选择根据业务需求选择根据业务需求选择角色指令订单查询专用指令物流查询专用指令售后处理指令插件订单API插件物流API插件售后API插件知识库订单相关FAQ物流相关FAQ售后政策文档3.2 子Agent的角色指令编写每个子Agent需要明确的角色定位和能力描述# 订单查询Agent 你是一个专业的订单查询助手。你的职责是 1. 接收用户提供的订单号或手机号 2. 调用订单查询插件获取订单状态 3. 用友好的方式向用户展示订单信息 可用工具 - get_order_by_id(orderId): 根据订单号查询订单 - get_orders_by_phone(phone): 根据手机号查询订单列表 注意如果用户没有提供订单号或手机号请先询问用户。# 物流追踪Agent 你是一个物流查询助手。你的职责是 1. 获取用户的订单号和物流公司 2. 调用物流插件查询物流轨迹 3. 展示最新的物流状态和预计送达时间 可用工具 - track_logistics(orderId): 查询订单物流信息3.3 模型选择和参数配置在多Agents模式中规划中枢和子Agent可以独立选择模型# 模型选择配置示例planning_llm{model:gpt-4o,# 规划中枢建议使用强推理模型temperature:0.1,# 低温度确保调度稳定性top_p:0.9,context_window:10# 上下文轮数}sub_agent_llm{model:gpt-4o-mini,# 子Agent可使用轻量模型temperature:0.7,# 稍高温度增加回复多样性top_p:0.95,context_window:5}模型参数说明参数取值范围说明携带上下文轮数0-20能记住的历史对话轮次Top-K1-256候选词选择范围Top-P0-1概率累计阈值Temperature0-1输出随机性越高越创新四、多Agent协同工作流4.1 串行协同模式适用于流程化业务一个Agent的输出作为下一个Agent的输入# 串行协同示例订单处理流程asyncdefprocess_order_serial(user_input:str):# Agent 1: 意图识别intentawaitintent_agent.analyze(user_input)# Agent 2: 订单查询ifintentquery_order:order_infoawaitorder_agent.query(user_input)# Agent 3: 状态判断iforder_info[status]shipped:logisticsawaitlogistics_agent.track(order_info[order_id])returnformat_response(order_info,logistics)else:returnformat_response(order_info)# Agent 4: 售后服务elifintentafter_sale:resultawaitafter_sale_agent.handle(user_input)returnformat_response(result)4.2 并行协同模式适用于信息聚合场景多个Agent同时处理# 并行协同示例用户综合信息查询importasyncioasyncdefquery_user_comprehensive_info(user_id:str):# 并行查询多个维度的信息tasks[user_agent.get_profile(user_id),order_agent.get_recent_orders(user_id),coupon_agent.get_available_coupons(user_id),point_agent.get_user_points(user_id)]resultsawaitasyncio.gather(*tasks)return{profile:results[0],recent_orders:results[1],coupons:results[2],points:results[3]}4.3 条件路由模式适用于分支决策场景# 条件路由示例asyncdefroute_by_condition(user_input:str):# LLM分析用户意图analysisawaitplanning_llm.analyze_intent(user_input)# 条件路由ifanalysis[urgency]high:# 紧急问题交给VIP Agentreturnawaitvip_agent.handle(user_input)elifanalysis[category]technical:# 技术问题交给技术Agentreturnawaittech_agent.handle(user_input)elifanalysis[category]billing:# 账单问题交给财务Agentreturnawaitbilling_agent.handle(user_input)else:# 其他问题交给通用Agentreturnawaitgeneral_agent.handle(user_input)五、多Agent与插件、工作流集成5.1 插件集成每个子Agent可以绑定独立的插件集子Agent推荐插件作用订单查询Agent订单API插件、用户信息插件查订单、查用户物流追踪Agent物流查询插件查物流轨迹售后服务Agent售后API插件、退款插件处理售后推荐Agent商品推荐插件、营销插件商品推荐5.2 工作流集成对于复杂的业务流程子Agent可以绑定工作流售后处理工作流:开始节点:-输入:用户ID、订单ID、售后类型选择器节点:-条件:售后类型 退货执行:退货处理子流程-条件:售后类型 换货执行:换货处理子流程-默认:转人工客服结束节点:-输出:处理结果、预计处理时间六、多Agent调试与优化6.1 调试技巧逐一测试子Agent先单独测试每个子Agent的功能是否正常检查路由逻辑验证LLM规划中枢是否正确调用了子Agent监控上下文传递确保信息在Agent之间正确传递性能测试关注串行/并行调用的响应时间6.2 优化策略常见优化策略精简角色指令每个Agent的角色指令要简洁明确避免信息过载合理设置模型参数规划中枢用低Temperature子Agent用适当Temperature增加Agent超时机制避免单个Agent阻塞整个流程缓存高频查询结果对常见问题进行缓存提升响应速度提示多Agents模式建议先以2-3个子Agent起步验证效果后再逐步扩展。七、多Agent vs 其他模式对比7.1 模式选择决策表业务场景推荐模式原因简单问答单AgentLLM模式配置简单开箱即用多步骤业务工作流模式流程固定执行效率高多领域复杂业务多Agents模式分工明确易于扩展三方服务集成A2A模式协议标准对接灵活个性化助手OpenClaw模式部署灵活控制力强7.2 多Agents适用场景多Agents模式最适合以下场景智能客服系统分流售前、售中、售后不同业务企业内部助手整合HR、IT、财务等部门服务多领域知识问答覆盖技术、产品、政策等多个领域复杂业务处理涉及多个系统、多个步骤的业务流程八、多Agents 实战案例8.1 案例背景假设我们要构建一个电商智能客服需要同时处理订单查询、物流追踪和售后服务。使用多Agents模式可以为每个子任务配置专属 Agent。多Agents架构如下图所示8.2 智能体配置入口在小艺开放平台创建多Agents智能体时基础信息配置页面如下完成基础信息填写后选择多Agents模式并配置规划中枢和子Agent8.3 核心配置代码以下是一个简化的规划中枢 Prompt 配置你是电商客服系统的规划中枢。请根据用户问题选择以下子Agent处理 1. 订单查询Agent处理我的订单相关问题 2. 物流追踪Agent处理快递到哪里了相关问题 3. 售后服务Agent处理我要退货/换货相关问题 如果问题涉及多个方面请依次调用对应Agent并整合结果。8.4 接入建议先以 2-3 个子Agent 验证流程闭环为每个子Agent 编写清晰的角色描述在规划中枢中明确调度规则和边界条件参考LangGraph Multi-Agent 工作流 提供了类似的图调度思路。总结本文详细介绍了多Agents模式智能体的创建和编排模式概览鸿蒙六种编排模式的差异对比架构设计LLM规划中枢 子Agent的星型拓扑结构创建流程从规划中枢配置到子Agent创建的完整步骤协同工作流串行、并行、条件路由三种协同模式集成调试与插件、工作流的集成以及调试优化策略多Agents模式是处理复杂业务场景的利器通过合理的任务分解和Agent编排可以构建出强大而灵活的智能体应用。下一篇文章将介绍OpenClaw模式的智能体创建。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源小艺开放平台 - 创建智能体鸿蒙智能体编排模式说明 - 华为开发者联盟模型选择与角色指令 - 华为开发者联盟插件开发指南 - 华为开发者联盟工作流开发指南 - 华为开发者联盟OpenAI Function Calling 文档LangChain Multi-Agent 架构LangGraph Multi-Agent 工作流