完整的第三方工具集成解决方案,支持Python函数、HTTP API、MCP等多种方式。
- ✅ Python函数工具 - 装饰器注册,零配置
- ✅ HTTP API工具 - 远程调用,RESTful支持
- ✅ MCP工具 - Model Context Protocol标准
- ✅ 配置文件驱动 - YAML配置,热加载
- ✅ 用户友好 - 装饰器API,极简接入
- ✅ LLM集成 - OpenAI Function Calling支持
- ✅ 与框架集成 - 适配器/优化器/验证器无缝使用
from treeskill.tools import tool, tool_registry
# 使用装饰器注册
@tool()
def calculate_laplace(expr: str) -> str:
"""计算拉普拉斯变换"""
from sympy import laplace_transform, symbols
t, s = symbols('t s')
result, _, _ = laplace_transform(expr, t, s)
return str(result)
# 使用
result = tool_registry.execute("calculate_laplace", "sin(t)")
print(result) # 1/(s**2 + 1)就这么简单! 不需要任何配置。
from treeskill.tools import create_http_tool
# 创建HTTP工具
weather_api = create_http_tool(
name="weather_api",
endpoint="https://api.openweathermap.org/data/2.5/weather",
description="查询天气",
method="GET",
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
# 使用
result = weather_api.execute(q="Beijing", appid="YOUR_KEY")
print(result)from treeskill.tools import create_mcp_tool
# 创建MCP工具
database_query = create_mcp_tool(
name="database_query",
mcp_server="localhost:5000",
tool_name="sql_query",
description="执行SQL查询",
auth_token="your-token-here"
)
# 使用
result = database_query.execute(sql="SELECT * FROM users LIMIT 10")
print(result)config.yaml:
tools:
- name: weather
type: http
description: 天气查询API
endpoint: https://api.weather.com/current
method: GET
headers:
Authorization: Bearer xxx
- name: database
type: mcp
description: 数据库查询
mcp_server: localhost:5000
tool_name: query
auth_token: secret-token加载:
from treeskill.tools import tool_registry
# 从配置文件加载
tool_registry.load_from_config("config.yaml")
# 使用
weather = tool_registry.execute("weather", city="Beijing")
data = tool_registry.execute("database", sql="SELECT * FROM users")查看 examples/example_tools.py 获取完整可运行示例。
运行测试:
python examples/example_tools.pyfrom treeskill.tools import BaseTool, tool_registry
class MyCustomTool(BaseTool):
@property
def name(self) -> str:
return "my_tool"
@property
def description(self) -> str:
return "我的自定义工具"
def execute(self, *args, **kwargs):
# 自定义逻辑
return {"result": "success"}
# 注册
tool_registry.register("my_tool", MyCustomTool())
# 使用
result = tool_registry.execute("my_tool")| 函数 | 说明 |
|---|---|
@tool() |
装饰器注册Python函数 |
create_http_tool() |
创建HTTP工具 |
create_mcp_tool() |
创建MCP工具 |
tool_registry.execute() |
执行工具 |
tool_registry.list_tools() |
列出所有工具 |
tool_registry.load_from_config() |
从配置文件加载 |
| 类型 | 接入方式 | 难度 | 用例 |
|---|---|---|---|
| Python函数 | @tool() 装饰器 |
⭐ | 本地计算、数据处理 |
| HTTP API | create_http_tool() |
⭐⭐ | 第三方API、微服务 |
| MCP | create_mcp_tool() |
⭐⭐⭐ | Claude集成、标准化工具 |
| 自定义 | 继承 BaseTool |
⭐⭐⭐⭐ | 复杂场景 |
@tool()
def verify_laplace(expr: str, answer: str) -> bool:
"""验证拉普拉斯变换答案"""
from sympy import laplace_transform, symbols, sympify
t, s = symbols('t s')
correct, _, _ = laplace_transform(sympify(expr), t, s)
return str(correct) == answer
# 在优化器中使用
is_correct = tool_registry.execute("verify_laplace", "sin(t)", "1/(s**2+1)")db_tool = create_mcp_tool(
name="query_db",
mcp_server="localhost:5000",
tool_name="sql_query"
)
users = tool_registry.execute("query_db", sql="SELECT * FROM users")@tool(
name="get_weather",
schema={
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"}
},
"required": ["city"]
}
)
def get_weather(city: str) -> dict:
return {"city": city, "temp": 20}
# 获取schema
schema = tool_registry.get("get_weather").to_schema()
# 传递给LLM
# response = adapter.generate(prompt, tools=[schema])工具可以与优化器、验证器、适配器无缝集成。
查看完整文档:TOOLS_GUIDE.md
完成时间: 2026-03-17 支持: Python/HTTP/MCP/自定义 用户友好度: ⭐⭐⭐⭐⭐