MAC 本地搭建Dify环境

Dify 介绍

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎以及灵活的 Agent 框架,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

  Clone Dify 代码:

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

前端环境搭建

安装nodejs

Web 前端服务启动需要用到 Node.js v18.x (LTS) 、NPM 版本 8.x.x 或 Yarn。选择对应操作系统的 v18.x 以上的安装包下载并安装,建议 stable 版本,已自带 NPM。

详见Mac 安装Nodejs

启动步骤

(1)进入 web 目录 cd web
(2)安装依赖包 npm install


(3)配置环境变量。在当前目录下/web下创建文件 .env.local,并复制.env.example中的内容
(4)构建代码 npm run build


(5)启动 web 服务 npm run start


(6)访问:访问 http://127.0.0.1:3000

后端环境搭建

环境准备

Operating SystemSoftwareDescription

macOS 10.14 or later

Docker Desktop

Set the Docker Virtual Machine (VM) to use at least 2 virtual CPUs (vCPU) and 8 GB of initial memory. Otherwise, the installation may fail. For more information, see Install Docker Desktop on Mac.

Linux platforms

Docker 19.03 or later Docker Compose 1.25.1 or later

请参阅安装 Docker 和安装 Docker Compose 以获取更多信息。

Windows with WSL 2 enabled

Docker Desktop

我的操作系统是mac,直接进行Docker Desktop安装即可。

安装Docker 

Docker Desktop 下载安装即可。

安装Docker之后进行版本验证

(base) % docker-compose -versiondocker-compose version 1.29.2, build 5becea4c(base) % docker --versionDocker version 20.10.7, build f0df350

Anaconda 安装

详见MAC 安装miniconda

# 创建名为 dify 的 Python 3.10 环境
conda create --name dify python=3.10
# 切换至 dify Python 环境
conda activate dify

Python 3.10.x 安装

有些mac出厂自带python,但是版本可能不是最新的,大家可以试试自己的Mac,测试步骤是:(1)打开terminal终端(2)输入命令:python或者python3,如果出现python的版本号则代表已经安装,但还是推荐大家进行更新,无需卸载旧版本,直接安装新版本即可

Download Python | Python.org

Git 安装

brew install git

验证 git version,显示版本号就说明安装成功了。

git version
git version 2.39.3 (Apple Git-146)

 PostgreSQL 安装

1.安装命令:brew install postgresql

brew install postgresql

2. 检查是否安装成功 brew list

% brew list
==> Formulae
abseil			krb5			pcre2
aws-elasticbeanstalk	libiconv		postgresql@14
brotli			libmagic		protobuf
c-ares			libnghttp2		protobuf-c
ca-certificates		libuv			python@3.10
certifi			libyaml			python@3.11
clamav			lz4			readline
gdbm			mc			redis
gradle			mpdecimal		sqlite
icu4c			node			xz
jansson			openjdk			yara
json-c			openssl@1.1
jsoncpp			openssl@3==> Casks
jd-gui		table-tool

3. 启动 brew services start postgresql

% brew services start postgresql
Warning: Formula postgresql was renamed to postgresql@14.
==> Successfully started `postgresql@14` (label: homebrew.mxcl.postgresql@14)

4. 检查是否启动成功  brew services list

% brew services list
Name          Status  User File
clamav        none         
postgresql@14 started rsun ~/Library/LaunchAgents/homebrew.mxcl.postgresql@14.plist
redis         started rsun ~/Library/LaunchAgents/homebrew.mxcl.redis.plist

5. 初始化数据库

initdb /usr/local/var/postgres

6. 创建user

createuser -s postgres

Redis 安装

1.安装 brew install redis

2. 启动Redis  brew services start redis

% brew services start redis
Service `redis` already started, use `brew services restart redis` to restart.

启动DIfy后端

1.进入 api 目录 cd api

2. 复制环境变量配置文件
cp .env.example .env

3. 生成随机密钥,并替换 .env 中 SECRET_KEY 的值
openssl rand -base64 42
vim .env 打开 .env文件,修改SECRET_KEY=新生成的key

4. 安装依赖包  pip3 install -r requirements.txt

5. 执行数据库迁移将数据库结构迁移至最新版本
flask db upgrade

 flask db upgrade  * Tip: There are .env or .flaskenv files present. Do "pip install python-dotenv" to use them.
Error: While importing 'app', an ImportError was raised:Traceback (most recent call last):File "/Users/rsun/miniconda3/lib/python3.12/site-packages/flask/cli.py", line 245, in locate_app__import__(module_name)File "/Users/rsun/software/dify-main/api/app.py", line 6, in <module>from gevent import monkey
ModuleNotFoundError: No module named 'gevent'

解决办法:

pip install -U --force-reinstall --no-binary :all: gevent

6. 启动 API 服务
flask run --host 0.0.0.0 --port=5001 --debug

7. 启动 worker 服务

用于消费异步队列任务,如数据集文件导入、更新数据集文档等异步操作。 MacOS 启动:

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

总结

以上为本地源码部署启动的Dify方式。

下次进入Dify方法

启动:

1. conda activate dify

2. Redis: brew services restart redis

3. Postgresql: brew services start postgresql

4.后端程序:

cd api目录

flask run --host 0.0.0.0 --port=5001 --debug

4.前端程序:

cd web目录

启动 web 服务 npm run start

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/659751.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【VueUse】超越基本功能的高级 Vue 元素操作

在vue开发中我们经常需要操作DOM元素&#xff0c;从简单的添加类到动态创建元素&#xff0c;这些操作都是不可避免的。而在VueUse库中&#xff0c;Elements相关API函数为我们提供了一系列强大而灵活的工具&#xff0c;帮助我们更轻松地处理DOM元素。无论是优雅地处理元素、动态…

Three.js 的优势

Three.js 是一个非常流行的基于 WebGL 的 JavaScript 库&#xff0c;用于在浏览器中创建和展示 3D 内容。以下是 Three.js 的一些主要优势&#xff0c;这些优势使得 Three.js 成为创建和展示 3D 内容的强大工具&#xff0c;无论是对于初学者还是经验丰富的开发者。北京木奇移动…

如何在Linux上安装Python?2024Python安装教程

在Linux上安装Python并不难&#xff0c;对于Ubuntu或Debian系统&#xff0c;使用命令sudo apt install python3&#xff1b;对于CentOS、Red Hat或Fedora系统&#xff0c;使用命令sudo yum install python3。 如何在Linux上安装Python&#xff1f; 确切的安装步骤有所不同&am…

【Qt】C1060 堆空间不足

原因 搜索之后发现可能是因为 Qt添加大量资源文件,编译时就会出现内存溢出。 但很奇怪之前编译好好的&#xff0c;突然报这个错。&#xff08;卸载qt重装后&#xff09; 解决 报错提示的类文件所在的根目录的.pro文件中添加 CONFIG resources_big

Python来计算 1,2,3,4 能组成多少个不相同且不重复的三位数?

我们今天的例子是 有 1&#xff0c;2&#xff0c;3&#xff0c;4 四个数字&#xff0c;它们能组成多省个互不相同且无重复的三位数&#xff1f;都分别是多少&#xff1f; 话不多说&#xff0c;我们先上代码 num 0 # 我们写了三个for循环&#xff0c;表示生成的三位数 for i…

浏览器预加载器如何使页面加载速度更快

预加载器&#xff08;也称为推测或前瞻预解析器&#xff09;可能是浏览器性能有史以来最大的改进。 那么什么是预加载器以及它如何提高性能呢&#xff1f; 浏览器如何加载网页 网页充满了依赖关系——在下载相关的CSS之前页面无法开始渲染&#xff0c;然后当遇到脚本时HTML解…

04 Docker练习赛从0开始到 docker 镜像提交

1.1 本地安装 docker 工具 这里以ubutun下安装docker为例,其他操作系统安装命令略有不同,可自行百度。(建议使用阿里源安装速度快) sudo apt install docker.io如果你本地有gpu,请继续执行如下命令以支持gpu调用: 注意: 英伟达对 docker 支持的 linux 发行版:https:/…

springcloud微服务搭建多数据源(mysql,oracle,postgres,等等)管理模块,支持通过注解方式切换不同类型的数据库

1.背景 同一套微服务管理系统&#xff0c;业务完全一样&#xff0c;但不同的客户可能要求使用自己熟悉的数据库&#xff0c;比如&#xff0c;mysql&#xff0c;oracle&#xff0c;postgres&#xff0c;还有一些国产数据库。如果能够将数据库模块独立出来&#xff0c;兼容各家的…

前端发起网络请求的几种常见方式(XMLHttpRequest、FetchApi、jQueryAjax、Axios)

摘要 前端发起网络请求的几种常见方式包括&#xff1a; XMLHttpRequest (XHR)&#xff1a; 这是最传统和最常见的方式之一。它允许客户端与服务器进行异步通信。XHR API 提供了一个在后台发送 HTTP 请求和接收响应的机制&#xff0c;使得页面能够在不刷新的情况下更新部分内容…

[C++][算法基础]最大不相交区间数量(贪心 + 区间问题2)

给定 &#x1d441; 个闭区间 [&#x1d44e;&#x1d456;,&#x1d44f;&#x1d456;]&#xff0c;请你在数轴上选择若干区间&#xff0c;使得选中的区间之间互不相交&#xff08;包括端点&#xff09;。 输出可选取区间的最大数量。 输入格式 第一行包含整数 &#x1d4…

一、OSPF基础

目录 1.路由协议的优先级 2.转发原则&#xff1a;最长匹配原则 3.负载分担 4.路由备份&#xff08;浮动路由&#xff09; 5.路由协议的分类 6.动态路由 7.距离矢量路由协议&#xff08;BGP&#xff0c;RIP&#xff09; 8.链路状态路由协议&#xff08;OSPF&#xff0c;I…

基于SpringBoot+Vue养老院管理系统设计与实现

一、前言介绍 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装养老院管理系统软件来发挥其高效地信息处理的作用&am…