后处理工具输出

ToolUniverse 的智能输出处理

ToolUniverse Hooks 系统提供对工具输出的自动后处理功能。使用 Hooks 可对长结果进行摘要,将大量输出保存到文件中,并根据具体工具或工作流程自定义行为。

什么是钩子(Hooks)?

Hooks 是一种后处理函数,可在工具输出返回给您之前自动对其进行转换。它们的设计目的包括:

  • 总结长输出:使用人工智能将冗长的结果浓缩为关键洞察

  • 保存大型数据集:将大量输出作为带有元数据的文件存储

  • 自定义处理:根据工具类型或输出尺寸应用不同的逻辑

  • 提升性能:减少内存使用和处理时间

快速入门

通过一行代码启用钩子:

from tooluniverse import ToolUniverse

# Enable default SummarizationHook
tu = ToolUniverse(hooks_enabled=True)
tu.load_tools()

# Run tools - outputs are automatically processed
result = tu.run({
    "name": "OpenTargets_get_target_gene_ontology_by_ensemblID",
    "arguments": {"ensemblId": "ENSG00000012048"}
})

选择不同的钩子类型:

# Use FileSaveHook for large outputs
tu = ToolUniverse(hooks_enabled=True, hook_type='FileSaveHook')

# Use custom configuration
tu = ToolUniverse(hooks_enabled=True, hook_config=my_config)

Hook Types

SummarizationHook - 基于AI的摘要功能

自动使用先进的人工智能模型对冗长的工具输出进行总结,在缩短长度的同时保留关键结果。

FileSaveHook - 基于文件的处理

将大型输出保存到磁盘并附加元数据。返回文件信息而非原始输出。

自定义钩子 - 用户定义的处理

创建您自己的钩子以满足特殊处理需求。

何时使用钩子

使用 SummarizationHook 的场景: - 工具输出内容过长,难以高效阅读 - 需要从详细数据中快速获取洞察 - 处理文献搜索结果 - 处理大型科学数据集

Note: Some tools (like Tool_RAG, ToolFinderEmbedding) are automatically excluded from hook processing to prevent information missing. You can customize excluded tools using the exclude_tools configuration option.

使用 FileSaveHook 的场景: - 输出超出内存限制 - 需要将输出作为文件进行处理 - 归档结果以供后续分析 - 与外部工具集成

使用自定义钩子(Custom Hooks)的场景: - 您有特定的处理需求 - 标准钩子无法满足您的需求 - 您需要进行专门的数据转换

性能影响

钩子会增加处理开销,但能带来显著的优势:

  • SummarizationHook:处理时间增加2-5倍,输出减少50-80%

  • FileSaveHook:极低的开销,显著的内存节省

  • 自定义钩子:取决于实现

权衡通常是值得的,尤其是对于从处理过程中获益的大规模输出。

主题摘要

  • 摘要钩子:自动将冗长的工具输出浓缩为简洁且高效的信息摘要。适用于文献结果、大型数据集及多步骤工作流程。

  • 文件保存钩子:将大型输出及其元数据保存到磁盘,以便后续处理和共享。适用于大容量数据、审计追踪和外部管道。

  • 钩子配置:配置钩子的运行时机、触发条件及行为方式。支持阈值设置、按工具规则及高级选项。

  • 服务器与标准输入输出钩子集成:如何在服务器(HTTP/SSE)和标准输入输出模式中使用钩子。涵盖命令行参数、Python API、默认设置及最佳实践。

示例

完整的 Hook 示例:

一个全面展示所有钩子功能的示例可在以下位置查看:

# Run all hook examples
python examples/hooks_example.py

示例功能:

  • 基本用法:简单的SummarizationHook和FileSaveHook示例

  • 高级配置:自定义设置和工具专用挂钩

  • 性能测试:不同钩子配置之间的比较

  • 错误处理:优雅降级与错误恢复