框架调研 · 07
AgentUniverse:华为的企业级 Agent 平台
AgentUniverse(aU)是华为开源的多 Agent 协作框架,2024 年发布。定位是帮助企业快速构建专家级多 Agent 系统,强调可观测性和企业集成能力。
GitHub:alipay/agentUniverse(蚂蚁集团与华为合作开源)
核心设计:PEER 协作模式
AgentUniverse 提出了 PEER 多 Agent 协作模式:
| 角色 | 含义 | 职责 |
|---|---|---|
| Planning | 规划 Agent | 把复杂任务拆分成子任务 |
| Executing | 执行 Agent | 完成具体的子任务 |
| Expressing | 表达 Agent | 整合结果,生成最终输出 |
| Reviewing | 审查 Agent | 检查结果质量,决定是否需要重试 |
这是对”多 Agent 如何分工”的一种具体化方案。
安装
pip install agentUniverse
配置文件驱动
AgentUniverse 的核心是 YAML 配置文件。每个 Agent、工具、LLM 都用配置文件描述:
# agent/research_agent.yaml
name: 'research_agent'
description: '专门进行信息收集和研究的 Agent'
profile:
prompt_version: research_agent.cn
llm_model:
name: 'qwen_llm'
temperature: 0.1
max_tokens: 2000
plan:
planner:
name: 'react_planner'
action:
tool:
- 'web_search_tool'
- 'read_file_tool'
memory:
name: 'demo_memory'
# llm/qwen_llm.yaml
name: 'qwen_llm'
description: '通义千问 LLM'
model_name: 'qwen-max'
max_tokens: 2000
temperature: 0.5
代码示例
from agentuniverse.agent.agent_manager import AgentManager
from agentuniverse.base.agentuniverse import AgentUniverse
# 初始化框架(加载配置目录)
AgentUniverse().start(config_path='./config/config.toml')
# 获取 Agent
research_agent = AgentManager().get_instance_obj('research_agent')
# 运行
output = research_agent.run(
input="分析 LangGraph 和 AgentScope 的技术差异"
)
print(output.get_data('output'))
自定义 Agent
from agentuniverse.agent.agent import Agent
from agentuniverse.agent.input_object import InputObject
from agentuniverse.agent.output_object import OutputObject
class CustomResearchAgent(Agent):
"""自定义研究 Agent"""
def input_keys(self) -> list[str]:
return ['input']
def output_keys(self) -> list[str]:
return ['output', 'sources']
def parse_input(self, input_object: InputObject, agent_input: dict) -> dict:
agent_input['input'] = input_object.get_data('input')
return agent_input
def parse_result(self, agent_result: dict) -> OutputObject:
return OutputObject({
'output': agent_result.get('output', ''),
'sources': agent_result.get('sources', []),
})
工具定义
from agentuniverse.agent.action.tool.tool import Tool
from agentuniverse.agent.action.tool.tool_manager import ToolManager
class WeatherTool(Tool):
name: str = 'weather_tool'
description: str = '获取城市天气信息'
def execute(self, tool_input: str, **kwargs) -> str:
"""tool_input 是 LLM 传入的参数(字符串)"""
data = {
"北京": "晴天 25°C",
"上海": "多云 22°C",
}
# 从输入中提取城市名
for city in data:
if city in tool_input:
return f"{city}天气:{data[city]}"
return "未找到城市天气数据"
对应 YAML:
# tool/weather_tool.yaml
name: 'weather_tool'
description: '获取指定城市的天气信息'
tool_type: 'api'
input_keys:
- 'city'
PEER 多 Agent 协作示例
from agentuniverse.agent.agent_manager import AgentManager
# PEER 模式:四个 Agent 协作完成一个复杂任务
peer_agent = AgentManager().get_instance_obj('peer_agent')
result = peer_agent.run(
input="深度分析 2024 年中国 AI 大模型市场格局,给出投资建议"
)
# PEER Agent 内部:
# 1. Planning Agent 把任务拆分:市场规模、主要玩家、技术对比、政策环境
# 2. Executing Agent 分别执行每个子任务
# 3. Expressing Agent 整合所有结果生成报告
# 4. Reviewing Agent 检查报告质量,不满足则触发重新执行
可观测性
AgentUniverse 内置监控:
# 开启 tracing
from agentuniverse.base.tracing import Tracer
tracer = Tracer()
tracer.start_trace(agent_name='research_agent', input=user_input)
# ... 执行 Agent ...
tracer.end_trace(output=result)
# 查看执行链路
trace_info = tracer.get_trace()
for step in trace_info.steps:
print(f"{step.agent}: {step.duration_ms}ms")
知识组件(Knowledge)
from agentuniverse.agent.action.knowledge.knowledge import Knowledge
# 接入知识库
knowledge = Knowledge(
name='company_kb',
description='公司内部知识库',
)
# 在 Agent 配置中引用
# agent.yaml:
# knowledge:
# - 'company_kb'
优缺点
优点:
- PEER 模式是经过实践的多 Agent 协作方案
- 配置文件驱动,业务逻辑和代码解耦
- 内置可观测性,企业级 trace 支持
- 通义千问等国内模型集成好
- 企业知识库接入能力强
缺点:
- 配置文件学习成本高,灵活性相对低
- 文档以中文为主
- 社区规模小,开源时间不长
- 相比 LangGraph 在状态管理上不够灵活
适合什么场景
- 企业内部复杂分析任务(报告生成、市场研究)
- 需要 PEER 模式的多 Agent 协作
- 华为云 / 阿里云生态
- 对可观测性和审计要求高的企业项目