Dify 低代码平台入门与实战指南


一、Dify 概述

1.1 什么是 Dify

Dify:一款开源的 LLM 应用开发平台,提供可视化编排、知识库管理、API 发布等功能,帮助开发者快速构建 AI 应用。

核心价值

  • 低代码开发:可视化拖拽,无需编写复杂代码
  • 全流程管理:从 Prompt 设计到 API 发布一站式完成
  • 团队协作:支持多用户协作和版本管理
  • 灵活部署:支持云服务和本地部署

1.2 Dify 架构

┌─────────────────────────────────────────────────────────────┐
│                     Dify 架构                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐ │
│    │   Web UI     │    │   API Server │    │   Worker     │ │
│    │   (前端界面)   │    │   (API服务)   │    │   (任务队列)   │ │
│    └──────┬───────┘    └──────┬───────┘    └──────┬───────┘ │
│           │                   │                   │         │
│           └───────────────────┼───────────────────┘         │
│                               ↓                             │
│    ┌──────────────────────────────────────────────────────┐ │
│    │              核心服务层                               │ │
│    │  ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐        │ │
│    │  │ Prompt │ │  RAG   │ │  Agent │ │  Tool  │        │ │
│    │  │ Engine │ │ Engine │ │ Engine │ │ Engine │        │ │
│    │  └────────┘ └────────┘ └────────┘ └────────┘        │ │
│    └──────────────────────────────────────────────────────┘ │
│                               │                             │
│           ┌───────────────────┼───────────────────┐         │
│           ↓                   ↓                   ↓         │
│    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐ │
│    │  PostgreSQL  │    │   Redis      │    │  Vector DB   │ │
│    │   (元数据)    │    │   (缓存)      │    │  (向量数据)   │ │
│    └──────────────┘    └──────────────┘    └──────────────┘ │
│                                                             │
└─────────────────────────────────────────────────────────────┘

1.3 Dify 版本对比

版本特点适用场景
Dify Cloud托管服务,开箱即用快速原型、小型项目
Dify Self-hosted本地部署,数据可控企业级应用、隐私敏感场景
Dify Pro高级功能,支持 SSO大型团队、企业应用

二、安装部署

2.1 系统要求

组件最低配置推荐配置
CPU4核8核以上
内存8GB16GB以上
存储50GB100GB以上
网络稳定网络公网可访问

2.2 Docker 部署(推荐)

步骤 1:安装 Docker 和 Docker Compose

# Ubuntu/Debian
sudo apt update
sudo apt install docker.io docker-compose-plugin

# CentOS/RHEL
sudo yum install docker docker-compose-plugin

# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker

步骤 2:下载 Dify 配置

mkdir -p /opt/dify && cd /opt/dify
curl -fsSL https://github.com/langgenius/dify/releases/latest/download/docker-compose.yml -o docker-compose.yml

步骤 3:启动 Dify

# 后台启动
docker compose up -d

# 查看日志
docker compose logs -f

步骤 4:访问 Dify

打开浏览器访问 http://localhost:8080,首次登录需要创建管理员账户。

2.3 环境变量配置

关键配置项

# docker-compose.yml
services:
  api:
    environment:
      - SECRET_KEY=your-secret-key
      - OPENAI_API_KEY=your-openai-key
      - QWEN_API_KEY=your-qwen-key
      - REDIS_URL=redis://redis:6379
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - POSTGRES_USER=dify
      - POSTGRES_PASSWORD=dify
      - POSTGRES_DB=dify

2.4 验证部署

# 检查容器状态
docker compose ps

# 测试 API
curl http://localhost:8080/api/health

三、核心概念

3.1 应用类型

类型说明适用场景
对话应用交互式对话界面聊天机器人、客服助手
API 应用通过 API 调用集成到现有系统
工作流可视化流程编排复杂业务流程

3.2 核心组件

组件说明功能
Prompt提示词模板定义模型输入格式
知识库文档管理系统上传和管理知识文档
工具外部服务调用扩展应用能力
变量动态参数实现个性化配置
测试集验证数据集评估应用效果

3.3 应用生命周期

创建应用 → 设计 Prompt → 配置知识库 → 测试验证 → 发布上线 → 监控优化

四、创建第一个应用

4.1 步骤 1:创建对话应用

  1. 登录 Dify 后台
  2. 点击「新建应用」→「对话应用」
  3. 输入应用名称和描述
  4. 选择模型(如 GPT-4o、Claude 3.5)

4.2 步骤 2:设计 Prompt

# 系统提示词
system_prompt: |
  你是一位专业的客服助手,负责回答用户关于产品的问题。
  
  回答规则:
  1. 友好礼貌
  2. 使用简洁明了的语言
  3. 如果不确定答案,请说明并建议用户联系人工客服
  4. 避免使用技术术语

# 用户提示词模板
user_prompt: |
  用户问题:{{user_input}}
  
  请根据以下知识回答:
  {{knowledge}}

4.3 步骤 3:配置知识库

上传文档

  1. 进入「知识库」页面
  2. 点击「新建知识库」
  3. 上传文档(支持 PDF、Word、Markdown 等)
  4. 等待文档处理完成

配置检索

retrieval:
  enabled: true
  top_k: 3
  score_threshold: 0.7
  rerank:
    enabled: true
    model: bge-reranker

4.4 步骤 4:测试应用

测试用例

问题预期回答
“产品价格是多少?”回答具体价格范围
“如何退换货?”说明退换货流程
“客服电话是多少?”提供客服联系方式

测试方法

  1. 在预览界面输入问题
  2. 检查回答质量
  3. 记录测试结果

4.5 步骤 5:发布应用

发布为 API

  1. 点击「发布」按钮
  2. 选择发布版本
  3. 获取 API Key
  4. 测试 API 调用

API 调用示例

curl -X POST https://api.dify.ai/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "inputs": {},
    "query": "产品价格是多少?",
    "response_mode": "streaming"
  }'

五、Prompt 工程最佳实践

5.1 提示词结构

system_prompt: |
  【角色定义】
  你是一位专业的数据分析师。
  
  【任务描述】
  分析用户提供的数据并生成可视化报告。
  
  【背景信息】
  用户可能提供销售数据、用户行为数据等。
  
  【输出要求】
  1. 输出 JSON 格式
  2. 包含数据分析结果和可视化建议
  3. 使用中文输出
  
  【约束条件】
  1. 只分析提供的数据
  2. 如果数据不足,请提示用户补充
  
user_prompt: |
  用户数据:{{data}}
  
  请分析以上数据并生成报告。

5.2 变量使用

内置变量

变量说明示例
{{user_input}}用户输入用户的问题
{{knowledge}}知识库内容检索到的知识
{{conversation}}对话历史之前的对话记录
{{file_content}}上传文件内容文件解析结果

自定义变量

variables:
  - name: company_name
    type: string
    default: "我的公司"
    description: "公司名称"
  
  - name: industry
    type: select
    options: ["科技", "金融", "教育"]
    default: "科技"

5.3 结构化输出

JSON 格式约束

system_prompt: |
  请输出 JSON 格式,不要包含其他内容。
  
  格式要求:
  {
    "analysis": "分析结果",
    "recommendations": ["建议1", "建议2"],
    "confidence": 0.9
  }

代码示例

import json

def parse_response(response):
    try:
        return json.loads(response)
    except json.JSONDecodeError:
        # 提取 JSON 部分
        start = response.find("{")
        end = response.rfind("}") + 1
        return json.loads(response[start:end])

六、知识库管理

6.1 文档类型支持

类型扩展名说明
文本.txt, .md纯文本文件
文档.docx, .pdf办公文档
表格.xlsx, .csv电子表格
网页URL网页链接
图片.jpg, .png支持 OCR

6.2 文档处理流程

上传文档 → 解析提取 → 文本分段 → Embedding → 存入向量库

6.3 分段策略

策略说明参数配置
固定长度按固定字符数分段chunk_size: 500
语义分段按语义边界分段使用语义模型
段落分段按段落分隔符分段按换行符分割

配置示例

chunking:
  strategy: semantic
  chunk_size: 500
  chunk_overlap: 50
  max_chunk_length: 1000

6.4 检索优化

RAG 流程

用户查询 → Embedding → 向量检索 → 结果重排序 → 构建 Prompt → 生成回答

优化技巧

  1. 增加 top_k:返回更多候选结果
  2. 设置阈值:过滤低相关度结果
  3. 使用重排序:提升检索精度
  4. 混合检索:结合关键词和语义检索

七、工作流编排

7.1 工作流概念

工作流:将多个节点按顺序连接,实现复杂的业务逻辑。

节点类型

类型说明示例
输入节点接收用户输入文本输入、文件上传
LLM 节点调用大模型GPT、Claude
工具节点调用外部工具数据库查询、API 调用
条件节点分支判断if-else 逻辑
循环节点重复执行for/while 循环
输出节点返回结果文本输出、文件下载

7.2 创建工作流

步骤 1:新建工作流

  1. 点击「新建应用」→「工作流」
  2. 输入名称和描述

步骤 2:设计流程

输入 → 意图识别 → [条件判断]
                    ├── 知识问答 → RAG检索 → LLM回答 → 输出
                    ├── 数据查询 → SQL生成 → 数据库执行 → 结果格式化 → 输出
                    └── 文件处理 → 文件解析 → LLM分析 → 报告生成 → 输出

步骤 3:配置节点

# LLM 节点配置
llm_node:
  model: gpt-4o
  temperature: 0.7
  system_prompt: |
    你是一位专业的数据分析助手。
  user_prompt: |
    请分析以下数据:{{data}}
    
    请输出 JSON 格式的分析结果。

# 工具节点配置
tool_node:
  type: database
  connection: postgres
  query: SELECT * FROM sales WHERE date >= '{{start_date}}'

7.3 工作流示例

场景:客户服务机器人

用户输入 → 意图识别 → [条件判断]
                        ├── 产品咨询 → RAG检索知识库 → LLM生成回答 → 输出
                        ├── 订单查询 → 调用订单API → 格式化结果 → 输出
                        └── 投诉处理 → 记录投诉 → 分配工单 → 回复用户 → 输出

八、API 开发

8.1 API 类型

类型说明端点
聊天 API对话交互/v1/chat/completions
完成 API文本生成/v1/completions
知识库 API知识检索/v1/knowledge_base
工作流 API工作流触发/v1/workflow/run

8.2 认证方式

方式说明适用场景
API Key通过请求头传递服务器端调用
Session Token会话级令牌客户端调用
OAuth 2.0标准认证协议企业级集成

8.3 调用示例

Python 示例

import requests

API_KEY = "your-api-key"
BASE_URL = "https://api.dify.ai/v1"

def chat_with_bot(message):
    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    }
    
    data = {
        "inputs": {},
        "query": message,
        "response_mode": "streaming",
        "user": "user-123"
    }
    
    response = requests.post(
        f"{BASE_URL}/chat/completions",
        headers=headers,
        json=data,
        stream=True
    )
    
    for chunk in response.iter_content(chunk_size=1024):
        if chunk:
            print(chunk.decode("utf-8"), end="")

# 使用示例
chat_with_bot("你好,请问产品价格是多少?")

JavaScript 示例

const API_KEY = "your-api-key";
const BASE_URL = "https://api.dify.ai/v1";

async function chat(message) {
  const response = await fetch(`${BASE_URL}/chat/completions`, {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${API_KEY}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      inputs: {},
      query: message,
      response_mode: "streaming",
      user: "user-123"
    })
  });
  
  const reader = response.body.getReader();
  while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    console.log(new TextDecoder().decode(value));
  }
}

// 使用示例
chat("你好,请问产品价格是多少?");

九、团队协作

9.1 角色权限

角色权限说明
管理员全部权限管理平台配置
开发者应用开发创建和编辑应用
测试员测试验证测试应用功能
访客查看权限查看应用信息

9.2 版本管理

功能特性

  • 版本控制:保存和管理应用版本
  • 回滚功能:恢复到历史版本
  • 分支管理:支持并行开发

操作流程

创建版本 → 开发修改 → 测试验证 → 发布上线

9.3 协作模式

模式说明适用场景
单人开发个人独立开发小型项目
团队协作多人共同开发中型项目
企业协作跨部门协作大型项目

十、性能优化

10.1 模型选择策略

场景推荐模型理由
快速响应GPT-3.5 / Qwen 2.5-7B响应速度快,成本低
高质量生成GPT-4o / Claude 3.5生成质量高
中文场景Qwen 2.5 / Claude 3.5中文理解好
隐私敏感本地模型(Ollama)数据不出本地

10.2 缓存优化

策略

  1. 对话缓存:缓存重复查询
  2. 知识库缓存:缓存检索结果
  3. 模型缓存:缓存频繁调用的模型

配置示例

cache:
  enabled: true
  ttl: 3600  # 缓存时间(秒)
  max_size: 10000  # 最大缓存数

10.3 异步处理

适用场景

  • 长时间运行的任务
  • 批量处理任务
  • 需要后台执行的操作

代码示例

def async_process(task_id):
    # 异步处理任务
    result = run_long_task(task_id)
    
    # 通知结果
    notify_user(task_id, result)

十一、监控与调试

11.1 监控指标

指标说明目标值
响应时间API 响应耗时< 2秒
成功率请求成功比例> 99%
Token 使用模型 Token 消耗合理控制
错误率错误请求比例< 1%

11.2 日志系统

日志类型

类型说明用途
访问日志请求记录流量分析
错误日志错误信息故障排查
性能日志性能数据性能优化

查看日志

# 查看 API 日志
docker compose logs api

# 查看 Worker 日志
docker compose logs worker

11.3 调试技巧

方法

  1. 启用调试模式:查看详细执行过程
  2. 使用测试集:验证应用效果
  3. 查看中间结果:检查每一步输出
  4. 对比不同模型:选择最优模型

十二、实战:构建企业知识库助手

12.1 需求分析

场景:企业内部知识库助手,帮助员工快速查找公司政策、流程文档等。

功能需求

  1. 支持文档上传和管理
  2. 智能问答功能
  3. 多轮对话支持
  4. 权限控制

12.2 架构设计

┌─────────────────────────────────────────────────────────────┐
│                    企业知识库助手                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│    用户端                                                    │
│    ┌──────────┐                                             │
│    │  Web UI  │ ←─── 对话界面                                │
│    └────┬─────┘                                             │
│         │                                                   │
│         ↓                                                   │
│    ┌────────────────────────────────────────────────────┐   │
│    │              Dify 平台                              │   │
│    │  ┌──────────┐  ┌──────────┐  ┌──────────┐          │   │
│    │  │  Prompt  │  │ Knowledge│  │   Tools  │          │   │
│    │  │  Engine  │  │   Base   │  │  Engine  │          │   │
│    │  └────┬─────┘  └────┬─────┘  └────┬─────┘          │   │
│    │       │             │             │                  │   │
│    │       └─────────────┼─────────────┘                  │   │
│    │                     ↓                                │   │
│    │            ┌────────────────┐                        │   │
│    │            │   LLM Model    │                        │   │
│    │            │   (GPT-4o)     │                        │   │
│    │            └────────────────┘                        │   │
│    └────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

12.3 实现步骤

步骤 1:创建知识库

# 通过 API 创建知识库
curl -X POST https://api.dify.ai/v1/knowledge_base \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "企业知识库",
    "description": "公司政策、流程文档",
    "provider": "pgvector"
  }'

步骤 2:上传文档

# 上传文档到知识库
curl -X POST https://api.dify.ai/v1/knowledge_base/{kb_id}/documents \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@company_policy.pdf" \
  -F "file_name=company_policy.pdf"

步骤 3:配置应用

system_prompt: |
  你是一位专业的企业知识库助手。
  
  回答规则:
  1. 基于知识库内容回答
  2. 使用正式的语言
  3. 提供引用来源
  4. 如果找不到答案,请说明

retrieval:
  enabled: true
  top_k: 5
  score_threshold: 0.6

步骤 4:发布应用

  1. 创建 API 密钥
  2. 集成到企业内部系统
  3. 配置权限控制

12.4 测试验证

测试用例

问题预期结果
“年假政策是什么?”返回年假天数和申请流程
“报销流程是怎样的?”说明报销步骤和要求
“公司地址在哪里?”提供公司地址信息

十三、总结

核心要点

  1. Dify 定位:低代码 LLM 应用开发平台
  2. 部署方式:Docker 一键部署,支持云服务和本地部署
  3. 核心功能:Prompt 设计、知识库管理、工作流编排、API 发布
  4. 优势:可视化开发、团队协作、灵活部署

学习路径

安装部署 → 创建简单应用 → 学习 Prompt 工程 → 
配置知识库 → 构建工作流 → 发布 API → 优化性能

下一步建议

  1. 安装 Dify 并创建第一个应用
  2. 学习 Prompt 工程最佳实践
  3. 尝试构建知识库问答系统
  4. 探索工作流编排功能
  5. 学习 API 集成和扩展
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐