檔案系統
LangChain 提供了開箱即用的工具,用於與本機檔案系統互動。本筆記本將逐步介紹其中的一些工具。
注意: 這些工具不建議在沙盒環境之外使用!
%pip install -qU langchain-community
首先,我們將匯入工具。
from tempfile import TemporaryDirectory
from langchain_community.agent_toolkits import FileManagementToolkit
# We'll make a temporary directory to avoid clutter
working_directory = TemporaryDirectory()
API 參考文件:FileManagementToolkit
FileManagementToolkit
如果您想為您的代理程式提供所有檔案工具,使用工具組可以輕鬆完成。我們將臨時目錄作為根目錄傳遞到 LLM 的工作區。
建議始終傳遞根目錄,因為如果沒有根目錄,LLM 很容易污染工作目錄,並且如果沒有根目錄,則無法針對直接提示注入進行任何驗證。
toolkit = FileManagementToolkit(
root_dir=str(working_directory.name)
) # If you don't provide a root_dir, operations will default to the current working directory
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 files in the working directory
list_tool.invoke({})
'example.txt'