主题
文件写入
FileWriterTool用于将内容写入文件。
FileWriterTool
描述
FileWriterTool 是 crewai_tools 包的一个组件,旨在简化将内容写入文件的过程,并具备跨平台兼容性(Windows、Linux、macOS)。 它在生成报告、保存日志、创建配置文件等场景中尤其有用。 该工具处理不同操作系统之间的路径差异,默认使用 UTF-8 而不是平台的语言环境编码进行写入,并在目录不存在时自动创建目录,从而让你更轻松地在不同平台上可靠地组织输出。
安装
安装 crewai_tools 包以在项目中使用 FileWriterTool:
shell
pip install 'crewai[tools]'示例
要开始使用 FileWriterTool:
python
from crewai_tools import FileWriterTool
# Initialize the tool
file_writer_tool = FileWriterTool()
# Write content to a file in a specified directory
result = file_writer_tool.run(
filename='example.txt',
content='This is a test content.',
directory='test_directory',
)
print(result)参数
智能体在运行时提供这些参数:
filename:要写入的文件名,相对于directory。可以包含子目录,子目录不存在时会自动创建。content:要写入文件的文本内容。directory(可选):创建文件的目录路径。相对路径会解析到工具允许的目录内——设置了base_dir时就是它,否则是当前工作目录——默认为该目录的根。如果目录不存在,将会被创建。overwrite(可选):当文件已存在时是否替换。接受true/false(也接受yes/no、on/off、1/0)。默认为false,此时会报告错误而不是替换现有内容。
在构造工具时设置这些参数:
base_dir(可选):写入操作必须位于其中的目录。默认为当前工作目录。encoding(可选):用于写入文件的文本编码。默认为utf-8。
允许的路径
由于目录和文件名通常都由 LLM 在运行时选择,因此写入操作被限制在沙箱内:
- 解析后的
directory必须位于base_dir内,后者默认为当前工作目录。 - 解析后的文件随后必须位于该
directory内。..片段、绝对路径和符号链接都会在两项检查之前解析,因此无法用它们逃逸。
要允许智能体写入工作目录之外的位置,请将 base_dir 指向目标目录树:
python
# The agent may write anywhere under /var/output, and nowhere outside it
file_writer_tool = FileWriterTool(base_dir='/var/output')NOTE
以前,绝对路径的 directory 可以写入进程有权限的任何位置。如果你依赖这一行为,请将 base_dir 设置为你希望允许的目录树。设置 CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=true 可以恢复旧行为,但该设置在整个进程范围内对所有 crewai-tools 工具生效,包括对 URL 抓取工具的 SSRF 防护,因此优先使用 base_dir。
结论
通过将 FileWriterTool 集成到你的团队中,智能体可以可靠地在不同操作系统上将内容写入文件。 对于需要保存输出数据、创建结构化文件系统以及处理跨平台文件操作的任务来说,该工具至关重要。 特别推荐 Windows 用户使用,因为他们使用标准 Python 文件操作时可能会遇到文件写入问题。
遵循所提供的设置和使用指南,将该工具纳入项目十分简单,并能确保在所有平台上保持一致的文件写入行为。