2025最好的Dify入门到精通教程(上)
#作者:曹付江
文章目录
- 1. Dify 简介与应用场景
- 2. 本地安装部署(推荐使用 Docker)
- 2.1 安装 Docker & Docker Compose
- 3.快速搭建你的第一个 AI 应用
- 3.1 登录系统 & 配置模型提供商
- 3.2 创建应用(Chat 应用)
- 3.3 一个完整的 Dify 项目 Demo
这是一份 2025 年最新版的 Dify(开源 LLM 应用开发平台)从入门到精通教程,涵盖安装、配置、应用开发、插件/知识库接入、部署上线等完整流程,并配有详细实例,特别适合开发者、技术产品经理快速掌握 Dify 的核心能力。
0.Dify 是什么?
Dify 是一个开源的 大语言模型应用开发平台,支持基于 OpenAI、Azure OpenAI、Mistral、Moonshot、Claude 等模型构建 RAG、聊天机器人、Agent、问答系统等应用,零代码或低代码开发,并具备工作流、插件、知识库等能力。
1. Dify 简介与应用场景
- 核心定位:ChatGPT应用开发平台 + 数据增强 + 多模态支持
- 常见应用:
- 企业内部知识库问答
- 客服机器人(多轮对话)
- Agent 工具链(搜索+调用)
- AI写作工具(结合模板)
- 数据分析助手(对接 BI 系统)
2. 本地安装部署(推荐使用 Docker)
2.1 安装 Docker & Docker Compose
Bash:
# Ubuntu 举例
sudo apt update
sudo apt install -y docker.io docker-compose
2.2 获取 Dify 项目代码
git clone https://github.com/langgenius/dify.git
cd dify
2.3 启动 Dify(默认使用 SQLite)
Bash:
cp .env.example .env # 修改你的环境变量
docker compose -f docker-compose.yml up -d
浏览器访问:http://localhost:3000
默认端口:3000
3.快速搭建你的第一个 AI 应用
3.1 登录系统 & 配置模型提供商
进入管理后台:
- 登录后选择 “模型提供商”
- 添加 OpenAI Key(或 Moonshot、Azure 等)
- 保存并验证成功
3.2 创建应用(Chat 应用)
- 应用类型:Chat 应用
- 名称:产品问答助手
- 模型:GPT-4 / Claude 3
- Prompt 模板示例:
Txt:
你是一个产品文档助手,基于下方内容进行精准回答。
{{knowledge}}
问题:{{input}}
点击保存 → 启用应用 → 复制分享链接,测试使用!
3.3 一个完整的 Dify 项目 Demo
框架结构包括:
- 基础应用结构(以 Chat 应用为例)
- 配置模型、知识库和插件的初始化脚本
- 示例 Prompt、知识文档、插件定义
- Makefile 实现一键初始化
- 可选部署方式(Docker Compose)
项目结构:
dify-demo-project/
├── Makefile
├── README.md
├── .env.example
├── docker-compose.yml
├── init/
│ ├── prompt.txt
│ ├── knowledge/
│ │ └── product_faq.md
│ ├── plugins/
│ │ └── weather_plugin.json
│ └── init_script.py
├── dify_config/
│ ├── app_template.json
│ └── knowledge_config.json
内容说明:
Makefile 示例:
init:python3 init/init_script.py
run:docker compose up -d
stop:docker compose down
docker-compose.yml(简化版本):
version: '3'
services:web:image: langgenius/dify:latestports:- "3000:3000"env_file:- .envvolumes:- ./dify_config:/app/config
.env.example:
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxx
CONSOLE_DOMAIN=http://localhost:3000
示例 :Prompt(init/prompt.txt):
你是一个产品知识专家,以下是你参考的知识内容:
{{knowledge}}
请根据用户的问题提供准确、简洁的答案。
问题:{{input}}
示例知识文档(init/knowledge/product_faq.md):
## 产品常见问题
### 问:如何重置密码?
答:点击登录页面的“忘记密码”,填写邮箱进行重置。
### 问:是否支持导出数据?
答:支持导出 CSV 文件,点击页面右上角导出按钮即可。
插件定义(init/plugins/weather_plugin.json):
{"name": "get_weather","description": "查询指定城市天气","parameters": {"type": "object","properties": {"city": { "type": "string", "description": "城市名称" }},"required": ["city"]}
}
初始化脚本(init/init_script.py):
使用 Python 脚本 + requests 自动上传 Prompt、知识库和插件,需提前填写 .env 文件。
Python:
import os
import requests
API_BASE = os.environ.get("CONSOLE_DOMAIN", "http://localhost:3000")
def create_app():with open("init/prompt.txt") as f:prompt = f.read()payload = {"name": "产品问答助手","description": "基于知识库的产品问题解答","prompt": prompt,"model": "gpt-4",}r = requests.post(f"{API_BASE}/api/apps", json=payload)print("应用创建:", r.status_code, r.json())
def upload_knowledge():files = {'file': open("init/knowledge/product_faq.md", 'rb')}r = requests.post(f"{API_BASE}/api/knowledge/upload", files=files)print(" 知识上传:", r.status_code)
def upload_plugin():with open("init/plugins/weather_plugin.json") as f:plugin = f.read()r = requests.post(f"{API_BASE}/api/plugins/upload", data=plugin)print("插件上传:", r.status_code)
if __name__ == '__main__':create_app()upload_knowledge()upload_plugin()
快速开始命令:
Bash:
# 1. 克隆并进入目录
git clone https://github.com/yourname/dify-demo-project.git
cd dify-demo-project
# 2. 配置 .env
cp .env.example .env
# 编辑 OPENAI_API_KEY 等
# 3. 启动 Dify
make run
# 4. 初始化示例应用 + 插件 + 知识库
make init
# 5. 浏览器访问
http://localhost:3000