Dify应用实战番外 - 网友提问(2)

向量数据库大模型机器学习
本文适用对象:高级水平


目标:代码执行节点支持第三方Python库














自从麦金叔写微信公众号以来得到很多朋友的鼓励和支持,那麦金叔也不能辜负网友粉丝的热情,后续会不定期出一些粉丝关心的问题进行答复。一定别忘了关注,以免错过精彩内容。







这两天有网友问,代码执行节点为啥运行报错,说找不到模块。但自己的Python环境是安装了这些模块的。


麦金叔作为宠粉博主,自然不会装不知道,让粉丝朋友伤心的。今天的目标就是要解决代码执行的问题。

picture.image

01.

动手做一做

随便创建一个工作流。添加"代码执行""结束"

并填入代码如下:

picture.image

保存后进行测试。结果如下图:

picture.image

提示非常清楚,就是找不到依赖库pandas。







那我们就把库安装上,因为运行时是由sandbox提供的,所以我们找到docker-compose.yaml中sandbox的定义。其中有个卷的映射,

./volumes/sandbox/dependencies:/dependencies

这里就是我们添加依赖的地方。工程目录下docker/volumes/sandbox/dependencies下有一个空文件python-requirements.txt

输入一行"pandas==2.2.3"

重启docker服务,查看docker-sandbox-1的日志,会看到在启动sandbox时,会安装第三方库。

picture.image

重新运行"工作流"(如果还报错找不到pandas,需要等待一会儿,安装有可能还没有完成,一定要看到sandbox的log里面显示python dependencies installed)。发现已经不再报错找不到pandas,而是提示另外一个错误。

picture.image

绝望了呀,赶紧问问DeepSeek和豆包是咋回事啊。


好的,它们都说是沙盒环境的权限限制导致的,但好歹也要给出如何修改的建议吧?对不起,没有,请自行解决。


这下难题还是留给了麦金叔,只能硬着头皮上了。

02.

解决沙盒权限

通过官方dify-sandbox开源项目的FAQ,知道由于怕沙盒权限太大,导致不可控风险,所以本着最小化开放权限的原则,缺省的权限就很小。


知道问题的根结,那应该就很好解决了。

方案一

和刚才添加依赖一样,工程目录下docker/volumes/sandbox/conf里面有一个config.yaml文件,找到allowed\_syscalls段,把需要的权限加进去。


重新启动服务之后,测试就通过了。

picture.image

方案二

修改源代码,

/internal/static/python_syscall/syscalls_amd64.go

把所需要的权限都添加进去,这里是以syscall开头的枚举值。如果出现所需要的权限没有定义,也不要紧,直接写数值也可以的。

改完了之后,需要重新编译dify-sandbox镜像。并将自己编译的镜像tag,替换进docker-compose.yaml。


重新启动服务后,也可以运行。








这个方法适用于所有没有权限执行的第三方库。


不过Dify的"代码执行"最好不要有太过复杂的脚本执行,一个是难以调试,另一个也是容易执行超时。



如果很依赖Python执行,可以按照"插件"的方案。将其封装为一个插件,每个插件也可以定义自己的requirements。这样也就不用怕没有权限了。

总结

今天的答疑来自网友的留言问题,当然有可能他说的Python脚本不能执行的问题,还不是这篇文章介绍的。请务必要理解,Dify的Python执行环境是独立的,和本机的Python环境没有关系,哪怕就是本机运行的容器环境。

往期回顾

|

Dify应用实战(1) - 知识库检索

| |

Dify应用实战(2) - 联网工具

| |

Dify应用实战(3) - 代码处理

| |

Dify应用实战(4) - 生成语音

| |

Dify应用实战(5) - 使用模版

| |

Dify应用实战(6) - 图片生成(上)

| |

Dify应用实战(7) - 图片生成(下)

| |

Dify应用实战(8) - 对话记忆

| |

Dify应用实战(9) - 问题分类

| |

Dify应用实战(10) - 循环处理

| |

Dify应用实战(11) - 条件分支

| |

Dify应用实战(12) - 数据库查询

| |

Dify应用实战(13) - 工具调用

| |

Dify应用实战(14) - 结果聚合

| |

Dify应用实战(15) - 对象存储

| |

Dify应用实战(16) - 数据可视化

|

如果你对AI的发展感兴趣,欢迎一键三连。有任何问题可以扫码添加好友,我们共同探讨。

picture.image

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
云原生可观测性技术的落地实践
云原生技术和理念在近几年成为了备受关注的话题。应用通过云原生改造,变得更动态、弹性,可以更好地利用云的弹性能力。但是动态、弹性的环境也给应用以及基础设施的观测带来了更大的挑战。本次分享主要介绍了云原生社区中可观测性相关的技术和工具,以及如何使用这些工具来完成对云原生环境的观测。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论