一个基于多智能体协作的全能AI助手系统,通过多个专业智能体协同工作,完成复杂任务。
Super Agent 是一个基于多智能体协作的智能系统,采用了模块化设计,由一个主协调智能体 (Synergy AI) 和多个专业智能体组成。系统具有以下特点:
- 多智能体协作:通过多个专业智能体的协作,解决复杂问题
- 模块化设计:各智能体职责明确,便于扩展和维护
- 共享工作空间:所有智能体共享同一个工作空间,便于数据交换
- 流式响应:支持流式输出,提供更好的用户体验
- 持久化存储:支持将计划和工作空间持久化存储,便于任务的中断和恢复
主要负责与用户对话,理解用户需求,并协调其他专业智能体完成任务。
- 维护对话上下文和记忆
- 根据用户需求分配任务给专业智能体
- 整合各专业智能体的结果,生成最终响应
-
PlannerAgent (规划智能体)
- 负责任务规划和管理
- 根据用户目标创建任务计划
- 跟踪任务进度,更新任务状态
-
SearcherAgent (搜索智能体)
- 负责信息收集和搜索
- 执行网络搜索,获取相关信息
- 提取和总结搜索结果
-
ReporterAgent (报告智能体)
- 负责生成最终报告
- 整合收集的信息和分析结果
- 生成符合用户需求的报告
-
WorkSpaceManager (工作空间管理器)
- 管理共享工作空间
- 提供文件读写、创建、删除等功能
- 维护项目结构和进度文档
- 内存数据库:用于测试和临时存储
- 文件数据库:将计划和工作空间持久化到文件系统
super_agent/
├── __init__.py
├── prompts/ # 提示词模板
├── src/
│ ├── db.py # 数据库接口和实现
│ ├── llms.py # LLM客户端封装
│ ├── memory.py # 记忆模块
│ ├── planner.py # 规划智能体
│ ├── reporter.py # 报告智能体
│ ├── schema.py # 数据模型定义
│ ├── searcher.py # 搜索智能体
│ ├── synergy_ai.py # 主协调智能体
│ └── workspace.py # 工作空间管理
├── stream/ # 流式处理相关
│ ├── stream_adapter.py
│ ├── stream_chain.py
│ └── stream_obj.py
├── tests/ # 测试代码
└── utils/ # 工具函数
项目需要在本地创建一个 .env 文件,配置以下环境变量:
# OpenRouter API密钥列表(必需)
# 可以配置多个API密钥,用逗号分隔
OPENROUTER_API_KEY_LIST=key1,key2,key3
# Serper搜索API密钥(必需,用于SearcherAgent执行网络搜索)
SERPER_API_KEY=your_serper_api_key
# OpenAI API密钥(可选)
# 如果主要使用OpenRouter,可以设置为空字符串
OPENAI_API_KEY=
- OpenRouter API密钥:访问 OpenRouter 注册并创建API密钥
- Serper API密钥:访问 Serper 注册并创建API密钥
- OpenAI API密钥:访问 OpenAI 注册并创建API密钥(可选)
SynergyAI 可以调用以下工具来完成任务:
-
handoff_to_planner
- 将任务交给规划智能体处理
- 用于创建任务计划、更新任务状态等
-
handoff_to_searcher
- 将任务交给搜索智能体处理
- 用于网络搜索、信息收集等
-
handoff_to_reporter
- 将任务交给报告智能体处理
- 用于生成报告、总结信息等
-
handoff_to_workspace_manager
- 将任务交给工作空间管理器处理
- 用于文件操作、工作空间管理等
uv sync项目提供了一个终端交互脚本,可以直接在命令行中与 Synergy AI 对话:
python terminal_chat.py [session_id]- 可选参数
session_id:指定会话ID,用于恢复之前的对话
在交互过程中:
- 输入
exit或quit退出对话 - 输入
clear清空对话历史
from src.synergy_ai import SynergyAI
from src.schema import ChatMessage, ChatRequest, MessageType, ContentType
# 创建 SynergyAI 实例
synergy_ai = SynergyAI(session_id="your_session_id")
# 创建聊天消息
message = ChatMessage(
type=MessageType.USER,
msg_type=ContentType.TEXT,
content="请帮我调研人工智能的最新发展",
timestamp=int(datetime.now().timestamp() * 1000)
)
# 创建聊天请求
request = ChatRequest(
session_id="your_session_id",
messages=[message],
timezone="Asia/Shanghai"
)
# 使用流式接口
async for response in synergy_ai.stream_chat(request):
print(response)系统使用自定义的数据库接口进行数据存储,支持以下两种实现:
- FilePlanDatabase:将计划和工作空间保存为JSON文件
- MemoryPlanDatabase:将数据保存在内存中,适用于测试
默认使用 FilePlanDatabase,数据保存在 .super_agent_data 目录下。
- 添加更多专业智能体
- 支持更多数据存储方式
- 增强工具调用能力
- 提供Web界面