Workshop

Dify 实战:用开源 LLMOps 平台 30 分钟搭建企业级 AI 应用

4 min read ·

为什么选 Dify

2026 年,用 LLM 构建 AI 应用已经不是技术问题了——真正的瓶颈是工程化

你需要:知识库管理、Prompt 版本控制、多模型切换、使用量监控、A/B 测试、API 网关… 这些加在一起就是一个 LLMOps 平台的工作量。

Dify 把这些全部打包成了一个开源产品:

本文用一个客服 RAG 问答系统演示完整开发流程。

Step 1: Docker Compose 部署

系统要求

一键启动

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d

等待约 2-3 分钟,访问 http://localhost/install 完成初始化设置。

核心组件

部署后 Docker 会启动以下服务:

服务端口作用
Web 前端80可视化操作界面
API Server5001后端 API 服务
Worker-异步任务处理(文档索引等)
PostgreSQL5432主数据库
Redis6379缓存和消息队列
Weaviate8080向量数据库(默认)

生产环境建议

# docker-compose.override.yml
services:
  api:
    environment:
      # 使用外部 PostgreSQL(生产级别)
      DB_HOST: your-rds-endpoint.amazonaws.com
      DB_PORT: 5432
      DB_DATABASE: dify
      # 使用外部 Redis
      REDIS_HOST: your-elasticache-endpoint
      # 限制文件上传大小
      UPLOAD_FILE_SIZE_LIMIT: 50  # MB
    deploy:
      resources:
        limits:
          memory: 8G

Step 2: 接入 LLM 模型

部署完成后,首先配置 LLM 供应商。

进入 设置 → 模型供应商

推荐配置:
├── Claude 4.7 Sonnet — 主力模型(高质量回答)
├── GPT-4o-mini     — 备选模型(低成本场景)
├── text-embedding-3-large — Embedding 模型
└── Ollama (localhost:11434) — 本地模型(开发测试用)

接入 Ollama 本地模型

如果你按照上一篇文章部署了 Ollama:

模型供应商: OpenAI-API-compatible
模型名称: llama3
API Base URL: http://host.docker.internal:11434/v1
API Key: ollama(任意字符串)

host.docker.internal 让 Docker 容器内的 Dify 可以访问宿主机上的 Ollama。

Step 3: 创建知识库

这是 RAG 应用的核心——把你的文档变成 LLM 可检索的知识。

上传文档

进入 知识库 → 创建知识库 → 上传文件

支持的格式:PDF、Word、TXT、Markdown、HTML、CSV、Excel

分段策略配置

分段设置:
  分段标识符: \n\n     # 按双换行分段
  最大分段长度: 1000   # 每个 chunk 1000 字符
  分段重叠: 200        # 相邻 chunk 重叠 200 字符

索引方式: 高质量(推荐)  # 使用 embedding 模型索引

检索设置:
  检索模式: 混合检索     # 向量 + 关键词
  TopK: 5               # 返回 5 个最相关的段落
  Score 阈值: 0.5        # 过滤低相关度结果
  Rerank 模型: bge-reranker-v2-m3  # 重排序提升精度

分段策略的经验法则

文档类型chunk_sizeoverlap说明
技术文档800-1000200按段落自然分段
FAQ 列表300-50050每个 Q&A 独立成段
长篇报告1200-1500300保留更多上下文
代码库500-800100按函数/类分段

Step 4: 构建工作流

Dify 的工作流编辑器是其最强大的功能——用可视化拖拽构建复杂的 AI 逻辑。

客服问答系统的工作流

开始

[意图分类] — LLM 节点,判断用户问题的类型

[条件分支]
  ├── 产品咨询 → [知识库检索] → [LLM 回答] → 结束
  ├── 订单查询 → [HTTP 请求 (订单 API)] → [LLM 格式化] → 结束
  ├── 投诉反馈 → [LLM 安抚回复] + [通知人工] → 结束
  └── 其他     → [通用 LLM 回答] → 结束

意图分类节点配置

模型: Claude 4.7 Sonnet
System Prompt:
  你是一个客服意图分类器。根据用户输入,输出以下分类之一:
  - product_inquiry(产品咨询)
  - order_query(订单查询)
  - complaint(投诉反馈)
  - other(其他)
  
  只输出分类标签,不输出其他内容。

输出变量: intent (string)

知识库检索节点配置

知识库: 产品文档知识库
查询变量: {{user_input}}
检索模式: 混合检索
TopK: 5
Score 阈值: 0.5

LLM 回答节点配置

模型: Claude 4.7 Sonnet
System Prompt:
  你是 YOMXXX 公司的客服助手。
  根据以下知识库检索结果回答用户问题。
  如果检索结果中没有相关信息,诚实说明并建议联系人工客服。
  
  检索结果:
  {{knowledge_retrieval.result}}

用户输入: {{user_input}}

Step 5: 发布 API

工作流测试通过后,一键发布为 API:

进入 应用 → 访问 API → 获取 API Key 和端点

# 调用你的 AI 客服 API
curl -X POST 'https://your-dify-domain/v1/chat-messages' \
  -H 'Authorization: Bearer app-xxxxxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "inputs": {},
    "query": "你们的退款政策是什么?",
    "response_mode": "streaming",
    "user": "user-123"
  }'

在前端集成

async function askCustomerService(question: string): Promise<string> {
  const response = await fetch("https://your-dify-domain/v1/chat-messages", {
    method: "POST",
    headers: {
      Authorization: "Bearer app-xxxxxxxxxxxx",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      inputs: {},
      query: question,
      response_mode: "blocking",
      user: "web-user",
    }),
  });

  const data = await response.json();
  return data.answer;
}

Dify 也提供开箱即用的嵌入式聊天组件,一行代码嵌入到你的网站:

<script src="https://your-dify-domain/embed.min.js"
  id="dify-chatbot-bubble-button"
  data-app-url="https://your-dify-domain"
  data-app-id="your-app-id">
</script>

Step 6: 生产监控

内置日志

Dify 自动记录每次对话的完整日志:

进入 日志与标注 查看,可以按时间、用户、满意度筛选。

标注和优化

对于回答不准确的对话,可以直接标注正确答案。标注的数据会用于:

  1. 知识库补充——自动将标注内容添加到知识库
  2. Prompt 优化建议——根据标注数据生成优化建议
  3. 模型评估——对比不同模型在标注数据上的表现

关键指标

指标健康范围优化方向
检索命中率> 80%优化分段策略和 embedding 模型
回答满意度> 85%优化 System Prompt 和知识库
平均延迟< 3s考虑更快的模型或缓存
Token 成本/对话< $0.05缩短 Prompt 或用更便宜的模型

进阶:自定义工具节点

Dify 支持通过 OpenAPI Schema 导入自定义工具:

openapi: 3.0.0
info:
  title: 订单查询 API
  version: 1.0.0
paths:
  /api/orders/{orderId}:
    get:
      summary: 查询订单状态
      operationId: getOrderStatus
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: 订单信息
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum: [pending, shipped, delivered, cancelled]
                  tracking_number:
                    type: string
                  estimated_delivery:
                    type: string

导入后,LLM 可以在对话中自动调用这个 API 查询订单。

什么时候不用 Dify

  1. 需要极致性能和定制:Dify 的抽象层会带来约 100-200ms 的额外延迟
  2. 团队全是强开发者:直接用 LangGraph + 自研可能更灵活
  3. 只需要简单的 Chatbot:直接用 Claude/GPT 的 API 更简单
  4. 需要端侧部署:Dify 是服务端方案,不适合移动端或边缘设备

总结

Dify 把”从 0 到 AI 应用上线”的时间从几周压缩到了几十分钟。核心价值不是技术创新,而是工程效率——它让非 AI 专家也能构建生产级 AI 应用。

对于大多数企业场景(客服、知识问答、文档分析、内部助手),Dify 是 2026 年 ROI 最高的选择。

Frequently asked questions

Dify 和 LangChain/LangGraph 有什么区别?
LangChain/LangGraph 是代码级框架,适合需要深度定制的开发者;Dify 是低代码平台,通过可视化界面构建 AI 应用。如果你的团队有强开发能力且需要极致灵活性,用 LangChain;如果你要快速交付、降低维护成本,或者团队中有非技术成员参与 AI 应用设计,Dify 更合适。两者也可以结合——Dify 做应用层,LangChain 做底层自定义节点。
Dify 的自托管版本和云版本有什么区别?
功能完全一致,区别在于运维和数据控制。自托管版本数据完全在你的服务器上,适合有数据合规要求的企业;云版本免运维,按用量付费。自托管版本需要至少 4 核 16GB 的服务器,推荐 PostgreSQL + Redis + Weaviate 的组合。中小团队建议从云版本开始,验证业务价值后再迁移到自托管。
Dify 的知识库检索精度怎么样?
Dify 内置了混合检索(向量检索 + 关键词检索 + 重排序),在大多数场景下精度优于纯向量检索 15-20%。它支持多种向量数据库后端(Weaviate、Qdrant、Milvus、PgVector),支持自定义 chunk 策略和 embedding 模型。如果默认配置精度不够,可以调整 chunk size、overlap、TopK 和重排序模型来优化。
Dify 支持哪些 LLM 模型?
几乎所有主流模型:OpenAI(GPT-4o/GPT-5)、Anthropic(Claude 4.7/Sonnet)、Google(Gemini 3)、DeepSeek、Qwen、Llama(通过 Ollama)、Mistral 等。也支持自定义 OpenAI 兼容的 API 端点,这意味着你可以接入任何提供 OpenAI 格式 API 的服务,包括本地 Ollama 和 vLLM。
Dify 的工作流和 n8n/Zapier 有什么区别?
n8n/Zapier 是通用自动化工具,侧重于系统间的数据流转(webhook、API 对接);Dify 的工作流专为 AI 应用设计,内置了 LLM 节点、知识库检索节点、代码执行节点、条件分支等 AI 专用组件。如果你的工作流核心是 LLM 推理和知识检索,Dify 更合适;如果核心是跨系统数据同步,用 n8n。