目录导航
一、Dify 简介与核心特性
Dify(全称 Dify.ai)是一个开源的大语言模型(LLM)应用开发平台,由国际团队于 2023 年发布。它提供了一个可视化的界面,让用户无需编写大量代码即可快速构建、部署和管理 AI 应用。Dify 支持多种主流的大语言模型,包括 OpenAI GPT 系列、Google Gemini、Anthropic Claude、以及开源的 Llama、Qwen、DeepSeek 等模型,用户可以根据需求灵活选择和切换模型。
Dify 的设计理念是将 AI 应用的开发流程可视化、模块化、低代码化。通过拖拽式的界面,用户可以组合不同的功能模块,构建复杂的 AI 工作流。无论是简单的聊天机器人,还是多步骤的自动化任务处理系统,Dify 都能提供高效的支持。平台还提供了完整的 API 接口,方便开发者将 AI 能力集成到现有的业务系统中。
1.1 核心特性概览
| 特性 | 说明 | 适用场景 |
|---|---|---|
| 可视化编排 | 拖拽式工作流设计器,无需编程即可构建复杂 AI 应用 | 快速原型、业务自动化 |
| 多模型统一接入 | 支持 OpenAI、Claude、Gemini、DeepSeek、Qwen 等 50+ 模型 | 模型对比、成本控制 |
| RAG 知识库 | 内置文档解析、向量化、检索增强生成能力 | 企业知识问答、客服机器人 |
| Agent 智能体 | 支持工具调用、多 Agent 协作、自主规划 | 复杂任务自动化 |
| API 优先 | 完整的 RESTful API,支持 Webhook 和 SDK | 系统集成、二次开发 |
| 多租户管理 | 团队权限、工作区隔离、使用量统计 | 企业级部署 |
1.2 系统架构说明
Dify 采用微服务架构设计,主要包含以下核心服务模块:
- API Service:提供对外 RESTful API 接口,处理客户端请求
- Worker Service:后台任务处理,包括文档解析、向量化、工作流执行等
- Web Frontend:基于 React 构建的 Web 管理界面
- PostgreSQL:主数据库,存储用户、应用、配置等核心数据
- Redis:缓存层,用于会话管理、任务队列和速率限制
- Vector Database:支持 Weaviate、Qdrant、Chroma 等多种向量数据库
- Object Storage:支持 MinIO、S3、Azure Blob 等对象存储服务
提示:Dify 支持两种部署模式:单机版(Docker Compose)适合个人和小团队快速上手;集群版(Kubernetes)适合企业级高可用部署。本教程以单机版为主,集群版配置将在后续文章中介绍。
二、环境准备
在开始安装 Dify 之前,需要确保你的服务器或本地环境满足以下基本要求。Dify 推荐使用 Docker 进行部署,这样可以最大程度地避免环境依赖问题,确保安装过程顺利。
2.1 Docker 环境安装
Docker 是 Dify 部署的基础环境。如果你还没有安装 Docker,可以按照以下步骤进行安装:
安装 Docker Engine
对于 Ubuntu/Debian 系统,可以使用官方脚本一键安装:
# Ubuntu / Debian 系统
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# CentOS / RHEL 系统
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
docker --version
docker compose version
安装 Docker Compose
Docker Compose 是 Dify 部署的核心工具,用于管理多容器应用。Docker Desktop 通常自带 Compose,如果是单独安装的 Docker Engine,需要额外安装 Compose。
# 下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
2.2 系统资源要求
| 资源类型 | 最低要求 | 推荐配置 | 说明 |
|---|---|---|---|
| CPU | 2 核心 | 4 核心+ | 文档处理和向量化需要较多 CPU 资源 |
| 内存 | 4 GB | 8 GB+ | 向量数据库和模型推理需要较大内存 |
| 磁盘 | 10 GB | 20 GB+ | 包含 Docker 镜像、数据库和向量索引 |
| 网络 | 5 Mbps | 10 Mbps+ | 需要访问外部模型 API 和下载镜像 |
| 操作系统 | Linux 5.0+ | Ubuntu 22.04+ | 也支持 macOS 和 Windows(通过 Docker Desktop) |
如果你的服务器位于中国大陆,Docker 镜像拉取可能会比较慢。建议使用阿里云或腾讯云的 Docker 镜像加速器,或者使用国内镜像源。可以在 Docker 的 daemon.json 中配置镜像加速地址,将 registry-1.docker.io 替换为国内镜像地址。
三、Dify 安装部署
环境准备完成后,就可以开始安装 Dify 了。Dify 官方推荐使用 Docker Compose 进行部署,这种方式最简单、最稳定,适合大多数用户。整个安装过程大约需要 10-30 分钟,具体时间取决于你的网络速度和服务器性能。
3.1 克隆代码仓库
从 GitHub 克隆 Dify 仓库
首先,我们需要从 Dify 的官方 GitHub 仓库克隆最新代码到本地服务器。建议使用最新的稳定版本,以确保获得最好的功能和安全性。
# 创建目录并克隆仓库
mkdir -p /opt/dify
cd /opt/dify
# 克隆最新稳定版
git clone https://github.com/langgenius/dify.git
cd dify/docker
# 查看当前版本
git log --oneline -3
复制环境变量配置文件
Dify 使用 .env 文件来管理所有配置项。我们需要从模板文件复制一份,然后根据实际需求进行修改。
# 复制环境变量模板
cp .env.example .env
# 查看配置文件内容
cat .env | head -30
3.2 Docker Compose 部署
修改关键配置项
在启动 Dify 之前,需要先修改 .env 文件中的几个关键配置项。这些配置决定了 Dify 的基本运行参数和安全设置。
# 编辑 .env 文件
nano .env
# 需要修改的关键配置项:
# ===== 基础配置 =====
# 时区设置(建议设置为 Asia/Shanghai)
TIMEZONE=Asia/Shanghai
# ===== 安全配置 =====
# 密钥(必须修改为随机字符串,长度至少 32 位)
SECRET_KEY=your-random-secret-key-here-at-least-32-characters
# ===== 数据库配置 =====
# PostgreSQL 密码(必须修改)
POSTGRES_PASSWORD=your-secure-postgres-password
# ===== 缓存配置 =====
# Redis 密码(必须修改)
REDIS_PASSWORD=your-secure-redis-password
# ===== 对象存储配置 =====
# 使用本地存储(默认)
STORAGE_TYPE=local
# ===== 向量数据库配置 =====
# 使用 Weaviate(默认)
VECTOR_STORE=weaviate
启动 Dify 服务
配置完成后,使用 Docker Compose 启动所有服务。首次启动会拉取所有 Docker 镜像,这个过程可能需要几分钟时间。
# 启动所有服务(后台运行)
docker compose up -d
# 查看启动日志
docker compose logs -f
# 查看服务状态
docker compose ps
3.3 验证安装成功
等待所有服务启动完成后,可以通过以下方式验证 Dify 是否安装成功:
# 查看所有服务状态
docker compose ps
# 预期输出:所有服务状态为 Up
NAME STATUS
dify-api-1 Up
dify-worker-1 Up
dify-web-1 Up
dify-db-1 Up
dify-redis-1 Up
dify-weaviate-1 Up
dify-sandbox-1 Up
dify-ssrf-1 Up
# 查看 API 服务日志
docker compose logs -f api
# 验证数据库连接
docker compose exec api python -c "
from configs import dify_config
print('Database URL:', dify_config.DATABASE_URL)
print('Redis URL:', dify_config.REDIS_URL)
"
当所有服务状态显示为 Up,且浏览器访问 http://localhost:80 能看到 Dify 的欢迎页面时,说明安装成功。首次访问会提示你注册管理员账号,注册后即可开始使用。
四、核心配置详解
安装完成后,Dify 已经可以基本使用了,但要充分发挥其功能,还需要进行一些核心配置。这些配置主要包括 API 密钥设置、模型接入、数据库优化等。正确的配置不仅能提升系统性能,还能确保数据安全和合规性。
4.1 API 密钥配置
Dify 本身不运行大语言模型,而是通过 API 调用外部模型服务。因此,配置 API 密钥是使用 Dify 的关键步骤。Dify 支持多种模型提供商,每种提供商的 API 密钥配置方式略有不同。
OpenAI API 配置
OpenAI 是最常用的模型提供商,支持 GPT-3.5、GPT-4、GPT-4o 等模型。配置步骤如下:
# 1. 登录 OpenAI 平台获取 API Key
# 访问:https://platform.openai.com/api-keys
# 2. 在 Dify 后台配置
# 路径:设置 → 模型提供商 → OpenAI
# 3. 填写配置信息
API Base URL: https://api.openai.com/v1
API Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx
Models: gpt-4o, gpt-4-turbo, gpt-3.5-turbo
国产模型 API 配置
对于国内用户,推荐使用国产大模型 API,如 DeepSeek、智谱 GLM、百度文心一言等。这些模型通常提供更低的延迟和更好的中文支持。
# DeepSeek API 配置
API Base URL: https://api.deepseek.com/v1
API Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx
Models: deepseek-chat, deepseek-coder
# 智谱 GLM API 配置
API Base URL: https://open.bigmodel.cn/api/paas/v4
API Key: xxxxxxxxxxxxxxxxxxxxxxxxxx
Models: glm-4, glm-4-flash
# 阿里通义千问 API 配置
API Base URL: https://dashscope.aliyuncs.com/compatible-mode/v1
API Key: sk-xxxxxxxxxxxxxxxxxxxxxxxx
Models: qwen-max, qwen-plus, qwen-turbo
自建模型 API 配置
如果你有自己的模型服务(如通过 vLLM、Ollama 部署的开源模型),也可以将其接入 Dify。这需要使用 OpenAI 兼容的 API 格式。
# Ollama 本地模型配置
# 首先启动 Ollama 服务
ollama serve
# 拉取模型
ollama pull qwen2.5:7b
# 在 Dify 中配置
API Base URL: http://localhost:11434/v1
API Key: ollama(任意值)
Models: qwen2.5:7b
4.2 模型接入配置
在 Dify 中配置模型后,还需要在应用中使用这些模型。Dify 提供了灵活的模型配置界面,可以为每个应用单独设置模型参数。
| 配置项 | 说明 | 推荐值 |
|---|---|---|
| 模型 | 选择要使用的大语言模型 | 根据任务选择,写作用 GPT-4o,代码用 Claude |
| Temperature | 控制输出的随机性,0-2 之间 | 创作类 0.7-1.0,分析类 0.1-0.3 |
| Top P | 核采样参数,0-1 之间 | 通常 0.8-0.95 |
| 最大 Token | 限制输出长度 | 根据任务需求,通常 1024-4096 |
| 系统提示词 | 设定 AI 的角色和行为 | 根据应用场景定制 |
4.3 数据库配置
Dify 使用 PostgreSQL 作为主数据库,Redis 作为缓存层。在生产环境中,建议对数据库进行适当的优化配置,以提升系统性能和稳定性。
# PostgreSQL 优化配置(在 docker-compose.yml 中)
services:
db:
environment:
POSTGRES_DB: dify
POSTGRES_USER: postgres
POSTGRES_PASSWORD: your-secure-password
volumes:
- ./data/postgres:/var/lib/postgresql/data
# 优化参数
command:
- "postgres"
- "-c"
- "shared_preload_libraries=pg_stat_statements"
- "-c"
- "max_connections=200"
- "-c"
- "shared_buffers=256MB"
# Redis 优化配置
services:
redis:
command:
- "redis-server"
- "--requirepass"
- "your-secure-password"
- "--maxmemory"
- "512mb"
- "--maxmemory-policy"
- "allkeys-lru"
生产环境中,务必修改所有默认密码,包括 PostgreSQL、Redis、MinIO 等服务的密码。建议使用强密码生成器生成随机密码,并将密码存储在安全的密钥管理系统中。同时,建议启用 HTTPS 加密传输,防止数据泄露。
五、创建第一个 AI 应用
配置完成后,我们就可以开始创建 AI 应用了。Dify 支持多种应用类型,包括对话应用、工作流应用、Agent 智能体等。本教程将重点介绍对话应用和工作流应用的创建方法。
5.1 创建对话应用
对话应用是最简单的 AI 应用类型,适合聊天机器人、问答系统等场景。创建过程非常简单,只需几步即可完成:
创建应用
登录 Dify 后台,点击「创建应用」按钮,选择「对话应用」类型。输入应用名称和描述,选择要使用的模型。
配置系统提示词
系统提示词决定了 AI 的行为和角色。一个良好的系统提示词应该包含:角色定义、行为准则、输出格式要求等。以下是一个示例:
# 示例:代码助手系统提示词
你是一个专业的代码助手,擅长 Python、JavaScript、Java 等编程语言。
行为准则:
1. 代码简洁、高效、易读
2. 提供完整的代码示例
3. 解释关键代码逻辑
4. 指出潜在的优化点
输出格式:
- 使用 Markdown 格式
- 代码块标注语言类型
- 关键逻辑用注释说明
添加知识库
如果需要让 AI 基于特定文档回答问题,可以添加知识库。Dify 支持多种文档格式,包括 PDF、Word、Markdown、HTML 等。上传文档后,Dify 会自动进行解析、分块和向量化。
测试与发布
配置完成后,可以在后台直接测试应用。测试满意后,点击「发布」按钮,应用即可通过 Web 界面或 API 访问。
5.2 创建工作流应用
工作流应用适合需要多步骤处理的复杂任务,如文档分析、数据提取、内容生成等。Dify 提供了可视化的工作流设计器,通过拖拽节点即可构建复杂的工作流。
工作流的核心优势在于可组合性。每个节点都是一个独立的功能模块,可以灵活组合。Dify 内置了丰富的节点类型,包括 LLM 节点、条件判断节点、代码执行节点、HTTP 请求节点、知识库检索节点等。通过合理组合这些节点,可以构建出功能强大的自动化工作流。
六、API 集成与调用
Dify 提供了完整的 RESTful API 接口,方便开发者将 AI 能力集成到现有的业务系统中。API 支持多种认证方式,包括 API Key 和 JWT Token。以下是常见的 API 调用示例:
获取 API Key
在 Dify 后台,进入应用详情页,点击「API 访问」标签页,即可获取该应用的 API Key。每个应用可以生成多个 API Key,方便不同环境使用。
# 对话应用 API 调用示例
curl -X POST "https://your-dify-domain/v1/chat-messages" \
-H "Authorization: Bearer APP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"inputs": {},
"query": "请帮我写一个 Python 函数",
"response_mode": "streaming",
"user": "user-123"
}'
# 工作流应用 API 调用示例
curl -X POST "https://your-dify-domain/v1/workflows/run" \
-H "Authorization: Bearer APP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"inputs": {
"document": "上传的文档内容"
},
"response_mode": "blocking",
"user": "user-123"
}'
Python SDK 集成
Dify 提供了官方 Python SDK,可以更方便地在 Python 项目中集成 Dify 的 AI 能力:
# 安装 SDK
pip install dify-client
# 使用示例
from dify_client import DifyClient
client = DifyClient(api_key="your-api-key", base_url="https://your-dify-domain")
# 发送消息
response = client.chat.messages.create(
inputs={},
query="请帮我分析这份文档",
response_mode="streaming",
user="user-123"
)
# 处理流式响应
for chunk in response:
print(chunk, end="", flush=True)
Webhook 集成
Dify 支持 Webhook 回调,可以将 AI 处理结果实时推送到你的业务系统。在应用设置中配置 Webhook URL,Dify 会在任务完成后发送 HTTP POST 请求。
# Webhook 回调示例(Node.js)
app.post('/dify-webhook', (req, res) ==> {
const { type, data } = req.body;
if (type === 'message') {
// 处理 AI 回复消息
console.log('AI 回复:', data.answer);
} else if (type === 'workflow-finished') {
// 处理工作流完成事件
console.log('工作流结果:', data.outputs);
}
res.status(200).send('OK');
});
七、最佳实践与常见问题
7.1 性能优化建议
- 模型选择:根据任务复杂度选择合适的模型。简单任务使用轻量模型(如 GPT-3.5、Qwen-Turbo),复杂任务使用强大模型(如 GPT-4o、Claude-3.5)。
- 提示词优化:编写清晰、具体的系统提示词,减少 AI 的推理负担,提升响应速度和准确性。
- 缓存策略:对于重复性问题,可以启用缓存功能,减少 API 调用次数,降低成本。
- 并发控制:合理设置并发请求数,避免超过模型 API 的速率限制。
- 文档分块:上传知识库文档时,合理设置分块大小和重叠度,平衡检索精度和效率。
7.2 安全最佳实践
- API Key 保护:不要在客户端代码中硬编码 API Key,使用环境变量或密钥管理服务存储。
- HTTPS 加密:生产环境务必启用 HTTPS,防止数据传输过程中的窃听和篡改。
- 访问控制:为不同用户设置不同的权限,限制对敏感应用的访问。
- 日志审计:启用操作日志,记录所有 API 调用和应用访问记录,便于安全审计。
- 定期更新:保持 Dify 版本更新,及时修复安全漏洞。
7.3 常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 服务启动失败 | 端口冲突、内存不足 | 检查端口占用,增加内存限制 |
| 模型调用超时 | 网络问题、API 限流 | 检查网络连通性,降低并发数 |
| 知识库检索不准确 | 文档质量差、分块不当 | 优化文档格式,调整分块参数 |
| 工作流执行失败 | 节点配置错误、依赖缺失 | 检查节点配置,查看执行日志 |
| 数据库连接失败 | 密码错误、网络不通 | 检查 .env 配置,验证网络连通性 |
遇到问题时,建议按照以下步骤排查:1)查看 Docker 容器日志(docker compose logs -f);2)检查服务状态(docker compose ps);3)验证网络连通性(curl 测试 API);4)查看 Dify 后台的日志和监控面板。大多数问题都可以通过日志定位。
7.4 扩展与进阶
掌握基础配置后,可以探索 Dify 的更多高级功能:
- 自定义工具:通过 API 节点集成第三方服务,扩展 AI 能力边界
- 多 Agent 协作:创建多个 Agent,让它们协同完成复杂任务
- 插件开发:开发自定义插件,扩展 Dify 的功能
- 企业级部署:使用 Kubernetes 部署高可用集群
- 模型微调:使用 Dify 的数据导出功能,进行模型微调