从零开始学AI - MacOS Dify源码本地部署安装

713 阅读2分钟

前言

Dify MacOS 系统环境搭建

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

MacOS系统确保系统已安装以下工具:

  • Homebrew(包管理工具)
  • Python 3.12+poetry
  • Node.js v18.x (LTS) 和 NPM version 8.x.x 或 Yarn
  • Docker Desktop(用于运行数据库和 Redis)
  • Git

官方说明文档:README_CN.md

官方api:地址

1. 安装 Homebrew(若未安装)

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. 安装 Python(若未安装)

确保使用 python3 和 pip3

2.1 安装pyenv(若未安装)

brew update 
brew install pyenv 
pyenv -v

2.2 安装python3.12 (若未安装)

pyenv install 3.12
pyenv versions
pyenv global 3.12
pyenv versions

# DifyAPI 服务使用poetry来管理依赖项
brew install pipx
# 配置环境变量
pipx ensurepath
source ~/.zshrc
source ~/.bashrc
pipx install poetry

3. 安装 Docker Desktop

docs.docker.com/desktop/set…

image.png

4. 克隆 Dify 仓库

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

5. 后端配置与启动

5.1 首先部署 PostgreSQL/Redis/Weaviate

cd docker 
cp middleware.env.example middleware.env
docker compose -f docker-compose.middleware.yaml up -d

image.png

5.2 服务端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


# poetry 初始化
poetry env use 3.12
# 安装依赖包  很重要!!
poetry install 

# 安装 `shell` 插件
poetry self add poetry-plugin-shell


poetry env info
# 激活虚拟环境
poetry shell 
# 执行数据库迁移到最新版本 很重要记得执行!!
flask db upgrade
# 启动 API 服务器
flask run --host 0.0.0.0 --port=5001 --debug

image.png

5.3 启动 Worker 服务

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

image.png

6. 前端配置与启动

6.1 环境配置

要启动 Web 前端服务,您需要 Node.js v18.x (LTS) 和 NPM 版本 8.x.x 或 Yarn。

请访问 nodejs.org/en/download 并选择适用于您各自作系统的 v18.x 或更高版本的安装包。建议下载稳定版本,默认包含 NPM。

6.2 安装依赖项

# 进入 Web 目录
cd web

# 安装依赖项。
npm install

6.3 配置环境变量

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

# 对于生产版本,将其更改为 PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# 部署版本,SELF_HOSTED 或 CLOUD
NEXT_PUBLIC_EDITION=SELF_HOSTED
# 控制台应用程序的基本 URL,如果控制台域不同于 api 或 Web 应用程序,则指 WEB 服务的控制台基本 URL。
# 示例:http://cloud.dify.ai/console/api
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
# Web APP 的 URL,如果 Web 应用程序域不同于控制台或 api ,则指 WEB 服务的 Web 应用程序基本 URL。
# 示例:http://udify.app/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_SENTRY_ORG=
NEXT_PUBLIC_SENTRY_PROJECT=

6.4 构建代码

npm run build

6.5 启动Web服务

npm run start
# or
yarn start
# or
pnpm start

7. 访问 Dify

最后,访问 http://127.0.0.1:3000 以使用本地部署的 Dify。