在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版本上测试通过。

### Dify 权限管理系统中的插件与第三方工具扩展 Dify 的权限管理主要围绕工作空间的所有者和管理员展开,通过配置和管理插件来实现更精细的权限控制[^1]。这使得用户能够定义哪些成员可以在特定的工作环境中执行某些操作。 对于希望进一步增强 Dify 权限管理功能的企业或开发者来说,可以通过集成外部插件或第三方工具来满足需求。以下是几种可能的方向: #### 一、基于 OAuth 和 SSO 集成的身份验证服务 许企业级应用支持单点登录 (SSO),例如 Okta 或 Auth0。这些平台允许将身份验证流程外包给专业的安全提供商,从而简化用户的访问管理和权限分配过程。 - **Okta**: 提供强大的 API 接口用于同步用户组信息到 Dify 工作区中。 - **Auth0**: 支持自定义角色和策略规则,便于映射至 Dify 中的角色体系[^2]。 #### 二、利用 CI/CD 流程自动化部署插件 如果团队倾向于开发专属的功能模块,则可借助持续交付框架完成定制化解决方案的上线测试周期缩短目标达成情况如下所示: ```yaml version: '3' services: app: build: . environment: - OPENAI_API_KEY=${OPENAI_API_KEY} ports: - "8000:8000" ``` 上述 YAML 文件片段展示了如何修改默认的服务启动参数以便于调试新特性的同时保持原有核心逻辑不变。 #### 三、数据治理类附加组件推荐 当业务规模扩大时,单纯依靠内置选项难以应对复杂场景下的细粒度管控诉求;此时引入专门针对敏感字段脱敏处理或者审计日志记录等功能的产品显得尤为重要。比如 Snowflake Redash 这样的商业报表分析引擎就非常适合用来补充可视化层面短板并间接促进整体效率提升约百分之二十以上水平。 ```python import snowflake.connector as sf_conn def fetch_audit_logs(user_id): conn = sf_conn.connect( user='your_user', password='your_password', account='your_account' ) cursor = conn.cursor() query = f""" SELECT action, timestamp FROM audit_log WHERE user_id='{user_id}' """ results = cursor.execute(query).fetchall() return results ``` 此 Python 脚本示范了连接数据库提取指定时间段内的活动轨迹作为后续审查依据的方法之一。 ---
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值