Mark驱动比较文档¶
本文档比较了MarkI、MarkII和MarkIII三种驱动的功能和差异。
MarkI驱动¶
MarkI是基础驱动,提供以下功能:
- Dock管理:常用工具栏,通过
add_to_dock和remove_from_dock管理。 - 最近使用工具:使用FIFO队列记录最近使用的工具。
- 工具搜索:基于FAISS向量搜索(工具描述)。
- 工具召回:支持通过标签、查询、最近使用和工具名召回工具。
- 神经系统连接:与神经系统连接,提供当前可用工具。
MarkII驱动¶
MarkII在MarkI的基础上增加:
- 工具调用示例缓存:记录工具调用时的输入,用于提升召回精准度。
- 实现方式:
- 数据结构:每个工具维护一个历史调用示例队列(最大长度10)
- 索引:使用FAISS存储示例的向量索引
- 添加时机:在工具执行时捕获当前输入内容
- 召回:支持向量搜索和BM25文本检索
- 多模式召回:支持三种召回模式(可配置顺序和阈值):
- 示例向量召回(
example_embedding):基于历史调用示例的向量相似度。 - BM25文本召回(
example_bm25):基于历史调用示例的文本匹配。 - 描述向量召回(
desc_embedding):基于工具描述的向量相似度。 - 调用时捕获上下文:在工具调用时,将当前输入作为示例存储。
MarkIII驱动¶
MarkIII在MarkII的基础上增加:
- DSL集成:内置
DSLTool,允许使用DSL语法调用工具。 - 强制包含DSLTool:在dock、当前工具和召回结果中始终包含
DSLTool。 - 工具状态同步:增删工具时同步更新
DSLTool中的工具列表。
注意:MarkIII已被弃用,因为其与LLM配置存在非代码耦合,建议使用TFL(基于Lark的自定义DSL)替代。
差异对比表¶
| 特性 | MarkI | MarkII | MarkIII |
|---|---|---|---|
| 基类 | BaseDrive | MarkI | MarkII |
| Dock管理 | ✓ | ✓ | ✓(强制包含DSLTool) |
| 最近使用工具 | ✓ | ✓ | ✓ |
| 向量搜索(描述) | ✓ | ✓(增强) | ✓ |
| 工具调用示例缓存 | ✗ | ✓ | ✓ |
| 多模式召回 | ✗ | ✓ | ✓ |
| DSL集成 | ✗ | ✗ | ✓(已弃用) |
| 与神经系统连接 | ✓ | ✓ | ✓ |