突破DIFY沙箱限制,高效处理大文件
DIFY获取传入文件路径并处理文件内容
由于dify代码沙箱自身的安全限制,用户在沙箱环境下的代码无法实现对系统文件的写入和读取操作。如果想利用dify来处理文件数据,就不得不使用官方提供的文档提取器插件,但是使用该插件提取如.xlsx,.csv等格式的数据时,得到的数据可能是原本数据的数倍之大!后续的大模型结点根本接收不了这么庞大的数据量,因此绕过dify的代码沙箱环境是很有必要的。
如图:570kb的.xlsx数据解析出来达到了30mb!
1.修改沙箱镜像。
由于官方的sandbox镜像会有安全隔离限制,因此需要先修改官方镜像
同时修改代码沙箱配置文件:docker/volumes/sandbox/conf/config.yaml,将代码沙箱的读写权限打开:该配置文件通过allowed_syscalls参数来控制允许开放哪些系统调用命令。
2.将本地文件挂载到沙箱容器下。
由于用户上传的文件是临时保存在系统中的,保存路径为app/storage/upload_files/租户id 文件夹下,因此需要将该文件夹挂载到容器下。这样用户就可以直接编写代码对系统文件进行操作。
3.编写python代码获取文件路径
参考开源项目:https://github.com/svcvit/Awesome-Dify-Workflow/blob/main/DSL/File_read.yml
成功获取文件路径,接下来就可以对文件类型的数据自行编写python脚本处理了!
![image-20250427150534430](实习.assets/image-20250427150534430.png
读取到的Excel数据: