Multi-Agent System 开源框架:AgentScope
面对复杂任务时,单智能体能力有限、难以协同的行业痛点,Multi-Agent系统通过分布式处理、协同工作与自适应性,高效拆解难题。阿里开源的AgentScope平台提供可视化观测与稳定框架,让多智能体开发更简单、更可靠。
Part1
Multi Agent
Multi-Agent系统,简称MAS,是由多个智能体组成的集合。这些Agent可以是不同的软件程序、机器人、传感器等,它们各自具备一定的智能和自主性,并处理各自擅长的领域和事情。MAS的核心思想是通过多个Agent的协作与协调,共同完成一个复杂任务,从而实现单个Agent无法完成的复杂目标。
相比单Agent系统,Multi-Agent系统具备以下优势:
分布式处理:MAS支持分布式应用,可以将大型复杂系统分解为多个小型、易于管理的子系统。这使得MAS具有良好的模块性、易于扩展性和设计灵活性,降低了系统的总成本和维护难度。
协同工作:MAS中的Agent可以相互通信、协商和协作,共同完成一个任务。通过这种协同工作方式,MAS能够处理单个Agent无法解决的问题,从而提高系统的整体性能和鲁棒性。
自适应性:MAS中的Agent可以根据环境变化自主调整行为和策略,这种自适应性使得MAS具有优秀的稳定性和灵活性,能够应对各种复杂场景。
Multi-Agent System 主要的应用场景包括:
软件编写:在软件项目中,由多个Agents分别扮演项目经理、产品经理、UI设计师、开发人员、测试人员等等,从而将一个复杂的软件项目拆解成多个子任务,更高效地完成软件的编写。
智能营销:在消费者营销场景中,可以构建多个Agents,比如营销计划Agent、内容生产Agent、人群管理Agent、营销触达Agent和效果分析Agent。
智慧供应链:在供应链场景中,通过Multi-Agent提升上下游协同效率,包括销售计划Agent、采购计划Agent、仓储计划Agent、采购订单Agent等等,从销量预测、安全库存、供应链响应等环节,构筑供应链的多道防线。
智能客服:在智能客服领域,针对不同的产品和服务领域,构建不同的专属Agent,比如处理产品售后投诉的Agent、解答用户产品疑问的Agent、处理营销活动咨询的Agent、追踪物流进度的Agent等。同时在最上层构建一个Top Agent,用Top Agent统一对客,再根据消费者的问题自动路由到最匹配的专属Agent。
智能电网:在智能电网领域,MAS可以实现多个传感器、控制器和执行器之间的协同工作,实现对电网的实时监控、预测和优化调度,提高电网的稳定性和可靠性。
Part2
Multi Agent开发框架
2.1 AgentSope 介绍
AgentScope是阿里于24年年初开源的多Agent开发平台,其研究论文详细介绍了平台的架构、关键技术、容错机制、多模态应用支持,以及基于 actor 的分布式框架等。
架构图:
AgentScope的架构,包括三个层次:实用层、管理器和包装器层、Agent层。这些层次为多Agent应用提供不同层次的支持,包括单个Agent的基本和高级功能(实用层)、资源和运行时管理(管理和包装层)以及Agent级到工作流级编程接口(Agent层)。
实用层(Utility Layer):实用层提供了Agent的核心功能,该层抽象了底层操作的复杂性,如API调用、数据检索和代码执行,使Agent能够专注于它们的主要任务。实用层同时提供了内置的自动重试机制,用于应对意外中断。
管理和包装层(Manager and Wrapper Layer):管理器和包装器层管理资源和API服务,确保资源的高可用性,并提供抵御LLMs不良响应的能力。
Agent层(Agent Layer):Agent层是AgentScope的核心,负责多Agent工作流的交互和通信,通过简化语法和工具,减轻了开发者的编程负担。
用户交互(User Interaction):除了分层架构之外,AgentScope还提供了面向多Agent的接口,如终端和Web UI。这些接口允许开发人员轻松监控应用程序的状态和指标,包括Agent通信、执行时间和财务成本。
2025年8月底、9月初,正式发布了 AgentScope 1.0 版本,同时也发布了可视化的观测平台Agent Scope Studio。
架构图(新):
2.2 AgentScope核心概念
▶ 状态
状态(State)管理是 AgentScope 框架构建的基础。其中,状态表示对象运行时某一时刻数据的快照。
AgentScope 将对象的“初始化”与“状态管理”分离,对象在初始化后通过 load_state_dict 和 state_dict 方法恢复到不同的状态,或导出当前的状态。
在 AgentScope 中,智能体(Agent)、记忆(memory)、长期记忆(Long-term memory)和工具模块(toolkit)都是有状态的对象。 AgentScope 通过支持嵌套式的状态管理,将这些对象的状态管理联系起来。
▶ 消息
消息(message)是 AgentScope 最核心的数据结构,用于
在智能体之间交换信息,
在用户交互界面显示信息,
在记忆中存储信息,
作为 AgentScope 与不同 LLM API 之间的统一媒介。
▶ 工具
AgentScope 中的“工具”指的是可调用的 Python 对象,包括
函数,
偏函数(Partial function),
实例方法,
类方法,
静态方法,以及
带有 call 方法的可调用实例。
此外,可调用对象可以是
异步或同步调用的,
流式或非流式返回结果的。
因此,请放心在 AgentScope 中使用任何调用对象作为智能体的工具。
▶ 智能体
在 AgentScope 中,智能体(Agent)行为被抽象为 AgentBase 类中的三个核心函数:
reply:处理传入的消息并生成响应消息。
observe:接收来自环境或其它智能体的消息,但不返回响应。
print:将消息显示到目标输出(例如终端、Web 界面)。
为了支持用户实时介入(Realtime Steering),AgentScope 提供了额外 的 handle_interrupt 函数来处理智能体回复过程中的用户中断。
此外,ReAct 智能体是 AgentScope 中最重要的智能体,该智能体的回复消息的过程分为两个阶段:
推理(Reasoning):通过调用 LLM 进行推理并生成工具调用
行动(Acting):执行工具函数。
因此,在 ReActAgentBase 类中提供了两个额外的核心函数,_reasoning 和 _acting。
▶ 提示词格式化
提示词格式化器(Prompt Formatter)是 AgentScope 中保证 LLM 兼容性的核心组件,负责将消息对象转换为 LLM API 所需的格式。
此外,诸如提示工程、截断和消息验证等附加功能也可以在格式化器中实现。
在格式化器中,"多智能体"(或"多实体")概念与常见的多智能体编排概念不同。 它专注于给定消息中包含多个身份实体的场景,因此 LLM API 中常用的 role 字段(通常取值为 "user"、"assistant" 或 "system")无法区分它们。
因此,AgentScope 提供 MultiAgentFormatter 来处理这种场景,通常用于游戏、多人聊天和社交仿真。
备注
多智能体工作流 != 格式化器中的多智能体。例如,即使以下代码片段可能涉及多个 智能体(tool_agent 和 tool_function 的调用者),但是输入的 query 参数 被包装成了 role 为 “user” 消息,因此 role 字段仍然可以区分它们。
async def tool_function(query: str) -> str:
"""调用另一个智能体的工具函数"""
msg = Msg("user", query, role="user")
tool_agent = Agent(name="Programmer")
return await tool_agent(msg)
▶ 长期记忆
虽然 AgentScope 为短期记忆和长期记忆提供了不同的基类,但是 AgentScope 中并没有严格区分它们的作用。
作者
漆锐|AI交付工程师
原DBA转行AI的后端开发工程师
END
往期精选

