新闻详情

新闻详情

首页 / 资讯中心 / 详情

Dify 实战教程:从零部署到构建 AI 应用全流程详解

发布时间:2026/6/10 22:32:20
Dify 实战教程:从零部署到构建 AI 应用全流程详解
本文面向有一定开发基础的读者涵盖 Dify 的核心概念、Docker 部署、知识库配置、Workflow 搭建以及通过 API 接入自己系统的完整流程。一、Dify 是什么Dify 是一个开源的 LLM 应用开发平台定位是让开发者快速构建、部署、运营基于大语言模型的 AI 应用而不需要从头搭建推理、向量检索、对话管理等基础设施。核心能力能力说明多模型支持OpenAI、Claude、通义千问、文心一言、本地 Ollama 等知识库 RAG上传文档自动向量化支持语义检索Workflow可视化编排 AI 流程支持分支、循环、代码节点Agent工具调用、多步推理API 开放每个应用自动生成 REST API方便对接业务系统和 LangChain、FastGPT 的区别LangChain代码框架灵活但需要大量手写代码FastGPT偏向知识库问答场景功能相对收敛Dify介于两者之间可视化 可编程适合团队协作和快速落地二、Docker 部署推荐方式环境要求Docker 20.10Docker Compose 2.x内存建议 4GB 以上部署步骤1. 克隆仓库git clone https://github.com/langgenius/dify.git cd dify/docker2. 复制配置文件cp .env.example .env3. 修改关键配置打开.env文件必须修改以下内容# 必须替换用于 JWT 签名和加密 SECRET_KEYyour-random-secret-key-here ​ # 生成方法 # openssl rand -base64 42其他常用配置# Token 过期时间 ACCESS_TOKEN_EXPIRE_MINUTES60 REFRESH_TOKEN_EXPIRE_DAYS30 ​ # 如果需要外网访问配置这些 CONSOLE_WEB_URLhttp://你的服务器IP SERVICE_API_URLhttp://你的服务器IP4. 启动服务docker compose up -d5. 验证部署docker ps正常情况下应该看到以下容器全部 Updocker-nginx-1 # 反向代理监听 80/443 docker-api-1 # 后端 API docker-web-1 # 前端 docker-worker-1 # 异步任务 docker-db-postgres-1 # 数据库PostgreSQL docker-redis-1 # 缓存 docker-weaviate-1 # 向量数据库 docker-sandbox-1 # 代码执行沙箱 docker-plugin_daemon-1 # 插件服务6. 访问控制台浏览器打开http://服务器IP首次访问需要创建管理员账号。三、配置模型部署完成后第一件事是配置 LLM 模型。步骤右上角头像 →设置左侧模型供应商选择对应厂商填入 API Key常用模型配置示例OpenAIAPI Key: sk-xxxxxxxx Base URL: https://api.openai.com/v1或中转地址Ollama本地模型Base URL: http://host.docker.internal:11434注意Docker 内访问宿主机用host.docker.internal而不是localhost通义千问API Key: 阿里云控制台申请四、知识库配置详解知识库是 Dify 的核心功能之一基于 RAG检索增强生成实现文档问答。创建知识库顶部导航 →知识库创建知识库→ 上传文档支持 PDF、Word、TXT、Markdown 等配置分段规则分段策略选择通用分段检索和召回用同一个块适合大多数场景。关键参数分段标识符\n\n以空行为分割点 最大长度1024 characters 重叠长度50 characters防止语义在段边界被截断父子分段推荐用于长文档核心思路子块负责检索精准父块负责召回完整用户提问 → 向量匹配子块小而精准→ 返回对应父块给 LLM大而完整适用场景文档有清晰的章节层级问题需要综合多个小点来回答文档篇幅较长5000 字检索设置模式说明适用向量检索语义相似度匹配通用问答全文检索关键词精确匹配查找专有名词混合检索两者结合推荐默认使用五、创建应用Dify 支持四种应用类型类型说明聊天助手单轮或多轮对话最简单Agent可调用工具多步推理Chatflow可视化编排的对话流程Workflow批处理流程无对话界面以 Chatflow 为例1. 新建 Chatflow工作室 → 创建应用 → Chatflow2. 基本节点构成[开始] → [知识检索] → [LLM] → [回复]3. 知识检索节点配置选择已创建的知识库检索模式混合检索Top K3返回最相关的3段Score 阈值0.5低于此相似度的结果不采用4. LLM 节点配置System Prompt 示例你是一个专业的客服助手。 请根据以下检索到的知识库内容回答用户问题 ​ {{#context#}} ​ 如果知识库中没有相关信息请如实告知用户不要编造答案。5. 发布应用右上角发布→ 选择发布方式嵌入网站iframe / 脚本独立页面API 调用六、API 接入每个 Dify 应用都会自动生成 REST API方便接入自己的业务系统。获取 API Key进入对应应用左侧菜单 →访问 API右上角API Key→ 创建密钥Chatflow API 调用示例发送消息流式响应import requests import json ​ url http://你的服务器IP/v1/chat-messages headers { Authorization: Bearer app-xxxxxxxxxxxxxxxx, Content-Type: application/json } ​ payload { inputs: {}, query: 你好请问如何申请退款, response_mode: streaming, # 流式输出 conversation_id: , # 首次为空后续传上一次的 id user: user-001 } ​ response requests.post(url, headersheaders, jsonpayload, streamTrue) ​ for line in response.iter_lines(): if line: line line.decode(utf-8) if line.startswith(data: ): data json.loads(line[6:]) if data.get(event) message: print(data.get(answer, ), end, flushTrue)非流式响应payload[response_mode] blocking response requests.post(url, headersheaders, jsonpayload) result response.json() print(result[answer])Workflow API 调用示例url http://你的服务器IP/v1/workflows/run headers { Authorization: Bearer app-xxxxxxxxxxxxxxxx, Content-Type: application/json } ​ payload { inputs: { customer_name: 张三, issue_type: 退款 }, response_mode: blocking, user: user-001 } ​ response requests.post(url, headersheaders, jsonpayload) result response.json() print(result[data][outputs])常用 API 接口汇总接口方法说明/v1/chat-messagesPOST发送对话消息/v1/conversationsGET获取会话列表/v1/conversations/:id/messagesGET获取历史消息/v1/workflows/runPOST执行工作流/v1/files/uploadPOST上传文件七、Workflow 进阶常用节点代码节点支持 Python / JavaScript可以做数据处理def main(inputs: dict) - dict: name inputs.get(name, ) score inputs.get(score, 0) level 优秀 if score 90 else 良好 if score 70 else 待提升 return { result: f{name} 的评级为{level}{score}分 }HTTP 请求节点直接在工作流中调用外部 API方法POST URLhttps://api.example.com/notify HeaderAuthorization: Bearer {{token}} Body{user_id: {{user_id}}, message: {{message}}}条件分支节点根据变量值走不同流程IF score 90 → 发送优秀通知 ELSE IF score 60 → 发送合格通知 ELSE → 发送预警通知迭代节点对列表中的每个元素执行相同操作类似 for 循环。八、常见问题排查容器启动失败# 查看具体报错 docker logs docker-api-1 ​ # 重启单个服务 docker compose restart api知识库检索效果差检查分段是否合理避免一段内容过于杂乱调低 Score 阈值如从 0.5 降到 0.3尝试换用混合检索模式检查 Embedding 模型是否支持中文API 返回 401{code: unauthorized, message: Unauthorized.}→ 检查 Authorization Header 格式Bearer app-你的key注意Bearer后有空格模型调用失败# 查看 API 日志 docker logs docker-api-1 --tail 100常见原因API Key 错误、网络无法访问模型服务商、余额不足九、生产环境建议事项建议SECRET_KEY必须替换默认值使用openssl rand -base64 42生成HTTPS配置 SSL 证书避免明文传输 API Key数据备份定期备份 PostgreSQL 数据和上传的文件资源监控向量数据库Weaviate比较吃内存建议监控版本升级升级前对比.env.example的变更备份数据库十、总结Dify 的核心价值在于把 LLM 应用的通用基础设施都帮你搭好了开发者只需要专注在业务逻辑本身你负责业务流程设计 Prompt 调优 API 接入 Dify 负责模型调度 向量检索 对话管理 流式输出 插件生态对于有一定开发基础的团队Dify 可以极大缩短从想法到上线的周期。结合 Workflow 的可视化编排能力非技术成员也能参与 AI 应用的迭代降低了协作门槛。参考资料Dify 官方文档Introduction - Dify DocsGitHub 仓库GitHub - langgenius/dify: Production-ready platform for agentic workflow development. · GitHubDify Marketplace插件Dify Marketplace
网站建设 高端定制 企业官网