from qitos import ToolRegistry, function_tool@function_tool(read_only=True)def lookup_user(user_id: str) -> dict: """Look up a user by ID.""" return {"id": user_id, "name": "Alice"}registry = ToolRegistry()registry.register(lookup_user)# 工具现在可以通过名称访问descriptions = registry.get_tool_descriptions()
也可以批量注册工具并覆盖名称:
@function_tooldef create_user(name: str) -> dict: """Create a new user.""" return {"name": name}@function_tooldef delete_user(user_id: str) -> dict: """Delete a user by ID.""" return {"deleted": user_id}registry.register(create_user)registry.register(delete_user, name="remove_user")
from qitos import function_tool@function_tool(read_only=True)def get_time() -> str: """Return the current time.""" from datetime import datetime return datetime.now().isoformat()
BaseTool 子类 — 适合有状态的工具或需要复杂初始化的场景:
from qitos import BaseTool, ToolSpec, ToolMetaclass GetTimeTool(BaseTool): def __init__(self): meta = ToolMeta(name="get_time", read_only=True) spec = ToolSpec( name="get_time", description="Return the current time.", parameters={}, required=[], ) super().__init__(spec) def execute(self, **kwargs) -> str: from datetime import datetime return datetime.now().isoformat()