Removes the `ToolHistoryManager` and its associated functionalities, including history recording, querying, and prompt generation. This simplifies the architecture by decoupling tool execution history from the core logic. The tool caching mechanism is now directly integrated into the `ToolExecutor` by wrapping the `execute_tool_call` method. This ensures that caching is applied consistently for all tool executions that have it enabled, improving performance and reducing redundant calls. - Deletes `src/common/tool_history.py`. - Removes tool history related functions from `prompt_builder.py` and `tool_api.py`. - Adds a `wrap_tool_executor` function in `cache_manager.py` to apply caching logic directly to the `ToolExecutor`.
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
from typing import Any, Dict, List, Optional, Type
|
|
from src.plugin_system.base.base_tool import BaseTool
|
|
from src.plugin_system.base.component_types import ComponentType
|
|
|
|
from src.common.logger import get_logger
|
|
|
|
logger = get_logger("tool_api")
|
|
|
|
|
|
def get_tool_instance(tool_name: str) -> Optional[BaseTool]:
|
|
"""获取公开工具实例"""
|
|
from src.plugin_system.core import component_registry
|
|
|
|
# 获取插件配置
|
|
tool_info = component_registry.get_component_info(tool_name, ComponentType.TOOL)
|
|
if tool_info:
|
|
plugin_config = component_registry.get_plugin_config(tool_info.plugin_name)
|
|
else:
|
|
plugin_config = None
|
|
|
|
tool_class: Type[BaseTool] = component_registry.get_component_class(tool_name, ComponentType.TOOL) # type: ignore
|
|
return tool_class(plugin_config) if tool_class else None
|
|
|
|
|
|
def get_llm_available_tool_definitions():
|
|
"""获取LLM可用的工具定义列表
|
|
|
|
Returns:
|
|
List[Tuple[str, Dict[str, Any]]]: 工具定义列表,为[("tool_name", 定义)]
|
|
"""
|
|
from src.plugin_system.core import component_registry
|
|
|
|
llm_available_tools = component_registry.get_llm_available_tools()
|
|
return [(name, tool_class.get_tool_definition()) for name, tool_class in llm_available_tools.items()] |