Dify - 开源LLM应用开发平台,支持RAG与Agent工作流,可视化管理,Python+TypeScript开发

Dify - 开源LLM应用开发平台,支持RAG与Agent工作流,可视化管理,Python+TypeScript开发

_

Dify开源项目详解:LLM应用开发平台部署教程与RAG工作流实战指南

一、项目概述

Dify 是一款开源的 LLM 应用开发平台,集成了 Backend-as-a-Service 和 LLMOps 理念,覆盖了构建生成式 AI 原生应用所需的核心技术栈,包括内置的 RAG 引擎。通过 Dify,用户可以基于任何 LLM(包括商业模型 GPT、Claude,以及开源模型 Llama、Qwen 等)自托管类似 Assistants API 和 GPTs 的能力。

项目已支持超过 100,000 个基于 Dify 构建的应用,在 GitHub 上获得 87K+ Stars,是当前最受欢迎的 AI 应用开发平台之一。Dify 的核心理念是降低 AI 应用开发门槛,让开发者无需关注 LangChain 等底层库的复杂实现,通过可视化的方式快速构建和迭代 AI 应用。

  • GitHub 地址https://github.com/langgenius/dify
  • 官方网站https://dify.ai
  • 开源协议:Apache 2.0 + 额外限制(见 LICENSE)
  • 开发语言:TypeScript(前端)+ Python(后端)
  • 核心定位:开源 LLM 应用开发平台,支持 RAG、Agent、工作流编排

1.1 核心特性

特性 说明
模型支持 支持 OpenAI GPT、Claude、Llama、Qwen 等主流商业和开源模型
Prompt IDE 可视化 Prompt 编排,团队协作
RAG 引擎 支持 PDF、TXT 等文档上传,向量检索
Agent 基于 Function Calling 的 Agent 框架,支持 Google 搜索等插件
工作流 可视化编排 AI 工作流
日志分析 监控和分析应用日志,持续优化
API 部署 一键将应用部署为 API 服务

1.2 与同类产品对比

特性 Dify Assistants API LangChain
编程方式 API 导向 API 导向 Python 代码导向
生态系统 开源 闭源商业 开源
RAG 引擎 内置支持 支持 不支持
Prompt IDE 内置可视化 内置
LLM 支持 丰富多样 仅 GPT 丰富多样
本地部署 支持 不支持 不适用

二、系统要求

项目 最低要求 推荐配置
CPU 2 核 4 核+
内存 4 GB 8 GB+
磁盘 20 GB 50 GB+
Docker 20.10+ 最新版本
Docker Compose 2.0+ 最新版本

三、快速部署:Docker Compose

3.1 一键部署

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

# 启动所有服务
docker compose up -d

3.2 访问 Dify

启动后,访问 http://localhost(或服务器 IP)进入初始化页面。

首次访问时需要:

  1. 设置管理员账户和密码
  2. 完成初始化

3.3 Docker Compose 配置文件说明

# docker-compose.yaml 核心服务
services:
  # 前端服务
  frontend:
    image: langgenius/dify-web:latest
    ports:
      - "3000:3000"

  # 后端 API 服务
  api:
    image: langgenius/dify-api:latest
    environment:
      - SECRET_KEY=your-secret-key
      - INIT_PASSWORD=your-init-password
    ports:
      - "5001:5001"

  # Worker 服务(处理异步任务)
  worker:
    image: langgenius/dify-api:latest

  # 向量数据库(Weaviate)
  weaviate:
    image: semitechnologies/weaviate:latest

  # 知识库数据库(PostgreSQL + pgvector)
  db:
    image: postgres:15-alpine

  # Redis 缓存
  redis:
    image: redis:7-alpine

四、基础配置

4.1 配置 API 密钥

  1. 进入 设置 → 模型供应商
  2. 选择要使用的模型(如 OpenAI)
  3. 填入 API Key

4.2 环境变量配置

# .env 配置文件示例
SECRET_KEY=your-secret-key-here
INIT_PASSWORD=admin123456

# OpenAI 配置
OPENAI_API_KEY=sk-xxxxx

# 数据库配置
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=dify

# Redis 配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=

# 向量数据库
WEAVIATE_ENDPOINT=http://localhost:8080
WEAVIATE_API_KEY=

4.3 HTTPS 配置

使用 Nginx 反向代理:

server {
    listen 443 ssl;
    server_name dify.yourdomain.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api {
        proxy_pass http://localhost:5001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

五、创建第一个应用

5.1 创建应用

  1. 点击 创建应用

  2. 选择应用类型:

    • 聊天助手:对话式应用
    • 文本生成应用:文本补全、翻译等
    • Agent:可执行工具调用的智能代理
    • 工作流:可视化编排的自动化流程
  3. 填写应用名称和描述

  4. 点击创建

5.2 配置 Prompt

编排 页面:

# Role
你是一个专业的技术写作助手。

# Instructions
- 用简洁清晰的语言解释技术概念
- 使用适当的例子来帮助理解
- 保持回答结构化,使用列表和小标题

# Tone
专业、友好、易懂

5.3 添加知识库

  1. 进入 知识库 页面
  2. 点击 创建知识库
  3. 上传文档(支持 PDF、TXT、Markdown 等)
  4. 等待文档向量化完成
  5. 在应用中添加知识库检索节点

5.4 调试与发布

  1. 在右侧 调试 面板测试 Prompt
  2. 调整参数直到满意
  3. 点击 发布 将应用上线

六、RAG 引擎使用

6.1 什么是 RAG

RAG(检索增强生成)通过从外部知识库检索相关信息,结合大语言模型生成更准确、更具事实依据的回答。

6.2 创建知识库

# 上传文档到知识库
# 支持格式:PDF、TXT、Markdown、DOCX、HTML

6.3 配置检索设置

参数 说明
检索模式 向量检索 / 全文检索 / 混合检索
Top K 返回最相关的 K 个结果
相似度阈值 过滤低相似度结果
Rerank 启用重排序提升准确性

6.4 在应用中使用知识库

在 Prompt 中引用知识库:

你是一个客服助手。当用户询问产品问题时,
请从知识库中检索相关信息来回答。

# Context
{{context}}

七、Agent 功能

7.1 创建 Agent

  1. 创建应用时选择 Agent 类型
  2. 配置 Agent 的工具集
  3. 设置系统 Prompt

7.2 内置工具

工具 功能
Google 搜索 联网搜索最新信息
Wikipedia 百科查询
Web 抓取 获取网页内容
计算器 数学计算
Dall-E 图像生成

7.3 自定义工具

通过 MCP(Model Context Protocol)集成自定义工具:

{
  "name": "my_tool",
  "description": "我的自定义工具",
  "url": "https://api.example.com/tool",
  "method": "POST",
  "parameters": {
    "type": "object",
    "properties": {
      "query": {"type": "string"}
    }
  }
}

八、工作流编排

8.1 工作流节点类型

节点 说明
LLM 节点 调用大语言模型
知识检索 从知识库检索内容
条件分支 根据条件分流
代码执行 执行 Python 代码
HTTP 请求 发起 API 调用
模板渲染 模板字符串处理
变量赋值 修改变量值

8.2 工作流示例:自动摘要

[接收输入] → [提取关键信息] → [生成摘要] → [返回结果]

8.3 工作流 YAML 配置

nodes:
  - id: start
    type: custom
    next: llm_node

  - id: llm_node
    type: llm
    model: gpt-4
    prompt: "请总结以下内容:{{input}}"
    next: end

  - id: end
    type: finish

九、API 集成

9.1 获取 API 密钥

  1. 进入 设置 → API
  2. 点击 创建密钥
  3. 复制生成的 API Key

9.2 调用 Chat API

curl -X POST http://localhost:5001/v1/chat-messages \
  -H "Authorization: Bearer YOUR-API-KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "inputs": {},
    "query": "What is Dify?",
    "response_mode": "blocking",
    "conversation_id": ""
  }'

9.3 Python SDK

from dify_client import Dify

client = Dify(api_key="your-api-key")

response = client.chat_message(
    query="What is Dify?",
    user="user-123"
)

print(response.content)

十、常见问题与解决方案

10.1 知识库检索不准确

解决方案

  1. 调整 Top K 值,增加检索结果数量
  2. 启用混合检索模式
  3. 启用 Rerank 重排序
  4. 检查文档质量和分段是否合理

10.2 应用响应慢

解决方案

  1. 使用更快的模型(如 GPT-4o 代替 GPT-4)
  2. 减少上下文长度
  3. 启用流式响应
  4. 检查服务器资源是否充足

10.3 Docker 容器启动失败

解决方案

# 查看日志
docker compose logs -f

# 检查端口占用
netstat -tulpn | grep -E "3000|5001|5432|6379|8080"

# 重置数据库
docker compose down -v
docker compose up -d

10.4 模型调用失败

解决方案

  1. 检查 API Key 是否正确
  2. 确认网络可以访问模型服务商
  3. 检查账户余额或配额

10.5 数据安全问题

解决方案

  1. 所有数据默认存储在本地
  2. 配置 HTTPS 加密传输
  3. 定期备份数据库
  4. 使用强密码和 API 密钥

十一、生产环境部署

11.1 使用 Nginx + HTTPS

server {
    listen 443 ssl http2;
    server_name dify.yourdomain.com;

    ssl_certificate /etc/ssl/certs/yourdomain.crt;
    ssl_certificate_key /etc/ssl/private/yourdomain.key;

    client_max_body_size 100M;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api {
        proxy_pass http://localhost:5001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

11.2 使用负载均衡

upstream dify_backend {
    server 127.0.0.1:5001;
    server 127.0.0.1:5002;
    keepalive 32;
}

server {
    location /api {
        proxy_pass http://dify_backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

11.3 数据库备份

# 备份 PostgreSQL
pg_dump -U postgres -d dify > backup_$(date +%Y%m%d).sql

# 备份知识库文件
tar -czf knowledge_base_$(date +%Y%m%d).tar.gz ./knowledge

十二、社区与生态

资源 地址
GitHub https://github.com/langgenius/dify
官网 https://dify.ai
文档 https://docs.dify.ai
Discord https://discord.gg/FngNHpbcY7
Twitter https://twitter.com/dify_ai
Docker Hub https://hub.docker.com/u/langgenius

总结

Dify 是一款极具创新性的开源 LLM 应用开发平台,它通过可视化的方式大幅降低了 AI 应用开发的门槛。无论是构建智能客服、知识库问答系统、AI 工作流自动化,还是开发复杂的 Agent 应用,Dify 都能提供一站式的解决方案。

它的核心优势在于:

  • 模型中立:支持多种商业和开源模型,不被单一供应商绑定
  • 开源透明:代码完全开放,可本地部署,数据安全可控
  • 功能完整:内置 RAG、Agent、工作流等核心功能
  • 易于使用:无需编写代码,通过可视化界面即可构建应用
  • API 完善:一键将应用部署为 API,方便集成

对于希望快速构建 AI 应用、实现私有化部署的企业和个人开发者来说,Dify 是一个非常值得推荐的选择。

立即体验:执行 git clone https://github.com/langgenius/dify.git && cd dify/docker && docker compose up -d,然后访问 http://localhost 开始使用。

Ghost - 开源专业博客平台,Node.js开发,Markdown编辑器,内置会员与Newsletter,替代WordPress 2026-06-20
changedetection.io - 开源网站内容变更监控工具,支持Discord与Telegram告警,Python开发 2026-06-20

评论区