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

0 评论 266 浏览 0 收藏 22 分钟

前言

在前面的文章中,我们介绍了**单Agent(LLM模式)**的创建和编排。然而,当业务逻辑变得复杂——需要同时处理用户管理、订单查询、物流追踪等多个子任务时,单Agent可能显得力不从心。多Agents模式正是为解决这类复杂场景而设计的。

多Agents模式将复杂任务拆解为多个独立子任务,每个子任务由一个Agent承担,各Agent配置独立的角色指令插件工作流。通过LLM作为任务规划中枢,实现动态调度协同执行

多Agents模式适用于逻辑复杂、业务多样性的场景,如智能客服平台(分流咨询/投诉/售后)、企业工作流自动化、多领域知识问答等。

一、鸿蒙智能体编排模式概览

1.1 六种编排模式

鸿蒙小艺开放平台提供了六种编排模式,适用于不同的业务场景:

编排模式 适用场景 复杂度 灵活性
单Agent(LLM模式) 简单对话、知识问答、内容生成
单Agent(自主规划模式) 目标明确、逻辑连贯的标准任务
工作流模式 多步骤协同、逻辑复杂的业务
多Agents模式 复杂业务、多子任务协同
A2A模式 三方智能体接入、企业级集成
OpenClaw模式 个性化助手、自动化服务

1.2 多Agents的核心优势

多Agents模式相比其他模式,具有以下核心优势:

  1. 任务分解:将复杂任务拆解为多个独立子任务,降低单个Agent的复杂度
  2. 专业分工:每个Agent专注特定领域,配置专属指令和能力
  3. 动态调度:LLM作为规划中枢,根据用户需求动态选择合适的Agent
  4. 易于扩展:新增业务只需添加新的子Agent,不影响现有系统
  5. 并行处理:多个Agent可以并行执行,提升处理效率

二、多Agents架构设计

2.1 架构模型

多Agents模式采用星型拓扑结构,以LLM为中央规划器:

                     ┌─────────────────┐
                     │   用户输入/查询   │
                     └────────┬────────┘
                              │
                     ┌────────▼────────┐
                     │  LLM 规划中枢    │
                     │ (任务分解与调度)  │
                     └────────┬────────┘
                              │
            ┌─────────────────┼─────────────────┐
            │                 │                 │
    ┌───────▼───────┐ ┌───────▼───────┐ ┌───────▼───────┐
    │  Agent A      │ │  Agent B      │ │  Agent C      │
    │ (订单查询)     │ │ (物流追踪)     │ │ (售后服务)     │
    │ 插件 + 知识库  │ │ 插件 + 工作流  │ │ 角色指令 + 插件│
    └───────┬───────┘ └───────┬───────┘ └───────┬───────┘
            │                 │                 │
            └─────────────────┼─────────────────┘
                              │
                     ┌────────▼────────┐
                     │   结果整合输出   │
                     └─────────────────┘

2.2 任务调度策略

LLM规划中枢采用以下调度策略:

  1. 串行调度:按顺序依次调用子Agent,前一个结果作为后一个的上下文
  2. 并行调度:同时调用多个不相关的子Agent,提升响应速度
  3. 条件路由:根据用户输入的条件判断,选择特定的Agent执行
  4. 动态规划: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 调试技巧

  1. 逐一测试子Agent:先单独测试每个子Agent的功能是否正常
  2. 检查路由逻辑:验证LLM规划中枢是否正确调用了子Agent
  3. 监控上下文传递:确保信息在Agent之间正确传递
  4. 性能测试:关注串行/并行调用的响应时间

6.2 优化策略

常见优化策略:

  1. 精简角色指令:每个Agent的角色指令要简洁明确,避免信息过载
  2. 合理设置模型参数:规划中枢用低Temperature,子Agent用适当Temperature
  3. 增加Agent超时机制:避免单个Agent阻塞整个流程
  4. 缓存高频查询结果:对常见问题进行缓存,提升响应速度

提示:多Agents模式建议先以2-3个子Agent起步,验证效果后再逐步扩展。

七、多Agent vs 其他模式对比

7.1 模式选择决策表

业务场景 推荐模式 原因
简单问答 单Agent(LLM模式) 配置简单,开箱即用
多步骤业务 工作流模式 流程固定,执行效率高
多领域复杂业务 多Agents模式 分工明确,易于扩展
三方服务集成 A2A模式 协议标准,对接灵活
个性化助手 OpenClaw模式 部署灵活,控制力强

7.2 多Agents适用场景

多Agents模式最适合以下场景:

  1. 智能客服系统:分流售前、售中、售后不同业务
  2. 企业内部助手:整合HR、IT、财务等部门服务
  3. 多领域知识问答:覆盖技术、产品、政策等多个领域
  4. 复杂业务处理:涉及多个系统、多个步骤的业务流程

八、多Agents 实战案例

8.1 案例背景

假设我们要构建一个电商智能客服,需要同时处理订单查询、物流追踪和售后服务。使用多Agents模式,可以为每个子任务配置专属 Agent。

多Agents架构如下图所示:

8.2 智能体配置入口

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

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

8.3 核心配置代码

以下是一个简化的规划中枢 Prompt 配置:

你是电商客服系统的规划中枢。请根据用户问题,选择以下子Agent处理:
1. 订单查询Agent:处理"我的订单"相关问题
2. 物流追踪Agent:处理"快递到哪里了"相关问题
3. 售后服务Agent:处理"我要退货/换货"相关问题

如果问题涉及多个方面,请依次调用对应Agent并整合结果。

8.4 接入建议

  1. 先以 2-3 个子Agent 验证流程闭环
  2. 为每个子Agent 编写清晰的角色描述
  3. 在规划中枢中明确调度规则和边界条件

参考:LangGraph Multi-Agent 工作流[1] 提供了类似的图调度思路。

总结

本文详细介绍了多Agents模式智能体的创建和编排:

  1. 模式概览:鸿蒙六种编排模式的差异对比
  2. 架构设计:LLM规划中枢 + 子Agent的星型拓扑结构
  3. 创建流程:从规划中枢配置到子Agent创建的完整步骤
  4. 协同工作流:串行、并行、条件路由三种协同模式
  5. 集成调试:与插件、工作流的集成以及调试优化策略

多Agents模式是处理复杂业务场景的利器,通过合理的任务分解和Agent编排,可以构建出强大而灵活的智能体应用。下一篇文章将介绍OpenClaw模式的智能体创建。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

  • 小艺开放平台 – 创建智能体[2]
  • 鸿蒙智能体编排模式说明 – 华为开发者联盟[3]
  • 模型选择与角色指令 – 华为开发者联盟[4]
  • 插件开发指南 – 华为开发者联盟[5]
  • 工作流开发指南 – 华为开发者联盟[6]
  • OpenAI Function Calling 文档[7]
  • LangChain Multi-Agent 架构[8]
  • LangGraph Multi-Agent 工作流[9]

引用链接

[1]LangGraph Multi-Agent 工作流: https://langchain-ai.github.io/langgraph/

[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协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!