dify工作流编排


Dify下载和安装

https://github.com/langgenius/dify
https://docs.dify.ai/zh-hans
https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/local-source-code

ubuntu下载并解压
wget https://github.com/langgenius/dify/archive/refs/tags/0.15.3.zip
unzip 0.15.3.zip -d /home/ai/

从发行版本中下载,不要git项目,下载后解压改名为dify
windows下后端需运行在docer中

cd dify/docker
cp .env.example .env
sudo docker compose up -d 启动并运行容器,也可以作为重启
sudo docker compose down # 停止并移除现有的容器

如果要使用代理
打开v2ray目录,设置v2ray可执行
sudo ./v2ray run --config=./config.json
export all_proxy=http://127.0.0.1:10809
source ~/.bashrc
curl -v https://www.google.com 验证访问
取消代理
unset all_proxy

服务器设置域名和端口映射关系,如果不是服务器部署跳过
容器自身的nginx配置路径:项目路径/docker/nginx/conf.d/default.conf 设置域名绑定
编辑docker-compose.yaml的nginx端口项

yaml
#将宿主9998端口映射到容器内80端口
ports:
      - '9998:${NGINX_PORT:-80}'

启动后即可访问http://localhost/install 初始化

右上角》设置》模型提供商,添加模型
地址写:WSL2中的地址,linux中的docker写局域网,虽然本机能通过本地地址访问到wsl2中但是docder中的是访问不到WSL2,因此需要在使用ip a查询和本机的地址

添加完所有模型后,需要刷新页面,然后在模型供应商的右上角》系统模型配置,指定模型

如如dify运行在容器中,需要使用host.docker.internal代替本地地址
http://host.docker.internal:9997
然后创建一个空白应用,就已经可以选择使用了

dify从源码构建安装

使用pyenv先创建一个3.12.9的虚拟环境
pyenv virtualenv 3.12.9 name 创建指定版本的虚拟环境
pyenv activate venv 激活虚拟环境

开启代理下载项目
git clone https://github.com/langgenius/dify.git
ide切换到dify目录
执行命令前确保在虚拟环境中

cd api

cp .env.example .env

awk -v key="$(openssl rand -base64 42)" '/^SECRET_KEY=/ {sub(/=.*/, "=" key)} 1' .env > temp_env && mv temp_env .env

pip install poetry 安装依赖管理工具
poetry env activate 激活环境
poetry install 安装依赖
或者
修改pyproject.toml:

yaml
[project]
version = "0.1.0"  # 需要确保这一行存在

[tool.poetry]
package-mode = true # 这里允许作为一个包

pip install -e . 安装依赖

flask db upgrade 迁移数据库到最新版

启动服务都要在api目录下执行
flask run --host 0.0.0.0 --port=5001 --debug 启动API服务

celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO 启动任务列队

前端构建和运行,这里可以在windows中执行
打开web目录后
npm install -g pnpm

pnpm install
pnpm approve-builds

npm run build 构建(需使用管理员权限运行)
npm start 启动