工具
工具是 LLM 可以调用的异步函数,它们是模型推理与真实操作之间的桥梁。基本 @tool
核心规则
- 必须是异步函数 —
@tool要求使用async def,不支持同步函数。 - 文档字符串即规格说明 — 模型看到的工具描述就是你的文档字符串。
- 最佳实践很重要 —
Best Practices部分会作为<tool_best_practices>注入到系统提示词中。用它来引导模型何时以及如何使用工具。 - 类型注解定义 schema — 参数类型会转换为工具的 JSON schema。
文档字符串结构
组合工具集
将多个工具传递给智能体:内置工具集
FileToolset
具有过期写入保护的工作区级文件操作:read_file、read_image、grep、sed、echo_into。
PyRepl
带运行时原语的持久化 Python REPL:execute_code、reset_repl。
多模态返回
工具可以返回图片和混合内容:元组返回(混合内容)
同时返回文本和图片:长输出处理
对于产生超长输出的工具:too_long_to_file=True 后,如果结果超过约 20,000 个 token,框架会:
- 将完整输出写入临时文件
- 向模型发送截断版本和文件路径
- 模型随后可以按需读取特定部分
动态创建工具
以编程方式创建工具:系统提示词注入
每个工具的Best Practices 部分会被收集并作为 <tool_best_practices> 块注入到系统提示词的顶部。这是自动完成的——你无需在文档字符串中引用工具。
此外,工具可以通过 prompt_injection_builder 提供动态提示词注入: