01_Dify开源版使用源代码本地启动

01_Dify开源版使用源代码本地启动

一、前提条件

1.1 硬件要求

在安装 Dify 之前,请确保您的设备符合以下最低系统要求:

  • CPU >= 2 核
  • RAM >= 4 GiB

1.2 安装Docker和Docker Compose

在这里插入图片描述

👉 Ubuntu 安装Docker和Docker Compose图文教程

👉 Windows下DockerDesktop安装配置图文教程,含软件安装包

1.3 安装 Git

👉 Windows下Git安装配置及常用操作图文教程,含软件安装包

二、克隆 Dify 仓库

2.1 添加 Dify 的远程仓库

git remote add dify https://gitee.com/dify_ai/dify.git 
在这里插入图片描述

2.2 查看已关联的远程仓库

git remote -v 
在这里插入图片描述

2.3 拉取 Dify 远程仓库指定 tag 的代码

获取 Dify 远程仓库的所有信息(包括 tags),这会从远程仓库下载所有 tag 和对应的提交历史。

git fetch --tags 
在这里插入图片描述

查看可用的 tag 列表,退出输入q

git tag -l 
在这里插入图片描述

完整克隆 Dify 代码

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

切换到 Dify 代码目录

cd dify 
在这里插入图片描述

然后创建基于 tag 的分支

# git checkout tags/<tag_name> -b <new_branch_name> git checkout tags/1.4.3 -b dify-1.4.3 

三、创建虚拟环境

👉 Windows下Miniconda3安装配置图文教程,含软件安装包

3.1 创建虚拟环境

需要 Python 3.12

conda create --name dify python=3.12
在这里插入图片描述

3.2 查看虚拟环境

conda env list 
在这里插入图片描述

四、启动 API 服务

4.1 Dify 项目配置文件

导航到 api 目录

cd api 
在这里插入图片描述

准备环境变量配置文件

cp .env.example .env 
在这里插入图片描述

生成随机密钥并替换 .env 文件中的 SECRET_KEY 值

awk -v key="$(openssl rand -base64 42)"'/^SECRET_KEY=/ {sub(/=.*/, "=" key)} 1' .env > temp_env &&mv temp_env .env 
在这里插入图片描述

4.2 安装 Dify 项目依赖

使用 VSCode 打开 Dify 项目,选择 dify 虚拟环境

在这里插入图片描述

使用 uv 管理依赖,安装 uv

pip install uv 
在这里插入图片描述

通过运行以下命令使用 uv 安装所需依赖

uv sync
在这里插入图片描述

4.3 Dify 数据库迁移

在 PostgreSQL 数据库创建 dify 库

在这里插入图片描述

执行数据库迁移到最新版本

uv run flask db upgrade 
在这里插入图片描述

4.4 启动 API 服务

uv run flask run --host 0.0.0.0 --port=5001 --debug 
在这里插入图片描述

五、启动 Worker 服务

要从队列中消费异步任务,例如数据集文件导入和数据集文档更新,请按照以下步骤启动 Worker 服务

5.1 macOS 或 Linux 启动 Worker 服务

uv run celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace 

5.2 Windows 系统启动 Worker 服务

新建终端,安装 python-magic 的 Windows 兼容版本

# 进入 api 目录 cd api # 安装依赖  pip install python-magic-bin 
在这里插入图片描述

启动 Worker 服务请使用以下命令:

uv run celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail,ops_trace --loglevel INFO 

预期输出:

在这里插入图片描述

六、设置 Web 服务

启动用于前端页面的 web 服务。

6.1 环境准备

要启动 web 前端服务,需要 Node.js v22 (LTS) 和 PNPM v10。

👉 Windows下Node和pnpm的安装配置图文教程,含软件安装包

6.2 启动 Web 服务

新建终端,进入 web 目录

cd web 
在这里插入图片描述

安装依赖

pnpminstall
在这里插入图片描述

准备环境变量配置文件:在当前目录中创建一个名为 .env.local 的文件,并从 .env.example 复制内容。根据您的需求修改这些环境变量的值:

在这里插入图片描述

启动 web 服务

pnpm run dev 
在这里插入图片描述

6.3 访问 Dify

通过浏览器访问 http://127.0.0.1:3000 即可享受 Dify 所有激动人心的功能

在这里插入图片描述

控制台日志输出:

在这里插入图片描述

6.4 设置管理员账户

注册管理员账户

在这里插入图片描述

注册成功后登录

在这里插入图片描述

登录成功

在这里插入图片描述

七、解决后台报错问题

7.1 问题分析

在这里插入图片描述

在本地部署 Dify 时,其核心模块尝试与插件守护进程(Plugin Daemon Service)通信失败

7.2 解决方案

dify-plugin-daemon使用源码启动图文教程

7.3 效果展示

API 服务端控制台输出不再报获取插件的错误

在这里插入图片描述

Read more

Java响应式编程:Flux与SseEmitter深度解析

本文深入探讨Java中Flux和SseEmitter两种流式响应技术,从实际需求出发,详细分析其使用方法、底层原理及应用场景。 目录 * 一、为什么需要Flux和SseEmitter * 二、技术背景与概念 * 三、SseEmitter深度解析 * 四、Flux深度解析 * 五、底层原理剖析 * 六、性能对比与选型 * 七、生产环境实战 * 八、常见问题与解决方案 一、为什么需要Flux和SseEmitter 1.1 传统同步响应的痛点 在传统的Spring MVC开发中,我们通常使用同步的请求-响应模式: @PostMapping("/chat/message")publicResult<MessageVO>sendMessage(@RequestBodySendMessageReq req){// 调用AI服务生成回复(可能需要5-30秒)String aiResponse = aiService.generateResponse(req.getContent());returnResult.

By Ne0inhk
JavaScript异步编程 Async/Await 使用详解:从原理到最佳实践

JavaScript异步编程 Async/Await 使用详解:从原理到最佳实践

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》专栏19年编写主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战 🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解 🌛《开源项目》本专栏主要介绍目前热门的开源项目,带大家快速了解并轻松上手使用 ✨《开发技巧》本专栏包含了各种系统的设计原理以及注意事项,并分享一些日常开发的功能小技巧 💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程 🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整 🌞《Spring Security》专栏中我们将逐步深入Spring Security的各个技术细节,带你从入门到精通,全面掌握这一安全技术 如果文章能够给大家带来一定的帮助!欢迎关注、评

By Ne0inhk
惊了!用 JavaAI 撸电商核心功能,我从 “代码小白“ 变 “项目大神“,3 小时搞定别人 3 天的活

惊了!用 JavaAI 撸电商核心功能,我从 “代码小白“ 变 “项目大神“,3 小时搞定别人 3 天的活

惊了!用JavaAI撸电商核心功能,我从"代码小白"变"项目大神",3小时搞定别人3天的活(附完整流程+代码) 家人们谁懂啊!以前听说要做电商系统,我直接吓得关掉了IDEA——光是"商品管理"“订单流程”“购物车计算"这几个词,就够我啃一周文档。但自从用了JavaAI工具(我用的是飞算JavaAI,亲测好用),我发现开发居然能这么"躺平”:不用死磕SQL,不用纠结逻辑,甚至不用写重复代码,AI直接把"半成品"喂到嘴边,我只需要做"选择题"就行! 今天就带大家手把手用JavaAI开发电商3大核心模块:商品管理(上架/搜索/库存)、购物车(

By Ne0inhk

PptxGenJS终极指南:7个实用技巧教你用JavaScript一键生成专业PPT

PptxGenJS终极指南:7个实用技巧教你用JavaScript一键生成专业PPT 【免费下载链接】PptxGenJSCreate PowerPoint presentations with a powerful, concise JavaScript API. 项目地址: https://gitcode.com/gh_mirrors/pp/PptxGenJS 你是否曾经为制作重复的企业报告而烦恼?是否希望批量生成标准化的教育课件?或者想要通过代码自动化创建营销演示文稿?PptxGenJS正是解决这些痛点的完美方案。作为一款强大的JavaScript PPT生成库,它让前端开发者能够通过简洁的代码实现PowerPoint自动化创建,彻底告别手动制作的繁琐过程。 🤔 为什么你需要PptxGenJS? 在企业日常工作中,我们经常会遇到这些痛点场景: 重复性报告制作耗时费力 * 每月、每周都需要制作格式相同的业务报告 * 需要根据数据动态更新图表和内容 * 多部门协作时保持统一的品牌样式 批量课件制作效率低下 * 教师需要为不同班级制作相似的课件 * 培训部门

By Ne0inhk