tooluniverse.tool_finder_llm 模块

基于大型语言模型的工具查找器 —— 一款利用大型语言模型根据描述查找相关工具的工具。

该工具利用 AgenticTool 的大型语言模型(LLM)功能,创建了一个智能工具查找器,仅在提示中包含必要的工具信息(名称和描述),以最大限度地降低上下文窗口成本,同时让 LLM 根据查询决定返回哪些工具。

关键优化: - 仅向大型语言模型发送工具名称和描述(不包含参数、配置等) - 使用紧凑格式以减少令牌数量 - 缓存工具描述以避免重复处理 - 从提示中排除无关工具

class tooluniverse.tool_finder_llm.ToolFinderLLM[源代码]

基类:BaseTool

基于大型语言模型的工具查找器,利用自然语言处理技术选择相关工具。

该类利用 AgenticTool 的大型语言模型(LLM)能力,分析工具描述并将其与用户查询进行匹配。通过仅向 LLM 发送必要的信息(工具名称和描述),实现了最小化上下文窗口成本的优化,提供了一种智能替代基于嵌入的相似度搜索的方法。

成本优化: - 仅在大型语言模型提示中包含工具名称和描述 - 使用紧凑格式以最小化令牌使用量 - 排除不必要的工具元数据和参数 - 实施缓存以避免重复处理工具

__init__(tool_config, tooluniverse=None)[源代码]

初始化基于大型语言模型的工具查找器。

参数:
  • tool_config (dict) – 包含LLM设置和提示的配置字典

  • tooluniverse – 引用包含所有工具的 ToolUniverse 实例

find_tools_llm(query, limit=5, include_reasoning=False, categories=None)[源代码]

使用基于LLM的选择功能查找相关工具。

参数:
  • query (str) – 用户查询描述所需功能

  • limit (int) – 返回的工具最大数量

  • include_reasoning (bool) – 是否包含选择理由

  • categories (list, optional) – 工具类别筛选列表

退货

dict: Dictionary containing selected tools and metadata

find_tools(message=None, picked_tool_names=None, rag_num=5, return_call_result=False, categories=None, return_list_only=None)[源代码]

根据消息或预先选择的工具名称查找相关工具。

此方法与原始的 ToolFinderEmbedding 接口保持一致,以确保无缝替换。它使用基于 LLM 的选择方式,而非嵌入相似性。

参数:
  • message (str, optional) – 查询消息以查找工具。如果 picked_tool_names 为 None,则此项为必填。

  • picked_tool_names (list, optional) – 预先选择的工具名称以进行处理。如果消息为 None,则此项为必填。

  • rag_num (int, optional) – 过滤后返回的工具数量。默认为 5。

  • return_call_result (bool, optional) – 如果为 True,则返回提示和工具名称。默认为 False。

  • categories (list, optional) – 工具类别筛选列表。在选择LLM之前应用。

  • return_list_only (bool, optional) – 如果为 True,则仅返回工具规格列表。此设置会覆盖其他返回选项。

退货
str, tuple, or list:
  • 如果 return_list_only 为 True:工具规格列表

  • 如果 return_call_result 为 False:工具将以格式化字符串的形式提示

  • 如果 return_call_result 为 True:返回一个元组 (tool_prompts, tool_names)

抛出:

AssertionError – 如果 message 和 picked_tool_names 均为 None

get_tool_stats()[源代码]

获取有关可用工具的统计信息。

clear_cache()[源代码]

清除工具缓存,以便在下次访问时强制刷新。

run(arguments)[源代码]

按照标准工具接口,使用给定参数运行工具查找器。

此方法现默认返回 JSON 格式,以确保与其他搜索工具的一致性并简化与 SMCP 的集成。

参数:

arguments (dict) – 包含字典: - description(字符串,可选):用于查找工具的查询消息(对应 ‘message’) - limit(整数,可选):返回的工具数量(对应 ‘rag_num’),默认值为5 - picked_tool_names(列表,可选):预先选择的工具名称列表以供处理 - return_call_result(布尔值,可选):是否返回提示和名称,默认值为False - return_format(字符串,可选):’json’(默认)或用于旧格式的 ‘legacy’ - return_list_only(布尔值,可选):是否仅以列表形式返回工具规格 - categories(列表,可选):用于筛选的工具类别列表

find_tools_legacy(query, limit=5, include_reasoning=False, return_format='prompts')[源代码]

用于查找具有不同参数名称的工具的传统方法。

这为可能使用“query”而非“description”的任何代码提供了向后兼容性。