多租户
- 系统中有工作空间,租户,用户的概念。租户和工作空间是一一对应的,用户定义在工作空间上。要实现多租户就需要实现多工作空间。(agent, dataset,model 这三个都是定义在工作空间上)。
- dify 是实现多工作空间的功能(表结构上,每个表都有工作空间 id)。社区版把入口关闭,我们需要在accounts(用户表), tenants(租客表或工作空间表), tenant_account_joins(用户-租户关联表)中添加数据,实现多租户的功能。
- 用户都记录在accounts表中,通过tenant_account_joins找到它的工作空间。
- 用户权限分为创建者(owner),管理员(admin),使用者。用户可通过email 邀请其它用户。
-
添加private.pem文件:在 app/api/storage/,有各租户pem 文件,没有这个文件模型设置会报错。
docker exec -it xxx /bin/bash //进入docker-api的空间 cd storage/privkeys cp -r xxx xxx // 拷贝上个用户的 pem 到当前用户,需要找到上个用户tenant_id, 当前用户tenant_id注:多租户功能在官方的licence 中是禁止商业使用的。
前端项目
前端项目是web 文件夹, 开发语言是next.js + React。
app\compnents\
datasets 知识库标签
explore 探索标签
tools 工具标签
header
\index.tsx 首页
文件夹与页面对应关系如上。
后端项目
后端是用flask + flask_restful 作web接口,SQLAlchemy 作ORM
controls 是api 接口
services 业务逻辑文件夹
models 数据表对象文件夹
controls\console\
explore 探索标签
datasets 知识库标签
app 工作室标签
core dataset 处理逻辑
探索标签下项目的数据没写在数据表中,是在
contants\recommend_apps.json
修改项目后布署
web, api项目中都有docker 文件夹,使用这个文件夹的设置来打包项目。
打包web 项目
docker build -t lang/dify-web:1.0.0 .
//在docker文件夹下打包前端项目
docker save -o dify-web.tar lang/dify-web:1.0.0
// 导出镜象到本地,
docker load -i dify-web.tar
// 上传服务器,并导入服务器的docker
前端项目也可用pm2 在服务器上运行
打包api 项目
docker build -t lang/dify-api:1.0.0 .
//在docker文件夹下打包前端项目
docker save -o dify-api.tar lang/dify-api:1.0.0
// 导出镜象到本地,
docker load -i dify-api.tar
// 上传服务器,并导入服务器的docker
后端项目也可用nohup python 命令运行
agent 导出dsl 问题
目前使用0.6.9 版本,导出的dsl 与最新的0.11 的不兼容,导入会报错。