|
|
|
|
@ -1,241 +0,0 @@
|
|
|
|
|
# ToolOrchestra 架构分析
|
|
|
|
|
|
|
|
|
|
## 1. 系统架构图
|
|
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
|
graph TD
|
|
|
|
|
subgraph 用户层
|
|
|
|
|
A[用户任务请求]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
subgraph 核心层
|
|
|
|
|
B[Orchestrator<br>任务规划与工具协调]
|
|
|
|
|
C[LLMAgent<br>智能体决策]
|
|
|
|
|
D[Environment<br>环境管理]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
subgraph 工具层
|
|
|
|
|
E[Basic Tools<br>基础工具集]
|
|
|
|
|
F[Specialized LLMs<br>专业大模型]
|
|
|
|
|
G[Generalist LLMs<br>通用大模型]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
A --> B
|
|
|
|
|
B --> C
|
|
|
|
|
C --> D
|
|
|
|
|
D --> E
|
|
|
|
|
D --> F
|
|
|
|
|
D --> G
|
|
|
|
|
E --> D
|
|
|
|
|
F --> D
|
|
|
|
|
G --> D
|
|
|
|
|
D --> C
|
|
|
|
|
C --> B
|
|
|
|
|
B --> A
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 2. 核心模块关系图
|
|
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
|
graph LR
|
|
|
|
|
subgraph 核心组件
|
|
|
|
|
Orchestrator[Orchestrator<br>协调器]
|
|
|
|
|
Agent[LLMAgent<br>智能体]
|
|
|
|
|
Env[Environment<br>环境]
|
|
|
|
|
Tool[Tool<br>工具]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
subgraph 数据模型
|
|
|
|
|
Message[Message<br>消息模型]
|
|
|
|
|
Task[Task<br>任务模型]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Orchestrator -->|管理| Agent
|
|
|
|
|
Orchestrator -->|管理| Env
|
|
|
|
|
Orchestrator -->|管理| Message
|
|
|
|
|
Agent -->|生成| Message
|
|
|
|
|
Agent -->|调用| Tool
|
|
|
|
|
Env -->|执行| Tool
|
|
|
|
|
Env -->|返回| Message
|
|
|
|
|
Task -->|输入| Orchestrator
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 3. 工作流程图
|
|
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
|
sequenceDiagram
|
|
|
|
|
participant U as 用户
|
|
|
|
|
participant O as Orchestrator
|
|
|
|
|
participant A as LLMAgent
|
|
|
|
|
participant E as Environment
|
|
|
|
|
participant T as Tool
|
|
|
|
|
|
|
|
|
|
U->>O: 提交任务请求
|
|
|
|
|
O->>A: 初始化并发送任务
|
|
|
|
|
A->>A: 生成初始响应
|
|
|
|
|
A->>O: 返回响应
|
|
|
|
|
O->>U: 发送初始响应
|
|
|
|
|
|
|
|
|
|
loop 多轮交互
|
|
|
|
|
U->>O: 回复消息
|
|
|
|
|
O->>A: 转发用户消息
|
|
|
|
|
A->>A: 生成智能体响应
|
|
|
|
|
alt 直接回复用户
|
|
|
|
|
A->>O: 返回文本响应
|
|
|
|
|
O->>U: 发送智能体回复
|
|
|
|
|
else 调用工具
|
|
|
|
|
A->>O: 返回工具调用请求
|
|
|
|
|
O->>E: 转发工具调用
|
|
|
|
|
E->>T: 执行工具调用
|
|
|
|
|
T->>E: 返回工具执行结果
|
|
|
|
|
E->>O: 转发工具结果
|
|
|
|
|
O->>A: 发送工具结果
|
|
|
|
|
A->>A: 根据结果生成新响应
|
|
|
|
|
A->>O: 返回新响应
|
|
|
|
|
O->>U: 发送智能体回复
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
alt 任务完成
|
|
|
|
|
A->>O: 发送结束信号
|
|
|
|
|
O->>U: 发送最终结果
|
|
|
|
|
end
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 4. 工具调用流程图
|
|
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
|
sequenceDiagram
|
|
|
|
|
participant A as LLMAgent
|
|
|
|
|
participant O as Orchestrator
|
|
|
|
|
participant E as Environment
|
|
|
|
|
participant T as Tool
|
|
|
|
|
|
|
|
|
|
A->>A: 分析上下文,决定调用工具
|
|
|
|
|
A->>O: 生成工具调用消息
|
|
|
|
|
O->>E: 转发工具调用请求
|
|
|
|
|
E->>T: 根据工具名称查找并执行
|
|
|
|
|
T->>E: 返回执行结果
|
|
|
|
|
E->>O: 封装工具返回消息
|
|
|
|
|
O->>A: 转发工具结果
|
|
|
|
|
A->>A: 根据结果继续决策
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 5. 核心模块职责
|
|
|
|
|
|
|
|
|
|
### 5.1 Orchestrator(协调器)
|
|
|
|
|
- **主要职责**:协调Agent、User和Environment之间的交互
|
|
|
|
|
- **核心功能**:
|
|
|
|
|
- 初始化模拟环境
|
|
|
|
|
- 管理消息传递
|
|
|
|
|
- 控制交互流程
|
|
|
|
|
- 处理工具调用和结果返回
|
|
|
|
|
- 监控任务完成状态
|
|
|
|
|
|
|
|
|
|
### 5.2 LLMAgent(智能体)
|
|
|
|
|
- **主要职责**:根据上下文生成智能响应
|
|
|
|
|
- **核心功能**:
|
|
|
|
|
- 维护对话历史
|
|
|
|
|
- 调用LLM生成回复
|
|
|
|
|
- 支持工具调用
|
|
|
|
|
- 处理工具返回结果
|
|
|
|
|
|
|
|
|
|
### 5.3 Environment(环境)
|
|
|
|
|
- **主要职责**:管理工具执行和状态维护
|
|
|
|
|
- **核心功能**:
|
|
|
|
|
- 提供工具集
|
|
|
|
|
- 执行工具调用
|
|
|
|
|
- 维护环境状态
|
|
|
|
|
- 同步工具状态
|
|
|
|
|
|
|
|
|
|
### 5.4 Tool(工具)
|
|
|
|
|
- **主要职责**:封装可调用的功能
|
|
|
|
|
- **核心功能**:
|
|
|
|
|
- 从函数自动生成工具定义
|
|
|
|
|
- 支持参数验证
|
|
|
|
|
- 提供工具描述和示例
|
|
|
|
|
- 执行具体功能
|
|
|
|
|
|
|
|
|
|
## 6. 设计模式分析
|
|
|
|
|
|
|
|
|
|
### 6.1 代理模式
|
|
|
|
|
- **应用场景**:LLMAgent作为代理,代表用户与工具和环境交互
|
|
|
|
|
- **优势**:隔离用户与底层工具,提供统一接口
|
|
|
|
|
|
|
|
|
|
### 6.2 策略模式
|
|
|
|
|
- **应用场景**:不同类型的Agent(LLMAgent、LLMSoloAgent)实现不同的决策策略
|
|
|
|
|
- **优势**:方便扩展新的智能体类型
|
|
|
|
|
|
|
|
|
|
### 6.3 工厂模式
|
|
|
|
|
- **应用场景**:Tool类从函数自动生成工具实例
|
|
|
|
|
- **优势**:简化工具创建流程,提高代码复用性
|
|
|
|
|
|
|
|
|
|
### 6.4 观察者模式
|
|
|
|
|
- **应用场景**:Orchestrator监控Agent和Environment的状态变化
|
|
|
|
|
- **优势**:实现组件间的松耦合通信
|
|
|
|
|
|
|
|
|
|
## 7. 代码组织分析
|
|
|
|
|
|
|
|
|
|
### 7.1 目录结构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
src/
|
|
|
|
|
├── evaluation/ # 评估模块
|
|
|
|
|
│ ├── tau2-bench/ # τ²-Bench基准测试
|
|
|
|
|
│ ├── eval_frames.py # FRAMES基准评估
|
|
|
|
|
│ └── eval_hle.py # HLE基准评估
|
|
|
|
|
├── training/ # 训练模块
|
|
|
|
|
│ ├── docker/ # Docker配置
|
|
|
|
|
│ ├── examples/ # 训练示例
|
|
|
|
|
│ └── recipe/ # 训练配方
|
|
|
|
|
├── data/ # 数据模块
|
|
|
|
|
│ └── tau2/ # τ²数据集
|
|
|
|
|
└── data_synthesis/ # 数据合成模块
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 7.2 核心文件
|
|
|
|
|
|
|
|
|
|
| 文件名 | 主要职责 |
|
|
|
|
|
|--------|----------|
|
|
|
|
|
| `orchestrator.py` | 实现协调器逻辑 |
|
|
|
|
|
| `llm_agent.py` | 实现智能体决策 |
|
|
|
|
|
| `environment.py` | 实现环境管理 |
|
|
|
|
|
| `tool.py` | 实现工具定义和调用 |
|
|
|
|
|
| `message.py` | 定义消息数据模型 |
|
|
|
|
|
| `task.py` | 定义任务数据模型 |
|
|
|
|
|
|
|
|
|
|
## 8. 技术栈分析
|
|
|
|
|
|
|
|
|
|
| 技术/框架 | 用途 |
|
|
|
|
|
|-----------|------|
|
|
|
|
|
| Python | 主要开发语言 |
|
|
|
|
|
| Pydantic | 数据模型定义 |
|
|
|
|
|
| Loguru | 日志管理 |
|
|
|
|
|
| Hugging Face Transformers | 大模型集成 |
|
|
|
|
|
| vLLM | 大模型推理加速 |
|
|
|
|
|
| FlashAttention | 注意力机制加速 |
|
|
|
|
|
| Docker | 容器化部署 |
|
|
|
|
|
| Conda | 环境管理 |
|
|
|
|
|
|
|
|
|
|
## 9. 架构优势
|
|
|
|
|
|
|
|
|
|
1. **模块化设计**:核心组件职责清晰,便于扩展和维护
|
|
|
|
|
2. **灵活的工具集成**:支持多种类型工具的无缝集成
|
|
|
|
|
3. **高效的协调机制**:Orchestrator实现了高效的任务规划和工具协调
|
|
|
|
|
4. **可扩展的智能体**:支持不同类型的智能体实现
|
|
|
|
|
5. **良好的测试覆盖**:包含完整的单元测试和集成测试
|
|
|
|
|
6. **清晰的数据模型**:使用Pydantic定义清晰的数据结构
|
|
|
|
|
|
|
|
|
|
## 10. 潜在改进点
|
|
|
|
|
|
|
|
|
|
1. **性能优化**:对于大规模工具集,工具查找和调用可以进一步优化
|
|
|
|
|
2. **容错机制**:增强对工具调用失败的处理能力
|
|
|
|
|
3. **动态工具加载**:支持运行时动态加载新工具
|
|
|
|
|
4. **可视化监控**:添加实时监控和可视化界面
|
|
|
|
|
5. **多语言支持**:扩展对其他编程语言工具的支持
|
|
|
|
|
|
|
|
|
|
# 总结
|
|
|
|
|
|
|
|
|
|
ToolOrchestra采用了分层架构设计,核心组件包括Orchestrator、LLMAgent、Environment和Tool。这种设计实现了任务规划、智能决策和工具执行的有效分离,同时保持了组件间的灵活交互。系统支持多种类型的工具集成,包括基础工具、专业大模型和通用大模型,能够根据任务需求灵活选择合适的工具组合。
|
|
|
|
|
|
|
|
|
|
通过强化学习训练,ToolOrchestra能够优化任务执行的效果、效率和偏好,实现了小模型协调大模型的高效智能体系统。
|