Skip to main content
@function_tool 装饰器是从普通 Python 函数到 QitOS 工具的最短路径。它会检查函数签名、类型注解和文档字符串,然后构建一个完整的 FunctionTool 实例及丰富的 ToolSpec——无需子类化。

Step 1: 基本装饰器用法

不带参数地应用装饰器。函数名即为工具名,文档字符串即为描述:
需要传递参数时也可以使用带括号的形式(下一节介绍):
两种形式都会返回一个 FunctionTool 实例,其 spec 包含参数 schema、必填字段和描述。

Step 2: 装饰器参数

通过关键字参数覆盖默认值并控制执行策略:
可用参数如下:

Step 3: 类型注解自动转换为 ToolSpec 参数

装饰器会检查函数的类型注解,并将其转换为 ToolSpec.parameters 中的 JSON Schema 条目。支持的类型包括:
没有默认值的参数会被标记为必填。参数描述从文档字符串的 Google 风格 Args: 段中提取。

Step 4: 在 ToolRegistry 中注册函数工具

获得 FunctionTool 后,将其注册到 ToolRegistry 中,以便智能体发现和调用:
也可以批量注册工具并覆盖名称:

Step 5: @function_tool 与类式 BaseTool 对比

QitOS 提供两种定义工具的方式,请按需选择: @function_tool — 适合简单的无状态操作:
BaseTool 子类 — 适合有状态的工具或需要复杂初始化的场景:
选择指南: 大多数工具都是简单函数。先从 @function_tool 开始,只有在需要构造器状态或自定义执行行为时才使用 BaseTool

下一步

MCP 集成

将外部 MCP 服务器工具桥接到 QitOS,复用同一 FunctionTool 接口。

构建你的第一个智能体

在 AgentModule 中使用你的工具,运行真实的大模型循环。