Skip to main content
LangChain 开箱即用地提供了用于与本地文件系统交互的工具。本笔记本将介绍其中的一些工具。 注意: 不建议在沙箱环境以外使用这些工具!
pip install -qU langchain-community
首先,我们导入相关工具。
from tempfile import TemporaryDirectory

from langchain_community.agent_toolkits import FileManagementToolkit

# 创建一个临时目录以避免目录混乱
working_directory = TemporaryDirectory()

FileManagementToolkit

如果您希望为 Agent 提供所有文件操作工具,使用工具包可以轻松实现。我们将临时目录作为 LLM 的根目录(工作空间)传入。 建议始终传入根目录,因为不指定根目录时,LLM 可能会污染当前工作目录,并且缺乏对直接提示注入的验证。
toolkit = FileManagementToolkit(
    root_dir=str(working_directory.name)
)  # 如果不提供 root_dir,操作将默认使用当前工作目录
toolkit.get_tools()
[CopyFileTool(root_dir='/tmp/tmprdvsw3tg'),
 DeleteFileTool(root_dir='/tmp/tmprdvsw3tg'),
 FileSearchTool(root_dir='/tmp/tmprdvsw3tg'),
 MoveFileTool(root_dir='/tmp/tmprdvsw3tg'),
 ReadFileTool(root_dir='/tmp/tmprdvsw3tg'),
 WriteFileTool(root_dir='/tmp/tmprdvsw3tg'),
 ListDirectoryTool(root_dir='/tmp/tmprdvsw3tg')]

选择文件系统工具

如果只想使用某些特定工具,可以在初始化工具包时通过参数指定,也可以单独初始化所需的工具。
tools = FileManagementToolkit(
    root_dir=str(working_directory.name),
    selected_tools=["read_file", "write_file", "list_directory"],
).get_tools()
tools
[ReadFileTool(root_dir='/tmp/tmprdvsw3tg'),
 WriteFileTool(root_dir='/tmp/tmprdvsw3tg'),
 ListDirectoryTool(root_dir='/tmp/tmprdvsw3tg')]
read_tool, write_tool, list_tool = tools
write_tool.invoke({"file_path": "example.txt", "text": "Hello World!"})
'File written successfully to example.txt.'
# 列出工作目录中的文件
list_tool.invoke({})
'example.txt'