百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

安装Dify源码并修改前端发布

liuian 2025-04-24 03:32 13 浏览

Dify 是一个开源的大语言模型(LLM)应用开发平台,目前是开源的,可以拿到完整的前后端源码,Dify 虽然开源协议,但要求前端代码保留版权协议和Logo;

今天讲下如何源码安装,并来修改打包前端代码

1 安装docker

由于我会用到整个开发环境,docker我用宝塔部署的,部署非常简单,直接安装完宝塔后,点击 docker 菜单安装即可:

由于docker镜像在国外,我们修改成国内镜像,点击 打开配置文件,将以下内容复制进去

{
"exec-opts": ["native.cgroupdriver=cgroupfs"],
"insecure-registries": [
"192.168.9.203:5000",
"192.168.9.203:8082",
"https://wtrtlz41.mirror.aliyuncs.com"
],
"log-driver": "json-file",
"log-opts": {
"max-file": "3",
"max-size": "100m"
},
"registry-mirrors": [
"https://docker.m.daocloud.io/",
"https://huecker.io/",
"https://dockerhub.timeweb.cloud",
"https://noohub.ru/",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://xx4bwyg2.mirror.aliyuncs.com",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
],
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
}

复制完成后重启docker

2 安装python运行环境

# 安装 Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh


#按照提示操作,当提示你是否“同意许可协议”时,输入 yes 并继续。然后,选择安装位置(通常直接按回车接受默认位置即可),并设置 Conda 的 PATH(建议选择 yes)。
echo 'export PATH="/root/miniconda3/bin:$PATH"' >> ~/.bashrc

#更新系统环境配置
source ~/.bashrc

# 验证安装
conda --version
conda init

# 运行环境
conda create -n dify python=3.12
conda activate dify

3 克隆源码

git clone https://github.com/langgenius/dify.git
cd dify

4 修改docker配置文件

由于我本机已经安装了pgsql 和 redis ,现在把 dify的 pgsql 和redis 默认的端口改下:

cd docker
vi docker-compose.middleware.yaml

# 第20行
ports:
      - "${EXPOSE_POSTGRES_PORT:-5433}:5432"

# 第39行
ports:
      - "${EXPOSE_REDIS_PORT:-6380}:6379"

# 执行:
docker compose -f docker-compose.middleware.yaml up -d

5 安装后台服务环境

cd api


#2. 备份配置文件
cp .env.example .env


#3. 生成随机密钥:
#此条命令会在.env配置文件里的SECRET_KEY配置项后面追加一串随机符
awk -v key="$(openssl rand -base64 42)" '/^SECRET_KEY=/ {sub(/=.*/, "=" key)} 1' .env > temp_env && mv temp_env .env
# 4. 修改.env配置文件相关配置:
#例如PostgreSQL\Redis\Weaviate\Celery的相关连接配置,请根据实际的情况对应修改
#安装配置poerty,一般安装pip时会有poetry,可用pip list查看,若没有再行安装,本示例使用1.8.5
pip install poetry==1.8.5
poetry env use 3.12
poetry lock --no-update


#安装依赖,注意该命令的执行目录要在包含poetry的相关文件的目录下执行方可生效
poetry source add --default mirrors https://pypi.tuna.tsinghua.edu.cn/simple
poetry source add --default mirrors https://mirrors.aliyun.com/pypi/simple/
poetry install
poetry install --no-interaction --no-ansi --timeout 1000


# 安装onnxruntime
# https://pypi.org/project/onnxruntime/#files
poetry add ./onnxruntime-1.20.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl 
poetry shell
poetry run python -m flask db upgrade


# 启动api服务
poetry run python -m flask run --host 0.0.0.0 --port=5001 --debug


#Linux/MacOS:
pip install celery == 5.3.0
poetry install
 
# 启动后台进程
celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO


#Windows:
pip install celery == 5.3.0
poetry install
celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail,ops_trace --loglevel INFO

6 安装前端运行环境

cd web
cp .env.example .env

apt install npm
npm config set registry https://registry.npmmirror.com
npm install -g n

n latest
sudo npm install -g pnpm

# 服务打包
pnpm install
pnpm run build
pnpm run start

启动后,默认是 3000端口,如下:

以上代码就跑起来了,下面我们改下代码:dify默认会打开个 Start Chat 确认页面,如下图:

我们来写个代码去掉它:

在这里:\web\app\components\base\chat\chat-with-history\config-panel\index.tsx 加入代码

 useEffect(() => {
    // 在组件挂载后立即调用 handleStartChat
    handleStartChat();
  }, [handleStartChat]); // 依赖项数组中包含 handleStartChat,确保它变化时重新执行

重新打包 发布:

pnpm run build
pnpm run start

再打开,可以直接进入对话了!

相关推荐

深入解析 MySQL 8.0 JSON 相关函数:解锁数据存储的无限可能

引言在现代应用程序中,数据的存储和处理变得愈发复杂多样。MySQL8.0引入了丰富的JSON相关函数,为我们提供了更灵活的数据存储和检索方式。本文将深入探讨MySQL8.0中的JSON...

MySQL的Json类型个人用法详解(mysql json类型对应java什么类型)

前言虽然MySQL很早就添加了Json类型,但是在业务开发过程中还是很少设计带这种类型的表。少不代表没有,当真正要对Json类型进行特定查询,修改,插入和优化等操作时,却感觉一下子想不起那些函数怎么使...

MySQL的json查询之json_array(mysql json_search)

json_array顾名思义就是创建一个数组,实际的用法,我目前没有想到很好的使用场景。使用官方的例子说明一下吧。例一selectjson_array(1,2,3,4);json_array虽然单独...

头条创作挑战赛#一、LSTM 原理 长短期记忆网络

#头条创作挑战赛#一、LSTM原理长短期记忆网络(LongShort-TermMemory,LSTM)是一种特殊类型的循环神经网络(RNN),旨在解决传统RNN在处理长序列数据时面临的梯度...

TensorBoard最全使用教程:看这篇就够了

机器学习通常涉及在训练期间可视化和度量模型的性能。有许多工具可用于此任务。在本文中,我们将重点介绍TensorFlow的开源工具套件,称为TensorBoard,虽然他是TensorFlow...

图神经网络版本的Kolmogorov Arnold(KAN)代码实现和效果对比

本文约4600字,建议阅读10分钟本文介绍了图神经网络版本的对比。KolmogorovArnoldNetworks(KAN)最近作为MLP的替代而流行起来,KANs使用Kolmogorov-Ar...

kornia,一个实用的 Python 库!(python kkb_tools)

大家好,今天为大家分享一个实用的Python库-kornia。Github地址:https://github.com/kornia/kornia/Kornia是一个基于PyTorch的开源计算...

图像分割掩码标注转YOLO多边形标注

Ultralytics团队付出了巨大的努力,使创建自定义YOLO模型变得非常容易。但是,处理大型数据集仍然很痛苦。训练yolo分割模型需要数据集具有其特定格式,这可能与你从大型数据集中获得的...

[python] 向量检索库Faiss使用指北

Faiss是一个由facebook开发以用于高效相似性搜索和密集向量聚类的库。它能够在任意大小的向量集中进行搜索。它还包含用于评估和参数调整的支持代码。Faiss是用C++编写的,带有Python的完...

如何把未量化的 70B 大模型加载到笔记本电脑上运行?

并行运行70B大模型我们已经看到,量化已经成为在低端GPU(比如Colab、Kaggle等)上加载大型语言模型(LLMs)的最常见方法了,但这会降低准确性并增加幻觉现象。那如果你和你的朋友们...

ncnn+PPYOLOv2首次结合!全网最详细代码解读来了

编辑:好困LRS【新智元导读】今天给大家安利一个宝藏仓库miemiedetection,该仓库集合了PPYOLO、PPYOLOv2、PPYOLOE三个算法pytorch实现三合一,其中的PPYOL...

人工智能——图像识别(人工智能图像识别流程)

概述图像识别(ImageRecognition)是计算机视觉的核心任务之一,旨在通过算法让计算机理解图像内容,包括分类(识别物体类别)、检测(定位并识别多个物体)、分割(像素级识别)等,常见的应用场...

PyTorch 深度学习实战(15):Twin Delayed DDPG (TD3) 算法

在上一篇文章中,我们介绍了DeepDeterministicPolicyGradient(DDPG)算法,并使用它解决了Pendulum问题。本文将深入探讨TwinDelayed...

大模型中常用的注意力机制GQA详解以及Pytorch代码实现

分组查询注意力(GroupedQueryAttention)是一种在大型语言模型中的多查询注意力(MQA)和多头注意力(MHA)之间进行插值的方法,它的目标是在保持MQA速度的同时...

pytorch如何快速创建具有特殊意思的tensor张量?

专栏推荐正文我们通过值可以看到torch.empty并没有进行初始化创建tensor并进行随机初始化操作,常用rand/rand_like,randint正态分布(0,1)指定正态分布的均值还有方差i...