鸿蒙智能体开发实战:8.多Agent创建智能体
前言
在前面的文章中,我们介绍了**单Agent(LLM模式)**的创建和编排。然而,当业务逻辑变得复杂——需要同时处理用户管理、订单查询、物流追踪等多个子任务时,单Agent可能显得力不从心。多Agents模式正是为解决这类复杂场景而设计的。
多Agents模式将复杂任务拆解为多个独立子任务,每个子任务由一个Agent承担,各Agent配置独立的角色指令、插件与工作流。通过LLM作为任务规划中枢,实现动态调度和协同执行。
多Agents模式适用于逻辑复杂、业务多样性的场景,如智能客服平台(分流咨询/投诉/售后)、企业工作流自动化、多领域知识问答等。
一、鸿蒙智能体编排模式概览
1.1 六种编排模式
鸿蒙小艺开放平台提供了六种编排模式,适用于不同的业务场景:
| 编排模式 | 适用场景 | 复杂度 | 灵活性 |
|---|---|---|---|
| 单Agent(LLM模式) | 简单对话、知识问答、内容生成 | 低 | 中 |
| 单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 | 售后服务Agent |
|---|---|---|---|
| Agent名称 | 订单查询 | 物流追踪 | 售后服务 |
| 模型选择 | 根据业务需求选择 | 根据业务需求选择 | 根据业务需求选择 |
| 角色指令 | 订单查询专用指令 | 物流查询专用指令 | 售后处理指令 |
| 插件 | 订单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-K | 1-256 | 候选词选择范围 |
| Top-P | 0-1 | 概率累计阈值 |
| Temperature | 0-1 | 输出随机性(越高越创新) |
四、多Agent协同工作流
4.1 串行协同模式
适用于流程化业务,一个Agent的输出作为下一个Agent的输入:
# 串行协同示例:订单处理流程
async def process_order_serial(user_input: str):
# Agent 1: 意图识别
intent = await intent_agent.analyze(user_input)
# Agent 2: 订单查询
if intent == "query_order":
order_info = await order_agent.query(user_input)
# Agent 3: 状态判断
if order_info["status"] == "shipped":
logistics = await logistics_agent.track(order_info["order_id"])
return format_response(order_info, logistics)
else:
return format_response(order_info)
# Agent 4: 售后服务
elif intent == "after_sale":
result = await after_sale_agent.handle(user_input)
return format_response(result)
4.2 并行协同模式
适用于信息聚合场景,多个Agent同时处理:
# 并行协同示例:用户综合信息查询
import asyncio
async def query_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)
]
results = await asyncio.gather(*tasks)
return {
"profile": results[0],
"recent_orders": results[1],
"coupons": results[2],
"points": results[3]
}
4.3 条件路由模式
适用于分支决策场景:
# 条件路由示例
async def route_by_condition(user_input: str):
# LLM分析用户意图
analysis = await planning_llm.analyze_intent(user_input)
# 条件路由
if analysis["urgency"] == "high":
# 紧急问题交给VIP Agent
return await vip_agent.handle(user_input)
elif analysis["category"] == "technical":
# 技术问题交给技术Agent
return await tech_agent.handle(user_input)
elif analysis["category"] == "billing":
# 账单问题交给财务Agent
return await billing_agent.handle(user_input)
else:
# 其他问题交给通用Agent
return await general_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 模式选择决策表
| 业务场景 | 推荐模式 | 原因 |
|---|---|---|
| 简单问答 | 单Agent(LLM模式) | 配置简单,开箱即用 |
| 多步骤业务 | 工作流模式 | 流程固定,执行效率高 |
| 多领域复杂业务 | 多Agents模式 | 分工明确,易于扩展 |
| 三方服务集成 | A2A模式 | 协议标准,对接灵活 |
| 个性化助手 | OpenClaw模式 | 部署灵活,控制力强 |
7.2 多Agents适用场景
多Agents模式最适合以下场景:
- 智能客服系统:分流售前、售中、售后不同业务
- 企业内部助手:整合HR、IT、财务等部门服务
- 多领域知识问答:覆盖技术、产品、政策等多个领域
- 复杂业务处理:涉及多个系统、多个步骤的业务流程
八、多Agents 实战案例
8.1 案例背景
假设我们要构建一个电商智能客服,需要同时处理订单查询、物流追踪和售后服务。使用多Agents模式,可以为每个子任务配置专属 Agent。
多Agents架构如下图所示:

8.2 智能体配置入口
在小艺开放平台创建多Agents智能体时,基础信息配置页面如下:

完成基础信息填写后,选择多Agents模式,并配置规划中枢和子Agent:

8.3 核心配置代码
以下是一个简化的规划中枢 Prompt 配置:
你是电商客服系统的规划中枢。请根据用户问题,选择以下子Agent处理:
1. 订单查询Agent:处理"我的订单"相关问题
2. 物流追踪Agent:处理"快递到哪里了"相关问题
3. 售后服务Agent:处理"我要退货/换货"相关问题
如果问题涉及多个方面,请依次调用对应Agent并整合结果。
8.4 接入建议
- 先以 2-3 个子Agent 验证流程闭环
- 为每个子Agent 编写清晰的角色描述
- 在规划中枢中明确调度规则和边界条件
参考:LangGraph Multi-Agent 工作流[1] 提供了类似的图调度思路。
总结
本文详细介绍了多Agents模式智能体的创建和编排:
- 模式概览:鸿蒙六种编排模式的差异对比
- 架构设计:LLM规划中枢 + 子Agent的星型拓扑结构
- 创建流程:从规划中枢配置到子Agent创建的完整步骤
- 协同工作流:串行、并行、条件路由三种协同模式
- 集成调试:与插件、工作流的集成以及调试优化策略
多Agents模式是处理复杂业务场景的利器,通过合理的任务分解和Agent编排,可以构建出强大而灵活的智能体应用。下一篇文章将介绍OpenClaw模式的智能体创建。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
- 小艺开放平台 – 创建智能体[2]
- 鸿蒙智能体编排模式说明 – 华为开发者联盟[3]
- 模型选择与角色指令 – 华为开发者联盟[4]
- 插件开发指南 – 华为开发者联盟[5]
- 工作流开发指南 – 华为开发者联盟[6]
- OpenAI Function Calling 文档[7]
- LangChain Multi-Agent 架构[8]
- LangGraph Multi-Agent 工作流[9]
引用链接
[2]小艺开放平台 – 创建智能体: https://developer.huawei.com/consumer/cn/hag/hagindex.html
[3]鸿蒙智能体编排模式说明 – 华为开发者联盟: https://developer.huawei.com/consumer/cn/doc/service/agent-mode-0000002585188774
[4]模型选择与角色指令 – 华为开发者联盟: https://developer.huawei.com/consumer/cn/doc/service/model-settings-0000002471264265
[5]插件开发指南 – 华为开发者联盟: https://developer.huawei.com/consumer/cn/doc/service/develop-plug-ins-0000002435989648
[6]工作流开发指南 – 华为开发者联盟: https://developer.huawei.com/consumer/cn/doc/service/workflow-development-0000002471264269
[7]OpenAI Function Calling 文档: https://platform.openai.com/docs/guides/function-calling
[8]LangChain Multi-Agent 架构: https://python.langchain.com/docs/modules/agents/
[9]LangGraph Multi-Agent 工作流: https://langchain-ai.github.io/langgraph/
本文由 @少湖说 授权发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务
- 目前还没评论,等你发挥!

起点课堂会员权益




