Skip to content
CrewAI 文档版本 跟随上游 源快照 838c4fea 更新于 2026-10-18

文件写入

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 文件操作时可能会遇到文件写入问题。

遵循所提供的设置和使用指南,将该工具纳入项目十分简单,并能确保在所有平台上保持一致的文​​件写入行为。

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。