Skip to main content

工具

工具是 LLM 可以调用的异步函数,它们是模型推理与真实操作之间的桥梁。

基本 @tool

核心规则

  1. 必须是异步函数@tool 要求使用 async def,不支持同步函数。
  2. 文档字符串即规格说明 — 模型看到的工具描述就是你的文档字符串。
  3. 最佳实践很重要Best Practices 部分会作为 <tool_best_practices> 注入到系统提示词中。用它来引导模型何时以及如何使用工具。
  4. 类型注解定义 schema — 参数类型会转换为工具的 JSON schema。

文档字符串结构

组合工具集

将多个工具传递给智能体:

内置工具集

FileToolset

具有过期写入保护的工作区级文件操作:
FileToolset 提供 5 个工具:read_fileread_imagegrepsedecho_into

PyRepl

带运行时原语的持久化 Python REPL:
PyRepl 提供 2 个工具:execute_codereset_repl

多模态返回

工具可以返回图片和混合内容:
多模态返回会由运行时通过内部对话记录补丁进行重组——图片会被放置在用户消息中(大多数提供商的要求)。

元组返回(混合内容)

同时返回文本和图片:
对于多张图片,可以返回非空列表,或把文本与图片列表组合返回:

长输出处理

对于产生超长输出的工具:
设置 too_long_to_file=True 后,如果结果超过约 20,000 个 token,框架会:
  1. 将完整输出写入临时文件
  2. 向模型发送截断版本和文件路径
  3. 模型随后可以按需读取特定部分

动态创建工具

以编程方式创建工具:

系统提示词注入

每个工具的 Best Practices 部分会被收集并作为 <tool_best_practices> 块注入到系统提示词的顶部。这是自动完成的——你无需在文档字符串中引用工具。 此外,工具可以通过 prompt_injection_builder 提供动态提示词注入:
API 参考:装饰器 | API 参考:内置组件