当前位置: 首页 > news >正文

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
http://www.dtcms.com/a/315136.html

相关文章:

  • 微服务的编程测评系统10-竞赛删除发布-用户管理-登录注册
  • 县级融媒体中心备份与恢复策略(精简版3-2-1架构)
  • 【网络安全】不安全的反序列化漏洞
  • P1550 [USACO08OCT] Watering Hole G
  • 【达梦MPP(带主备)集群搭建】
  • python包管理器uv踩坑
  • Golang中的`io.Copy()`使用场景
  • Java 的 APT(Annotation Processing Tool)机制详解
  • 【MyBatis-Plus笔记】MyBatis-Plus详解
  • JuiceFS on Windows: 首个 Beta 版的探索与优化之路
  • 【多智能体cooragent】CoorAgent 系统中 5 个核心系统组件分析
  • 【笔记】ROS1|3 Turtlebot3汉堡Burger建SLAM地图并导航【旧文转载】
  • 数学 理论
  • 基于FAISS和Ollama的法律智能对话系统开发实录-【大模型应用班-第5课 RAG技术与应用学习笔记】
  • Fastapi文件上传那些事?
  • 浅谈 Python 中的 next() 函数 —— 迭代器的驱动引擎
  • MCP进阶:工业协议与AI智能体的融合革命
  • Neat Converter电子书格式转换工具,支持ePub、Azw3、Mobi、Doc、PDF、TXT相互转换,完全免费
  • 龙虎榜——20250804
  • numpy数组拼接 - np.concatenate
  • VPS云服务器Linux性能分析与瓶颈解决方案设计
  • java获取文件编码格式,然后读取此文件,适用于任何格式的文件。
  • 面试题:怎么理解3 次握手与 4 次挥手:TCP 连接的建立与终止
  • 【Unity3D】Shader圆形弧度裁剪
  • 思途Spring学习 0804
  • Unity 实现手机端和电脑项目在局域网内通信
  • 【推荐100个unity插件】Unity 的 Hot Reload 热重载实现,加快unity程序编译速度——FastScriptReload插件
  • MySQL InnoDB 表数据结构存储方式详解
  • pathspec ‘with_def_layout‘ did not match any file(s) known to git`
  • Vue 详情header组件