From 7f823ee72ee5e07fb9710549dc2184e708ade5e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E4=BF=8A=E7=94=B7?= Date: Mon, 29 Dec 2025 18:32:29 +0800 Subject: [PATCH] feat(tool system): The specific method for obtaining the tool and the parameters to be passed --- api/app/core/tools/__init__.py | 4 ++-- api/app/core/tools/base.py | 2 +- api/app/core/tools/builtin/__init__.py | 12 ++++++------ api/app/core/tools/builtin/baidu_search_tool.py | 2 +- api/app/core/tools/builtin/datetime_tool.py | 2 +- api/app/core/tools/builtin/json_tool.py | 2 +- api/app/core/tools/builtin/mineru_tool.py | 2 +- api/app/core/tools/builtin/textin_tool.py | 2 +- api/app/core/tools/custom/__init__.py | 6 +++--- api/app/core/tools/mcp/__init__.py | 6 +++--- api/app/core/tools/mcp/base.py | 1 - api/app/core/tools/mcp/service_manager.py | 2 +- 12 files changed, 21 insertions(+), 22 deletions(-) diff --git a/api/app/core/tools/__init__.py b/api/app/core/tools/__init__.py index 714dc851..9d9407ad 100644 --- a/api/app/core/tools/__init__.py +++ b/api/app/core/tools/__init__.py @@ -1,7 +1,7 @@ """工具管理核心模块""" -from .base import BaseTool, ToolResult, ToolParameter -from .langchain_adapter import LangchainAdapter +from app.core.tools.base import BaseTool, ToolResult, ToolParameter +from app.core.tools.langchain_adapter import LangchainAdapter # 可选导入,避免导入错误 try: diff --git a/api/app/core/tools/base.py b/api/app/core/tools/base.py index c9771ef0..ec15c50f 100644 --- a/api/app/core/tools/base.py +++ b/api/app/core/tools/base.py @@ -193,7 +193,7 @@ class BaseTool(ABC): def to_langchain_tool(self): """转换为Langchain工具格式""" - from .langchain_adapter import LangchainAdapter + from app.core.tools.langchain_adapter import LangchainAdapter return LangchainAdapter.convert_tool(self) def __repr__(self): diff --git a/api/app/core/tools/builtin/__init__.py b/api/app/core/tools/builtin/__init__.py index 3813402c..7d2ea0ef 100644 --- a/api/app/core/tools/builtin/__init__.py +++ b/api/app/core/tools/builtin/__init__.py @@ -1,11 +1,11 @@ """内置工具模块""" -from .base import BuiltinTool -from .datetime_tool import DateTimeTool -from .json_tool import JsonTool -from .baidu_search_tool import BaiduSearchTool -from .mineru_tool import MinerUTool -from .textin_tool import TextInTool +from app.core.tools.builtin.base import BuiltinTool +from app.core.tools.builtin.datetime_tool import DateTimeTool +from app.core.tools.builtin.json_tool import JsonTool +from app.core.tools.builtin.baidu_search_tool import BaiduSearchTool +from app.core.tools.builtin.mineru_tool import MinerUTool +from app.core.tools.builtin.textin_tool import TextInTool __all__ = [ "BuiltinTool", diff --git a/api/app/core/tools/builtin/baidu_search_tool.py b/api/app/core/tools/builtin/baidu_search_tool.py index fddd6eb7..e1f80f34 100644 --- a/api/app/core/tools/builtin/baidu_search_tool.py +++ b/api/app/core/tools/builtin/baidu_search_tool.py @@ -4,7 +4,7 @@ from typing import List, Dict, Any import aiohttp from app.core.tools.base import ToolParameter, ToolResult, ParameterType -from .base import BuiltinTool +from app.core.tools.builtin.base import BuiltinTool class BaiduSearchTool(BuiltinTool): diff --git a/api/app/core/tools/builtin/datetime_tool.py b/api/app/core/tools/builtin/datetime_tool.py index 647914b2..9cad3579 100644 --- a/api/app/core/tools/builtin/datetime_tool.py +++ b/api/app/core/tools/builtin/datetime_tool.py @@ -5,7 +5,7 @@ from typing import List import pytz from app.schemas.tool_schema import ToolParameter, ToolResult, ParameterType -from .base import BuiltinTool +from app.core.tools.builtin.base import BuiltinTool class DateTimeTool(BuiltinTool): diff --git a/api/app/core/tools/builtin/json_tool.py b/api/app/core/tools/builtin/json_tool.py index 62cd98d3..12f1e688 100644 --- a/api/app/core/tools/builtin/json_tool.py +++ b/api/app/core/tools/builtin/json_tool.py @@ -7,7 +7,7 @@ import xml.etree.ElementTree as ET from xml.dom import minidom from app.core.tools.base import ToolParameter, ToolResult, ParameterType -from .base import BuiltinTool +from app.core.tools.builtin.base import BuiltinTool class JsonTool(BuiltinTool): diff --git a/api/app/core/tools/builtin/mineru_tool.py b/api/app/core/tools/builtin/mineru_tool.py index b2a544c0..c480d6d8 100644 --- a/api/app/core/tools/builtin/mineru_tool.py +++ b/api/app/core/tools/builtin/mineru_tool.py @@ -4,7 +4,7 @@ from typing import List, Dict, Any import aiohttp from app.core.tools.base import ToolParameter, ToolResult, ParameterType -from .base import BuiltinTool +from app.core.tools.builtin.base import BuiltinTool class MinerUTool(BuiltinTool): diff --git a/api/app/core/tools/builtin/textin_tool.py b/api/app/core/tools/builtin/textin_tool.py index e5218416..4ec32659 100644 --- a/api/app/core/tools/builtin/textin_tool.py +++ b/api/app/core/tools/builtin/textin_tool.py @@ -4,7 +4,7 @@ from typing import List, Dict, Any import aiohttp from app.core.tools.base import ToolParameter, ToolResult, ParameterType -from .base import BuiltinTool +from app.core.tools.builtin.base import BuiltinTool class TextInTool(BuiltinTool): diff --git a/api/app/core/tools/custom/__init__.py b/api/app/core/tools/custom/__init__.py index 87b0488a..d56265e7 100644 --- a/api/app/core/tools/custom/__init__.py +++ b/api/app/core/tools/custom/__init__.py @@ -1,8 +1,8 @@ """自定义工具模块""" -from .base import CustomTool -from .schema_parser import OpenAPISchemaParser -from .auth_manager import AuthManager +from app.core.tools.custom.base import CustomTool +from app.core.tools.custom.schema_parser import OpenAPISchemaParser +from app.core.tools.custom.auth_manager import AuthManager __all__ = [ "CustomTool", diff --git a/api/app/core/tools/mcp/__init__.py b/api/app/core/tools/mcp/__init__.py index faf13ceb..4c9519b3 100644 --- a/api/app/core/tools/mcp/__init__.py +++ b/api/app/core/tools/mcp/__init__.py @@ -1,8 +1,8 @@ """MCP工具模块""" -from .base import MCPTool -from .client import MCPClient, MCPConnectionPool -from .service_manager import MCPServiceManager +from app.core.tools.mcp.base import MCPTool +from app.core.tools.mcp.client import MCPClient, MCPConnectionPool +from app.core.tools.mcp.service_manager import MCPServiceManager __all__ = [ "MCPTool", diff --git a/api/app/core/tools/mcp/base.py b/api/app/core/tools/mcp/base.py index ca77f528..3fa103ab 100644 --- a/api/app/core/tools/mcp/base.py +++ b/api/app/core/tools/mcp/base.py @@ -1,7 +1,6 @@ """MCP工具基类""" import time from typing import Dict, Any, List -import aiohttp from app.models.tool_model import ToolType from app.core.tools.base import BaseTool diff --git a/api/app/core/tools/mcp/service_manager.py b/api/app/core/tools/mcp/service_manager.py index 51d01535..f7349201 100644 --- a/api/app/core/tools/mcp/service_manager.py +++ b/api/app/core/tools/mcp/service_manager.py @@ -8,7 +8,7 @@ from sqlalchemy.orm import Session from app.models.tool_model import MCPToolConfig, ToolConfig, ToolType, ToolStatus from app.core.logging_config import get_business_logger -from .client import MCPClient, MCPConnectionPool +from app.core.tools.mcp.client import MCPClient, MCPConnectionPool logger = get_business_logger()