在Dify中实现多工作区:企业级AI应用开发的实践

目录

一、引言

二、多工作区的核心价值

三、实现思路

四、实施方法

五、管理跟进

六、注意事项与不足


一、引言

在AI应用开发领域,团队协作效率与开发环境管理始终是制约项目质量的关键因素。当多个开发者同时进行知识库管理、AI应调试和功能开发时,传统的单一工作区模式往往导致配置冲突、测试污染和权限混乱等问题。本文将深入解析如何在Dify平台中构建多工作区体系,通过项目工作区与私有工作区的分离管理,作为实现企业级AI应用开发的标准化流程有益的实践。
注意:如果组织计划在生产和开发环境中真正实现Dify多租户,本人建议联系Dify商务部门购买企业版本。下文作为研究测试过程的记录,仅限探索多租户模式下是否符合团队协作开发要求。


二、多工作区的核心价值

在使用Dify进行AI应用开发实践中,我们观察到传统协作模式存在不足:

Dify没有资源权限的管理机制,默认配置仅有一个工作区,由项目团队大家共用。每位成员各自完成开发应用、工作流配置、模型优化与调参等工作。对于其他成员开发的应用,可以任意修改,存在一定危险性,项目因共用开发环境混乱导致代码污染。Dify的单工作区设计虽然降低了使用门槛,却让团队陷入"既要开放协作,又要避免误操作"的两难境地。
传统解决方案:部署两套Dify环境,一套作为基线版本,由配置管理员统一管理,另一套作为开发版本,供项目组共用。然而,在开发环境中,上述问题仍然存在。

为此,本文尝试在一套Dify环境中,建立开发沙箱,为每位成员建立私有工作区,用于开发测试,另外设置一个项目工作区,用于部署单元测试后的应用。每位成员是私有工作区的所有者,拥有完全的管理权限,而在项目工作区,进作为成员身份,权限受限,能够实现一定程度的应用安全管理机制。

三、实现思路

通过研读Dify源代码,我们了解到在/app/api/services目录中的account_service.py中实现了用户注册、认证、工作区管理等功能,通过修改认证代码,可在用户登录后,为没有私有工作区的用户自动建立工作区实现。

四、实施方法

1.备份源代码

进入Api Docker中的目录/app/api/services(注意不是宿主机,这也是许多兄弟不成功的原因),备份feature_service.py和account_service.py

cp account_service.py account_service2.py
cp feature_service.py feature_service2.py

2.修改源代码(需要将docker中的代码copy回宿主机修改

2.1 修改/app/api/services/feature_service.py:

一:修改第65行(v0.15.3),或修改74行(v1.1.3):

修改Dify默认设置,设置允许建立工作区。

二(测试可行):修改101行(v0.15.3),或修改123行(v1.1.3):

2.2 修改/app/api/services/account_service.py,在171行(v0.15.3、v1.1.3)上方添加代码:

即,在用户成功登录后,如果平台没有自己的工作区,则新建一个私有工作区。

3.重启动Api Docker(如果采用Docker部署Dify)

4.项目成员退出并重新登录Dify平台,即可看到自己的工作区

v0.15.3效果

v1.1.3效果

如上图,第一个是项目工作区,第二个是私有工作区。

2025年3月26日补充

评论区部分兄弟反映:在自己的Dify环境中,按如上方法设置后并未自动建立私有工作区。经本人测试:0.15.3、1.1.3版本均可实现。需要说明的是:
1.修改上述代码不是指git下来的代码,而是docker中的代码,兄弟们需要docker ps,找到Dify的名为“docker-api-1”、“docker-worker-1”两个docker,然后进入其中:
 

docker exec -it 883 bash  #比如“docker-api-1”的conainer id为883

cd /app/api/services

cp account_service.py account_service2.py

cp feature_service.py feature_service2.py

exit  #返回宿主机

sudo docker cp 883:/app/api/services/account_service.py account_service.py #把文件copy到宿主机

sudo vi account_serivce.py  #按上面步骤修改代码,然后w保存退出

sudo docker cp feature_service.py 883:/app/api/services/feature_service.py #把文件copy到宿主机

sudo vi  feature_service.py #按上面步骤修改代码,然后w保存退出

sudo docker cp account_service.py 883:/app/api/services/account_service.py #copy并覆盖docker中的代码
sudo docker cp feature_service.py 883:/app/api/services/feature_service.py #copy并覆盖docker中的代码

docker ps  #找到“docker-worker-1”的container id ,比如是c8c

sudo docker cp account_service.py c8c:/app/api/services/account_service.py #copy并覆盖docker中的代码
sudo docker cp feature_service.py c8c:/app/api/services/feature_service.py #copy并覆盖docker中的代码
#重新启动两个docker

sudo docker restart 883 

sudo docker restart c8c

另外,如果新邀请加入的成员登录后,没看到私有工作区时(v1.1.3),可由公共工作区所有者,现将加入的成员移除,然后成员重新登录Dify(此时系统会自动建立成员私有工作区),然后公共工作区所有者,再次邀请这些有了私有工作区的成员加入即可。

五、管理跟进

1.项目工作区所有者,将团队成员身份设置为“编辑”,便于其后续导入开发好的应用DSL

2.团队成员在私有工作区完成应用开发与调试,并完成单元测试后,将应用导出为DSL,进入项目工作区导入。

六、注意事项与不足

各个工作区的知识库、模型配置彼此隔离,如果存在公用知识库和模型的话,需要多次配置

上述方法在v0.15.3、v1.1.3版本上测试通过。

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值