进入操作模式
通过RocketMQ实现多智能体异步通信

通过RocketMQ实现多智能体异步通信

官网控制台部署
Terraform 模板 IaC 部署
官网控制台部署
Terraform 模板 IaC 部署

一键部署

30

https://www.aliyun.com/solution/tech-solution/rocketmq-for-multi-agent-communication

方案概览

通过云消息队列RocketMQ版实现多个智能体之间的异步通信,可以解决长耗时同步调用阻塞的问题,大幅度提升系统吞吐并发度和架构扩展性。

方案架构

方案提供的默认设置完成部署后在阿里云上搭建的系统如下图所示。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。

image

本文将带领您搭建一个多智能体(Multi-Agent)系统,能够根据用户的需求查询天气信息并制定行程规划。

为简化部署过程,我们将在1台云服务器ECS上部署3个独立的Agent(SupervisorAgent,WeatherAgent和TravelAgent),并且通过RocketMQ消息服务实现Agent之间的异步通信。

本方案的技术架构包括以下基础设施和云服务:

基础设施和云服务

说明

专有网络VPC

为云服务器ECS等云资源构建云上私有网络。

云服务器ECS

用于部署 Multi-Agent 系统。

云消息队列RocketMQ版

提供消息队列服务,实现Agent之间的异步通信。

阿里云百炼大模型服务平台

提供模型服务。

部署准备

开始部署前,请按以下指引完成账号申请、账号充值等准备工作。

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值。本方案的云资源支持按量付费,且默认设置均采用按量付费引导操作。如果确定任何一个云资源采用按量付费方式部署,账户余额都必须大于等于100元。

资源开通

登录阿里云百炼大模型服务平台,阅读并同意协议后,将自动开通阿里云百炼,如果未弹出服务协议,则表示您已经开通。

  • 当您首次开通阿里云百炼时,平台会自动为您发放各模型的新人专属免费额度。详情请参见新人免费额度。

    说明

    仅华北2(北京)地域模型享有免费额度,其他地域无免费额度。

  • 如果开通服务时提示“您尚未进行实名认证”,请先进行个人实名认证。

通过Terrafrom模板快速部署

5

为什么使用 Terraform

Terraform 是一款业界领先的基础设施即代码(Infrastructure as Code, IaC)工具,专门用于云资源的自动化部署与管理。其核心优势包括:

  • 自动化部署:通过声明式代码自动创建和配置云资源,避免手动操作带来的错误风险,显著提升部署效率。

  • 环境一致性:确保开发、测试、生产环境配置完全一致,消除环境差异导致的安全隐患。

  • 版本化管理:支持 Git 等版本控制系统,实现基础设施变更的审计追踪和回滚能力。

  • 智能依赖管理:自动处理资源间的依赖关系,确保按正确顺序创建或销毁资源。

  • 多云适配能力:支持阿里云、AWS、Azure 等主流云平台,便于构建混合云安全架构。

方案资源

本方案的 Terraform 模板将自动创建并配置以下云资源:

  • 1个专有网络VPC:为云服务器ECS等云资源构建云上私有网络。

  • 1 个交换机:将云服务器ECS等资源连接在同一网络上,实现它们之间的通信,并提供基本的网络分段和隔离功能。

  • 1个安全组:用于限制专有网络VPC下云服务器ECS的网络流入和流出规则。

  • 1 台云服务器ECS:用于部署示例应用程序。

  • 1个云消息队列RocketMQ版实例:用于实现Agent之间的异步通信。

费用说明

本方案 Terraform 模板创建的云资源,将根据模板中配置的资源规格进行计费。预估费用:5 元 / 小时(实际费用可能因资源规格、配置或版本的不同而有所差异,请以云产品控制台显示的费用为准)。

说明

当资源不再使用时,请及时销毁,以避免产生不必要的费用。

操作步骤

  1. 访问部署页面。

    访问Terraform 部署页面,系统将自动加载本方案的模板。

  2. 配置部署地域。

    • 默认地域:西南1(成都)。

    • 修改方法:单击左侧目录 > main.tf,设置provider > region为公共云中的地域ID。例如:region = "cn-chengdu"。

      重要

      本方案当前仅支持在上述默认地域部署。

  3. 配置必填参数。

    单击左侧目录 > variable.tf,配置如下参数的default值:

    说明

    如需调整更多资源配置,请参考资源列表中的相应资源参数进行设置。

    参数

    说明

    ecs_instance_password

    设置 ECS root 用户密码。

  4. 执行部署。

    单击创建按钮开始部署。等待约 5 分钟左右,资源栈信息页面的状态变为创建成功,即表示资源部署完成。

  5. 单击输出页签,输出关键字为ecs_login_address对应的值,其为已创建的ECS实例的登录地址。

创建Topic和Group

当前已创建了1个云消息队列 RocketMQ 版实例,接下来您需要创建所需的Topic和Group。

  1. 登录云消息队列 RocketMQ 版管理控制台。

  2. 点击左侧导航栏实例列表。

  3. 在顶部菜单栏左上角,选择西南1(成都)地域。

  4. 在列表中点击已创建的RocketMQ实例,跳转到实例详情页。

  5. 创建Topic:

    1. 在左侧导航栏中单击Topic管理。

    2. 多次单击创建 Topic,共创建3个Topic,配置参数见下表,其余参数保持默认。

      名称

      消息类型

      描述

      WeatherAgentTask

      普通消息

      用于WeatherAgent接收任务消息

      TravelAgentTask

      普通消息

      用于TravelAgent接收任务消息

      WorkerAgentResponse

      轻量消息

      用于SupervisorAgent接收各个子Agent返回的任务结果

  6. 创建Group:

    1. 在左侧导航栏中单击Group管理。

    2. 多次单击创建 Group,共创建3个Group,配置参数见下表,其余参数保持默认。

      Group ID

      消费模式

      投递顺序性

      描述

      WeatherAgentTaskConsumerGroup

      CLUSTERING

      并发投递

      用于消费WeatherAgentTask的普通消息

      TravelAgentTaskConsumerGroup

      CLUSTERING

      并发投递

      用于消费TravelAgentTask的普通消息

      Group ID

      消费模式

      Topic

      投递顺序性

      描述

      WorkerAgentResponseConsumerGroup

      LITE_SELECTIVE

      WorkerAgentResponse

      顺序投递

      用于消费WorkerAgentResponse的轻量消息

  7. 获取RocketMQ服务的访问用户名和密码:

    1. 在左侧导航栏中单击访问控制。

    2. 选择智能身份识别,打开内网免身份识别,记录用户名和密码以便在下一步中使用。image

创建智能体应用

10

获取百炼API Key

  1. 前往阿里云百炼的API Key页面。

  2. 在 API-Key 页签下,创建或查看 API Key。

    重要
    1. 子账号需要通过主账号完成授权后再去创建 API Key。

    2. 请不要将 API Key 以任何方式公开,避免因未经授权的使用造成安全风险或资金损失。

  3. 单击 API Key 列中的image,复制 API Key。

创建天气助手Agent

  1. 在阿里云百炼的应用管理页面,单击创建应用按钮。

    image

  2. 在弹窗中选择智能体应用,应用名称填写天气助手,单击立即创建。

    image

  3. 在应用中选择千问 3(通义千问-Plus-Latest) 模型,最大回复Token数设定为 8192,关闭enable_thinking。

  4. 在提示词中输入以下内容。

    # 角色
    你是一位专业的天气查询助手,能够根据用户提供的城市和时间信息,提供简洁明了的天气预报。你的任务是帮助用户获取准确的天气信息,以便他们做好相应的准备。
    
    ## 技能
    ### 技能 1: 获取用户需求
    - 询问用户所需查询的城市和具体时间。
    - 确认用户的需求并确保信息准确无误。
    
    ### 技能 2: 查询天气信息
    - 使用天气查询工具(如API)获取实时天气数据。
    - 回复简单的天气预报信息即可,不用过于复杂,包括温度、湿度、风速、降水概率等。
    
    ### 技能 3: 解读天气信息
    - 将获取到的天气数据以易于理解的方式呈现给用户。
    - 根据天气情况,给出相应的建议,例如穿衣建议或出行提示。
    
    ## 约束
    - 只提供与天气相关的信息和服务。
    - 所有天气信息必须通过调用天气查询工具来获取,不得凭空猜测。
    - 提供的信息应准确且及时,确保用户能够做出合理的决策。
    - 保持简洁明了的沟通方式,避免使用过于专业或复杂的术语。
  5. 在左侧导航栏中选择技能,然后单击MCP右侧的+按钮,为模型添加MCP服务。在MCP广场中查找并选择最美天气。如果是首次使用MCP服务,点击立即开通并根据页面提示开通服务。

  6. 单击发布按钮。

  7. 返回应用列表,将应用ID保存到本地用于后续配置。

创建行程助手Agent

  1. 在阿里云百炼的应用管理页面,单击创建应用按钮。

    image

  2. 在弹窗中选择智能体应用,应用名称填写行程助手,单击立即创建。

    image

  3. 在应用中选择千问 3(通义千问-Plus-Latest) 模型,最大回复Token数设定为 8192,关闭enable_thinking。

  4. 在提示词中输入以下内容。

    ## 角色
    你是一个智能出行助手,你会给老板推荐最全面的出行建议,为老板的出行保驾护航!
    ## 技能
    ### 技能1 : 查询车票
    1,你可以根据老板要去的目的地来帮助老板查询高铁/动车,普通列车。
    2,当老板未提供出发点你需要询问出发点。并帮助老板查询相关车票
    3,输出形式,以为表格的形式列举出所有相关要查询的车票信息。
    4,你会根据列举出的车票信息,来推荐最佳的车票。
    
    ### 技能2:航班查询
    1,你可以帮助老板查询目的地相关航班信息
    2,你可以将航班信息以表格的形式列举出来,要求信息详细
    3,你会根据列举出的航班信息,推荐最佳的航班。
    
    ### 技能3 :充电站查询
    1,你能根据老板输入的地点来实时查询所在地的充电站信息
    2,你会推荐最近且有可用充电桩的充电站。
    
    ### 技能4:驾车路径规划
    1,你会根据输入的目的地来推荐最佳的驾车路径规划
    
    ### 技能5:周边查询
    1,当老板出差时,你可以根据目的地来推荐附近的商务酒店
    2,以及附近的商务酒店哪里有停车场。
    3,酒店,停车场如果有图片的话,请展示相关图像。
    
    ## 执行步骤
    1,当老板没有明确选择出行方式时,你需要询问需要哪种出行方式
    2,当老板选择了出行方式,你需要查询相关信息,然后根据要去的目的地,查询当地的天气,以及未来三天的天气情况
    
    ## 约束
    1,当老板查询相关车票的时候,你需要将高铁/动车,航班信息以表格的形式列举出来。
    2,信息查询结果要求语言简练,文本信息不要有冗余。只输出相关信息即可,不要有无关信息的输出。
    3,当老板想要查询充电站信息,你只给出相关信息即可。
    4,当老板需要出行时,你必须询问老板要使用哪种出行方式,例如:高铁/动车,航班,驾车等然后再规划出行。
    5,你需要根据目的地查询当日的天气情况,以及未来三天的天气晴朗并且提醒老板关于天气出行的一些建议或注意事项
    6,你需要完全理解老板的意思,在任务中不要有缺漏和疏忽。
  5. 在左侧导航栏中选择技能,然后单击MCP右侧的+按钮,为模型添加MCP服务。在MCP广场中查找并选择下列MCP服务。如果是首次使用MCP服务,点击立即开通并根据页面提示开通服务。

    • 12306车票查询

    • 飞常准-Aviation

    • 新电途-ChargeStation

    • Amap Maps

  6. 单击发布按钮。

  7. 返回应用列表,将应用ID保存到本地用于后续配置。

应用部署

10

开通了云资源后,接下来您需要执行以下操作部署示例应用程序:

  1. 远程连接云服务器ECS。

    1. 登录ECS管理控制台,在实例页面,找到前面步骤所创建的 ECS 实例。

      重要

      必须在上述指定地域才能查看已创建的实例。

    2. 在右侧操作列,单击远程连接,并选择通过Workbench远程连接。根据页面提示登录,进入终端页面。具体操作请参见:使用Workbench登录ECS实例。

      说明

      如果系统弹出“安全组白名单开通提示”面板, 请按照页面引导完成端口一键添加。

  2. 部署示例应用程序:

    1. 替换以下脚本中的配置项值并执行脚本。

      cat << EOF >> ~/.bash_profile
      export BAILIAN_API_KEY=sk-***
      export WEATHER_APP_ID=***
      export TRAVEL_APP_ID=***
      export ROCKETMQ_INSTANCE_ID=rmq-***-***
      export ROCKETMQ_ENDPOINT=rmq-***-vpc.***.rmq.aliyuncs.com:8080
      export ROCKETMQ_USERNAME=***
      export ROCKETMQ_PASSWORD=***
      EOF
      
      source ~/.bash_profile

      配置项名称

      说明

      BAILIAN_API_KEY

      在阿里云百炼的密钥管理页面,在 API-Key 页签下,创建或查看 API Key。单击 API Key 列中的image,复制 API Key。

      WEATHER_APP_ID

      在阿里云百炼的应用管理页面,找到天气助手应用,单击应用ID旁的image,复制应用ID。

      TRAVEL_APP_ID

      在阿里云百炼的应用管理页面,找到行程助手应用,单击应用ID旁的image,复制应用ID。

      ROCKETMQ_INSTANCE_ID

      在云消息队列 RocketMQ 版管理控制台目标实例下的实例详情 > 基本信息页签获取实例 ID。

      ROCKETMQ_ENDPOINT

      在云消息队列 RocketMQ 版管理控制台目标实例下的实例详情 > 基本信息页签,在TCP 协议接入点区域,获取VPC专有网络的接入点和网络信息。

      ROCKETMQ_USERNAME

      在云消息队列 RocketMQ 版管理控制台目标实例下的访问控制 > 智能身份识别页签获取用户名和密码。

      ROCKETMQ_PASSWORD

    2. 安装并启动应用。

      curl -fsSLO https://help-static-aliyun-doc.aliyuncs.com/install-script/multi-agents-rmq/install.sh
      chmod +x install.sh
      ./install.sh

      等待应用启动完毕,大约需要3~5分钟,直到终端显示 You >提示符,您可以直接在终端中输入信息与智能体交互。

      image

验证及清理

5

方案验证

3

验证应用功能 - 控制台
  1. 在 You >提示符后,输入help可查看帮助信息。

  2. 在 You >提示符后,输入帮我做一个下周三到下周日杭州周边自驾游方案并回车。

  3. 等待智能体执行任务,最终会返回结合天气信息的行程规划内容,过程如下:

    1. SupervisorAgent接收用户输入,向消息队列发送一条消息杭州下周三到周日的天气情况怎么样?。

    2. WeatherAgent监听到上述消息,执行天气查询,并将结果发往消息队列。

    3. SupervisorAgent监听到上述消息,获取了天气查询结果,然后向消息队列发送一条消息杭州下周三至周日天气已知,天气为***,请基于此制定一份从杭州出发的周边2人3天4晚自驾游行程规划(下周三出发,周日返回),包含住宿、餐饮与景点推荐。

    4. TravelAgent监听到上述消息,执行行程规划,并将结果发往消息队列。

    5. SupervisorAgent监听到上述消息,获取了行程规划结果并返回给用户。

  4. 在 You >提示符后,输入quit可退出应用,如需再次启动应用,仅需重新执行上述安装脚本即可。

查看消息轨迹
  1. 登录云消息队列 RocketMQ 版管理控制台。

  2. 单击左侧导航栏实例列表。

  3. 在顶部菜单栏左上角,选择西南1(成都)地域。

  4. 单击目标实例进入其详情页,单击左侧导航栏消息轨迹,可以按Topic或按LiteTopic查询到相关的消息轨迹。

资源释放

2

清理一键部署创建的资源

  1. 登录ROS控制台。

  2. 在左侧导航栏,选择资源栈。

  3. 在资源栈页面的顶部选择部署的资源栈所在地域,找到资源栈,然后在其右侧操作列,单击删除。

  4. 在删除资源栈对话框,选择删除方式为释放资源,然后单击确定,根据提示完成资源释放。

清理手动创建的资源

在本方案中,您创建多个云资源实例。测试完方案后,您可以参考以下规则处理对应产品的实例,避免继续产生费用:

删除百炼应用:

在应用管理页面,找到前面步骤中创建的应用,然后单击右下角image,在下拉列表中点击删除应用。