Dify 是一个开源的 LLM 应用开发平台,提供了可视化工作流编排、知识库管理、应用创建等功能,让开发者能够快速构建和部署 AI 应用。

Dify 使用指南:全面了解 LLM 应用开发平台

Dify 是一个功能强大的 LLM(大语言模型)应用开发平台,它提供了从应用创建、工作流编排、知识库管理到 API 部署的完整解决方案。无论你是想构建智能客服、文档问答系统,还是复杂的 AI 工作流,Dify 都能提供强大的支持。


什么是 Dify?

Dify 是一个开源的 LLM 应用开发平台,主要特点包括:

  • 可视化工作流编排:通过拖拽方式构建复杂的 AI 工作流
  • 知识库管理:支持多种数据源的文档管理和向量检索
  • 多模型支持:支持 OpenAI、Anthropic、本地模型等多种 LLM
  • API 和插件系统:提供完整的 API 接口和插件扩展能力
  • 团队协作:支持多用户、权限管理和团队协作

核心功能详解

1. 应用创建(Applications)

Dify 支持创建多种类型的应用:

1.1 对话型应用(Chatbot)

创建智能对话机器人,支持:

  • 对话设置:系统提示词、开场白、建议问题
  • 上下文管理:对话历史、记忆管理
  • 多轮对话:支持上下文理解和连续对话
  • 流式输出:实时流式响应,提升用户体验

创建步骤:

  1. 进入"应用"页面,点击"创建应用"
  2. 选择"对话型应用"
  3. 配置应用信息:
    • 应用名称和描述
    • 系统提示词(定义 AI 的角色和行为)
    • 开场白(首次对话的欢迎语)
    • 建议问题(帮助用户快速开始对话)
  4. 选择模型和参数:
    • 选择 LLM 模型(GPT-4、Claude、本地模型等)
    • 设置温度、最大 Token 等参数
  5. 配置知识库(可选):
    • 关联知识库,让 AI 基于文档回答问题
  6. 发布应用:
    • 生成 Web 访问链接
    • 获取 API 密钥

1.2 助手型应用(Agent)

创建具备工具调用能力的 AI 助手:

  • 工具集成:支持代码执行、API 调用、数据库查询等
  • 自主决策:AI 可以根据任务自主选择工具
  • 多步骤推理:支持复杂的多步骤任务处理

功能特点:

  • 工具链配置:添加可用的工具和函数
  • 推理模式:选择 ReAct、Plan-and-Execute 等推理模式
  • 工具调用限制:设置最大工具调用次数

1.3 工作流应用(Workflow)

通过可视化方式构建复杂的 AI 工作流:

  • 节点编排:拖拽节点构建工作流
  • 条件分支:支持 if/else 逻辑判断
  • 循环处理:支持迭代和批量处理
  • 变量传递:节点间数据传递和转换

常用节点类型:

  • 开始节点:工作流入口
  • LLM 节点:调用大语言模型
  • 知识库检索:从知识库检索相关信息
  • 代码执行:执行 Python 代码
  • HTTP 请求:调用外部 API
  • 条件判断:根据条件分支
  • 变量赋值:设置和修改变量
  • 模板:文本模板和变量替换
  • 结束节点:工作流出口

2. 知识库管理(Knowledge Base)

知识库是 Dify 的核心功能之一,用于存储和管理文档数据:

2.1 创建知识库

  1. 进入"知识库"页面
  2. 点击"创建知识库"
  3. 设置知识库信息:
    • 名称和描述
    • 索引方法(向量索引、关键词索引)
    • 嵌入模型选择

2.2 文档上传

支持多种文档格式:

  • 文本文件:TXT、MD、DOCX
  • PDF 文档:PDF 文件
  • 网页内容:URL 爬取
  • 结构化数据:CSV、JSON

上传方式:

  • 直接上传文件
  • 批量上传
  • URL 导入
  • API 导入

2.3 文档处理

Dify 会自动处理上传的文档:

  • 文本分割:将长文档分割成小块
  • 向量化:生成文档的向量表示
  • 索引构建:构建可检索的索引
  • 元数据提取:提取文档的元数据信息

处理设置:

  • 分块大小:设置文档分块的大小
  • 分块重叠:设置分块之间的重叠长度
  • 预处理规则:设置文本清理规则

2.4 知识库检索

在应用中集成知识库检索:

  • 检索模式
    • 语义检索:基于向量相似度
    • 关键词检索:基于关键词匹配
    • 混合检索:结合语义和关键词
  • 检索参数
    • Top K:返回最相关的 K 个文档块
    • 相似度阈值:设置最低相似度要求
    • 重排序:对检索结果进行重新排序

3. 工作流编排(Workflow)

工作流是 Dify 最强大的功能,允许你通过可视化方式构建复杂的 AI 应用:

3.1 工作流编辑器

界面组成:

  • 节点面板:可用的节点类型
  • 画布:拖拽节点构建工作流
  • 属性面板:配置选中节点的属性
  • 变量面板:查看和管理变量

3.2 常用节点详解

LLM 节点:

功能:调用大语言模型
配置项:
  - 模型选择:选择使用的 LLM
  - 提示词:输入提示词模板
  - 参数设置:温度、最大 Token 等
  - 变量引用:使用 {{variable}} 引用变量

知识库检索节点:

功能:从知识库检索相关信息
配置项:
  - 知识库选择:选择要检索的知识库
  - 查询文本:检索的查询内容
  - 检索模式:语义/关键词/混合
  - Top K:返回结果数量
输出:
  - 检索到的文档块列表
  - 相似度分数

条件判断节点:

功能:根据条件进行分支
配置项:
  - 条件表达式:设置判断条件
  - 分支路径:True/False 分支
示例:
  if: {{variable}} > 10
  then: 执行路径 A
  else: 执行路径 B

代码执行节点:

功能:执行 Python 代码
配置项:
  - 代码内容:Python 代码
  - 输入变量:代码可用的变量
  - 输出变量:代码返回的变量
示例:
  code: |
    result = input_value * 2
    return {"output": result}

HTTP 请求节点:

功能:调用外部 API
配置项:
  - URL:请求地址
  - 方法:GET/POST/PUT/DELETE
  - 请求头:自定义请求头
  - 请求体:请求参数
  - 超时设置:请求超时时间

变量赋值节点:

功能:设置和修改变量
配置项:
  - 变量名:要设置的变量名
  - 变量值:变量的值(支持表达式)
示例:
  variable: result
  value: {{llm_output}} + " processed"

3.3 工作流示例

示例 1:文档问答工作流

开始 → 用户输入 → 知识库检索 → LLM 处理 → 格式化输出 → 结束

示例 2:多步骤分析工作流

开始 → 数据获取 → 条件判断 
                    ├─ 路径 A → 分析 A → LLM 总结
                    └─ 路径 B → 分析 B → LLM 总结
                              → 合并结果 → 结束

示例 3:API 集成工作流

开始 → HTTP 请求 → 数据处理 → LLM 分析 → 结果存储 → 结束

4. 模型管理(Models)

Dify 支持多种 LLM 模型:

4.1 支持的模型提供商

  • OpenAI:GPT-4、GPT-3.5、GPT-4 Turbo
  • Anthropic:Claude 3、Claude 2
  • 本地模型:通过 OpenAI 兼容 API 接入
  • 其他提供商:Azure OpenAI、Google Gemini 等

4.2 模型配置

配置步骤:

  1. 进入"设置" → “模型提供商”
  2. 添加模型提供商:
    • 选择提供商类型
    • 输入 API Key
    • 配置端点地址(如需要)
  3. 添加模型:
    • 选择模型名称
    • 设置模型参数
    • 配置使用限制

模型参数:

  • Temperature:控制输出的随机性(0-2)
  • Max Tokens:最大输出 Token 数
  • Top P:核采样参数
  • Frequency Penalty:频率惩罚
  • Presence Penalty:存在惩罚

5. API 和集成

5.1 API 密钥管理

创建 API 密钥:

  1. 进入"设置" → “API 密钥”
  2. 点击"创建 API 密钥"
  3. 设置密钥名称和权限
  4. 保存密钥(只显示一次)

API 权限:

  • 应用访问:访问特定应用
  • 工作流访问:访问工作流
  • 知识库访问:访问知识库

5.2 API 调用示例

对话型应用 API:

curl -X POST https://api.dify.ai/v1/chat-messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "inputs": {},
    "query": "你好",
    "response_mode": "streaming",
    "conversation_id": "",
    "user": "user-1234"
  }'

工作流 API:

curl -X POST https://api.dify.ai/v1/workflows/run \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "inputs": {
      "input_text": "分析这段文本"
    },
    "response_mode": "blocking",
    "user": "user-1234"
  }'

5.3 Webhook 集成

Dify 支持 Webhook 回调:

  • 事件类型:消息完成、工作流完成等
  • 回调 URL:接收回调的地址
  • 安全验证:签名验证机制

6. 插件系统

Dify 支持插件扩展功能:

6.1 内置插件

  • 网页爬取:爬取网页内容
  • API 调用:调用外部 API
  • 数据库查询:查询数据库
  • 代码执行:执行代码逻辑

6.2 自定义插件

开发插件:

  1. 定义插件配置(YAML)
  2. 实现插件逻辑(Python/JavaScript)
  3. 注册插件到 Dify
  4. 在工作流中使用

插件配置示例:

name: custom_plugin
description: 自定义插件
parameters:
  - name: input_param
    type: string
    required: true
    description: 输入参数

7. 数据集管理(Datasets)

数据集用于训练和评估模型:

7.1 创建数据集

  • 手动创建:手动添加数据
  • 文件导入:从文件导入数据
  • API 导入:通过 API 导入数据

7.2 数据集格式

支持多种格式:

  • 问答对:问题和答案的配对
  • 文档:文档内容
  • 对话:多轮对话数据

8. 团队协作

8.1 用户管理

  • 用户角色:管理员、开发者、查看者
  • 权限控制:细粒度的权限管理
  • 团队管理:创建和管理团队

8.2 协作功能

  • 应用共享:共享应用给团队成员
  • 工作流协作:多人协作编辑工作流
  • 知识库共享:共享知识库资源

使用场景和最佳实践

场景 1:智能客服机器人

实现步骤:

  1. 创建对话型应用
  2. 上传客服知识库(FAQ、产品文档)
  3. 配置系统提示词(定义客服角色)
  4. 设置建议问题(常见问题)
  5. 集成到网站或应用

最佳实践:

  • 使用知识库检索增强回答准确性
  • 设置合理的温度值(0.7-0.9)
  • 配置对话历史管理
  • 添加人工转接功能

场景 2:文档智能问答

实现步骤:

  1. 创建知识库,上传文档
  2. 创建工作流:
    • 用户问题 → 知识库检索 → LLM 生成答案
  3. 配置检索参数(Top K、相似度阈值)
  4. 测试和优化

最佳实践:

  • 合理设置文档分块大小
  • 使用混合检索模式
  • 添加答案来源引用
  • 处理检索不到的情况

场景 3:数据分析工作流

实现步骤:

  1. 创建工作流应用
  2. 添加数据获取节点(API/数据库)
  3. 添加数据处理节点(代码执行)
  4. 添加分析节点(LLM 分析)
  5. 添加结果输出节点

最佳实践:

  • 使用条件判断处理异常情况
  • 添加错误处理和重试机制
  • 记录工作流执行日志
  • 优化节点执行顺序

场景 4:内容生成应用

实现步骤:

  1. 创建对话型或工作流应用
  2. 配置内容生成提示词
  3. 添加内容审核节点(可选)
  4. 设置输出格式和风格

最佳实践:

  • 使用模板变量提高灵活性
  • 设置内容长度限制
  • 添加内容质量检查
  • 支持多种输出格式

高级功能

1. 提示词工程

提示词模板:

系统提示词:
你是一个专业的技术顾问,擅长解答编程问题。
请基于以下知识库内容回答问题:
{{knowledge_base}}

用户问题:{{user_query}}

提示词技巧:

  • 使用清晰的指令
  • 提供示例(Few-shot)
  • 使用变量动态注入内容
  • 设置输出格式要求

2. 变量和上下文管理

变量类型:

  • 系统变量:系统提供的变量
  • 用户变量:用户输入的变量
  • 节点变量:节点输出的变量

变量引用:

# 在提示词中引用变量
提示词:分析以下文本:{{input_text}}

# 在代码中引用变量
代码:result = process({{input_text}})

3. 错误处理和调试

错误处理:

  • 添加错误捕获节点
  • 设置错误处理逻辑
  • 记录错误日志
  • 提供错误反馈

调试技巧:

  • 使用调试模式运行工作流
  • 查看节点执行日志
  • 检查变量值
  • 使用测试数据验证

4. 性能优化

优化建议:

  • 合理设置并发数
  • 使用缓存减少重复计算
  • 优化知识库检索参数
  • 减少不必要的节点
  • 使用异步处理

部署和运维

1. 本地部署

Docker 部署:

# 克隆仓库
git clone https://github.com/langgenius/dify.git

# 进入目录
cd dify/docker

# 启动服务
docker-compose up -d

环境要求:

  • Docker 和 Docker Compose
  • 至少 4GB 内存
  • 足够的磁盘空间(用于向量数据库)

2. 云部署

支持平台:

  • AWS
  • Azure
  • Google Cloud
  • 阿里云
  • 腾讯云

部署步骤:

  1. 准备云服务器
  2. 安装 Docker
  3. 配置环境变量
  4. 启动服务
  5. 配置域名和 SSL

3. 监控和维护

监控指标:

  • API 调用量
  • 响应时间
  • 错误率
  • 资源使用率

维护任务:

  • 定期备份数据
  • 更新模型和依赖
  • 清理日志文件
  • 优化数据库性能

常见问题解答

Q1: 如何提高知识库检索的准确性?

A:

  • 优化文档分块大小和重叠
  • 使用混合检索模式
  • 调整相似度阈值
  • 添加重排序机制
  • 优化文档质量

Q2: 工作流执行很慢怎么办?

A:

  • 减少不必要的节点
  • 使用异步处理
  • 优化 API 调用
  • 增加并发处理能力
  • 使用缓存机制

Q3: 如何集成到现有系统?

A:

  • 使用 Dify 提供的 API
  • 通过 Webhook 接收回调
  • 使用 iframe 嵌入
  • 通过 SDK 集成

Q4: 支持哪些语言模型?

A:

  • OpenAI 系列(GPT-4、GPT-3.5)
  • Anthropic Claude 系列
  • 本地模型(通过 OpenAI 兼容 API)
  • 其他支持 OpenAI API 格式的模型

Q5: 如何实现多语言支持?

A:

  • 在提示词中指定语言
  • 使用多语言模型
  • 配置语言检测节点
  • 根据语言选择不同的处理逻辑

总结

Dify 是一个功能强大的 LLM 应用开发平台,提供了从应用创建、工作流编排、知识库管理到 API 部署的完整解决方案。通过本文的介绍,你应该对 Dify 的核心功能有了全面的了解。

关键要点:

  1. 应用类型:对话型、助手型、工作流型
  2. 知识库:文档管理、向量检索、混合检索
  3. 工作流:可视化编排、节点组合、变量管理
  4. API 集成:RESTful API、Webhook、SDK
  5. 最佳实践:提示词工程、错误处理、性能优化

无论你是想构建简单的聊天机器人,还是复杂的 AI 工作流,Dify 都能提供强大的支持。开始使用 Dify,让 AI 应用开发变得简单高效!


参考资源