函数工具¶
将 Python 函数注册为工具——ToolRegistry 中最常见、最简单的工具创建方式。
装饰器注册¶
使用 @registry.register 直接注册函数:
from toolregistry import ToolRegistry
registry = ToolRegistry()
@registry.register
def add(a: int, b: int) -> int:
"""两数相加。"""
return a + b
显式注册¶
通过编程方式注册函数,可选覆盖名称和描述:
def multiply(x: float, y: float) -> float:
"""两数相乘。"""
return x * y
registry.register(multiply)
# 自定义名称和描述
registry.register(multiply, name="mul", description="x 乘以 y")
工作原理¶
- 类型标注 → JSON Schema 参数(例如
a: int变为{"type": "integer"}) - Docstring → 提供给 LLM 的工具描述
- 返回类型 → 不包含在 schema 中,但用于文档
- 默认值 → 反映在 schema 中,参数变为可选
def search(query: str, max_results: int = 10) -> list:
"""搜索匹配查询的项目。
Args:
query: 搜索词。
max_results: 返回的最大结果数。
"""
...
生成的 schema 中 query 为必填参数,max_results 为可选参数,默认值为 10。
命名空间¶
使用 namespace 参数对相关函数进行分组:
registry.register(add, namespace="math")
registry.register(subtract, namespace="math")
# 注册为: math-add, math-subtract
详见命名空间指南。
Tool 实例¶
也可以注册预构建的 Tool 对象:
from toolregistry import Tool
tool = Tool.from_function(add, description="自定义描述")
registry.register(tool)