什么时候用
先判断任务是否合适
- 需要从多个科学数据库(文献、基因、蛋白质、化合物、临床数据等)中交叉查询信息时
- 在LLM驱动的科研agent中需要统一工具调用协议,不想为每个API单独编写调用代码时
- 工具太多超出LLM上下文窗口,需要一个中间层自动发现和选择合适工具时
- 想通过MCP协议把科学工具暴露给Claude Desktop等AI客户端使用时
先准备什么
材料越清楚,结果越有用
- •准备各科学数据库的API密钥(如NCBI、UniProt、OpenAI等),填入api_keys_catalog
- •确定研究问题所属领域,以便配置工具分类过滤和检索范围
- •安装Python环境并通过pip安装tooluniverse包及其依赖
- •如需LLM辅助工具发现,准备OpenAI/Azure OpenAI/Gemini等兼容API密钥
它会怎样推进
从材料到可以检查的结果
- 01
注册工具
工具启动时自动扫描预定义工具清单和用户自定义工具,构建统一注册表
- 02
描述研究问题
用自然语言描述你想完成的研究任务,如'查找与阿尔茨海默病相关的基因变异'
- 03
发现候选工具
LLM从注册表中检索最相关的工具,返回工具名、相关度评分和推荐理由
- 04
查看工具参数
查看候选工具的完整参数schema,确认需要提供哪些输入
- 05
执行工具调用
传入参数执行工具,结果经缓存检查后调用外部API,支持批量并行执行
- 06
核对返回结果
检查返回的结构化数据是否完整、参数是否正确映射
第一次这样开始
把仓库地址直接交给 AI
先让 AI 说明环境和风险,再完成最小安装验证。跑通以后,再把自己的真实材料放进去。
第一次直接复制
帮我安装这个库:https://github.com/mims-harvard/ToolUniverse 安装前先告诉我需要什么环境,安装后帮我跑通一个最小示例。
结果出来后
先看这些检查点
- 检查工具发现的候选列表是否与你的研究问题相关(核对relevance_score和reasoning)
- 检查工具返回的结构化数据是否完整,字段是否按schema正确强转类型
- 对于批量执行场景,检查是否有单独失败的任务(工具会隔离失败,不中断其他任务)
- 检查缓存是否命中了之前的相同查询(避免重复调用产生API费用)
常见误区
这些判断仍由你负责
- 认为所有注册的工具都实际可用(部分工具加载时已失败并记入_TOOL_ERRORS,需运行tu doctor核查)
- 把compact mode的5个元工具当作全部能力(它们只是发现入口,背后才有1000+真实工具)
- 忽略LLM工具发现的选择质量差异(LLM finder与embedding finder在不同领域上召回率不同)
- 不检查工具返回结果的真实性就直接采信(工具只是中间件,结果质量取决于上游数据库)
技术依据
查看能力拆解、验证范围与来源
技术依据
查看能力拆解、验证范围与来源
- 01
MCP服务桥接
把 ToolUniverse 全部工具(或 compact mode 的 5 个元工具)通过标准 MCP 协议暴露给任意 MCP 客户端(Claude Desktop、Cursor、其他 agent),并把外部 MCP server 的工具反向拉进 ToolUniverse 注册表,实现双向桥接。
- 02
compact-mode元工具发现与执行
把 1000+ 工具压缩成 5 个元工具(listtools、greptools、gettoolinfo、findtools、executetool),让 LLM 先用元工具发现真实工具,再查看参数,最后执行,从而节省约 99% 上下文窗口。
- 03
function-call解析与工具调用执行
把 LLM 产出的 function call(dict 或 llama/openai 格式字符串)解析成工具名和参数,校验 schema,实例化工具,执行并回填结果。支持单步和批量并行执行,单个失败不中断其他。
- 04
两级结果缓存
对工具调用结果做两级缓存(内存 LRU + SQLite 持久化),并用 singleflight 防止并发重复调用同一工具同一参数,加速重复查询并降低外部 API 成本。
| 能力 | 主要输入 | 主要输出 | 人工检查 |
|---|---|---|---|
MCP服务桥接源码已核对 |
|
|
|
compact-mode元工具发现与执行源码已核对 |
|
|
|
function-call解析与工具调用执行源码已核对 |
|
|
|
两级结果缓存源码已核对 |
|
|
|
工具注册与清单生成源码已核对 |
|
|
|
自然语言工具发现LLM检索源码已核对 |
|
|
|
处理机制
- 01
异常分类与HTTP重试健康诊断
tooluniverse 如何统一治理工具调用的错误分类、HTTP 重试退避、工具健康诊断与失效登记、长任务生命周期与可观测。这张卡补充 tooluniverse-机制-统一工具调用编排与发现 只覆盖编排骨架的缺口。
- 02
统一工具调用编排与发现
ToolUniverse 的多张能力卡共享一条对象链:异构工具定义先进入注册表,再通过 compact mode 压缩成元工具,LLM 经发现(list/grep/find)→ 查看(gettoolinfo)→ 执行(executetool)两阶段完成调用,结果经缓存回填。本机制卡说明这些对象如何跨能力传递,以及哪些状态会阻断或降级。
已核对范围
- 静态确认 SMCP 继承 FastMCP,支持 stdio/HTTP/SSE 多传输
- 静态确认 pyproject.toml 多个 entry point 暴露 MCP/HTTP/stdio server
- 静态确认 MCP auto-loader 可把外部 MCP server 工具拉进注册表
- 静态确认 data/compactmodetools.json 定义 5 个元工具
- 静态确认 list/grep/find/info/execute 两阶段发现执行模式
- 静态确认 runonefunction 解析 fcall → 实例化工具 → schema 校验 → 调 run → 回填结果
- 静态确认批量执行 executefunctioncalllist 含去重合并和 per-tool 并发限流
- 静态确认 lenient 类型强转 coerceargumentstoschema
仍待核对
- 未实测 MCP server 与 Claude Desktop/Cursor 的端到端对接
- 未验证 profile 加载和 middleware 行为
- 未实测 compact mode 在真实 LLM agent 中的上下文节省效果
- 未对比 compact mode 与全量工具暴露的调用质量
- 未真实执行任何工具调用
- 未验证 async 工具在 sync 上下文的 asyncio.run 行为
- 未实测缓存命中率
- 未验证 SQLite 持久化缓存的失效和清理策略
相关文章
具备相关能力的其他库
相关课程
把单项工具放进完整研究设计流程
课程一从研究问题、文献判断、理论假设和方法骨架继续推进,帮助你建立可以复用的研究设计档案。