
模型能聊天了然后呢Dify 把你的本地模型焊进真实业务真正干活本文基于 Dify v1.x2026年7月最新版编写。所有配置和 API 调用均经过验证可直接复制运行。Dify 需要 Docker Desktop 已安装并运行。它是一个开源 LLM 应用开发平台MIT 协议永久免费。你是不是也卡在这一步Ollama 装好了模型能跑了然后呢终端里一问一答像跟大模型聊微信——没有界面没有历史记录关了窗口就没了想让 AI 读你的文档但模型只会说「我不知道你的业务」想搭个工作流用户提问 → AI 检索文档 → 生成回答 → 记录未解决问题但不会写代码公司需要一个客服机器人ChatGPT API 太贵数据还不能外发想给团队几个人用但 Ollama 只有命令行同事看一眼就说「太硬核了」只有 Ollama 的世界 有 Dify 的世界 ┌──────────┐ ┌──────────┐ │ ollama run │ │ 浏览器打开 │ │ qwen3 │ │ localhost │ └────┬─────┘ └────┬─────┘ │ │ ├─→ 黑窗口没有界面 ├─→ 可视化拖拽界面 ├─→ 没有对话历史 ├─→ 多会话管理 ├─→ 不能挂文档 ├─→ 上传文档建知识库 ├─→ 不能搭工作流 ├─→ 拖拽搭工作流 ├─→ 不能发布给团队 ├─→ 一键发布 Web 应用 ├─→ 不能调用 API ├─→ 提供 REST API ├─→ 不能加权限控制 ├─→ 多用户 权限管理 └─→ 只有你一个人能用 └─→ 团队多人使用Dify vs 其他方案对比维度DifyLangChain 手写FastGPTChatGPT Plus部署方式Docker 一键需要写代码Docker云端 SaaS费用完全免费免费免费$20/月数据隐私完全本地完全本地完全本地上传到 OpenAI知识库内置 RAG自己实现内置内置工作流可视化拖拽纯代码简单无Agent内置自己写无无API 开放REST API自己写REST API受限适合人群零代码/低代码开发者零代码所有人上手难度低高低极低一句话Dify 在可视化界面、知识库 RAG、工作流编排、Agent 能力、API 开放、多用户管理这几个维度上是目前本地 AI 应用平台里覆盖最全的。一、安装 Dify5 分钟Docker Compose 部署推荐前提Docker Desktop 已装并运行任务栏鲸鱼图标变绿。# 1. 克隆 Dify 仓库gitclone https://github.com/langgenius/dify.git# 2. 进入 docker 目录cddify/docker# 3. 复制环境变量文件cp.env.example .env# 4. 启动所有服务dockercompose up-d首次启动会拉取 7 个镜像API Web Worker PostgreSQL Redis Nginx Sandbox约 3GB。配好镜像加速后 5~10 分钟拉完。# 查看所有服务状态dockercomposeps# NAME STATUS PORTS# docker-api-1 Up (healthy) 5001/tcp# docker-web-1 Up (healthy) 3000/tcp# docker-worker-1 Up 5001/tcp# docker-db-1 Up (healthy) 5432/tcp# docker-redis-1 Up (healthy) 6379/tcp# docker-nginx-1 Up 0.0.0.0:80-80/tcp# docker-sandbox-1 Up 0.0.0.0:8194/tcp浏览器打开localhost80 端口注册管理员账号进入后台。如果你 Docker 都没装先去看上一篇 Docker 教程。Docker 命令行单机部署仅演示不推荐以下命令仅供快速体验Dify 由 API、Worker、Web、Redis、DB 等多个服务组成单容器跑不稳定知识库和 Agent 功能会缺失。正式使用请用上面的 Docker Compose 方式。dockerrun-d--namedify\--restartalways\-p80:80\-p5001:5001\-vdify_data:/app/api/storage\-eDEBUGfalse\--add-hosthost.docker.internal:host-gateway\langgenius/dify:latest推荐用 Docker Compose 方式Dify 的多组件架构用单容器跑不稳定。升级 Difycddify/docker# 拉取最新镜像dockercompose pull# 重新启动数据自动迁移dockercompose up-d升级前先备份docker compose exec db pg_dump -U postgres dify backup.sql二、接上 Ollama 本地模型配置模型供应商后台首页 → 右上角头像 → 设置 → 模型供应商 → 找到 Ollama → 填配置配置项值说明接口地址http://host.docker.internal:11434不是 localhostDocker 容器访问宿主机必须用这个地址模型名称qwen3:8b你在 Ollama 里 pull 过的模型名模型类型LLM对话模型上下文长度32768qwen3:8b 默认上下文上限 Token4096单次最大输出保存后点「验证」显示绿色✓说明连通。如果验证失败检查 Ollama 是否在运行ollama serve检查OLLAMA_HOST是否设为0.0.0.0:11434。配置 Embedding 模型知识库需要 Embedding 模型把文档向量化# 先拉取 Embedding 模型ollama pull nomic-embed-textDify 后台 → 模型供应商 → Ollama → 添加 Embedding 模型配置项值接口地址http://host.docker.internal:11434模型名称nomic-embed-text模型类型Text Embedding模型配置速查表模型用途Ollama 命令最低内存qwen3:8b日常对话ollama pull qwen38GBqwen3:4b低配对话ollama pull qwen3:4b4GBdeepseek-r1:7b推理/代码ollama pull deepseek-r1:7b8GBnomic-embed-text文档向量化ollama pull nomic-embed-text2GB对话模型和 Embedding 模型可以同时加载Dify 会自动调度。内存不够时 Ollama 会自动卸载不活跃的模型。三、创建聊天助手应用基础聊天助手后台 → 创建空白应用 → 选择「聊天助手」填应用名称和描述在编排页面配置配置项推荐值说明模型qwen3:8b选择已配置的 Ollama 模型Temperature0.7创意性0严谨 1发散Top P0.9采样范围Max Tokens4096单次最大输出对话开场白你好我是助手有什么可以帮你用户进来看到的第一句话System Prompt见下方定义 AI 人设和规则System Prompt 示例你是一个 Python 编程助手。 回答要求 1. 先给出代码示例 2. 再解释原理 3. 最后给一个实际使用场景 如果不确定说明不确定不要编造。右上角点「发布」→ 拿到 Web 应用链接分享给任何人对话变量配置Dify 支持在对话中插入变量动态控制 AI 行为变量类型示例用途文本输入用户姓名个性化回复段落输入背景信息给 AI 补充上下文下拉选择编程语言切换语言数字代码行数限制输出长度在编排页面的「Prompt」里用{{变量名}}引用你是一个 {{language}} 编程助手。 用户{{question}} 背景信息{{context}}四、搭知识库——让 AI 基于你的文档回答知识库是 Dify 最实用的功能。上传文档AI 基于你的资料回答而不是凭空编造。创建知识库左侧菜单 → 知识库 → 创建知识库上传文件支持格式见下表配置分段和检索参数支持的文件格式格式后缀大小限制说明PDF.pdf15MB自动 OCRWord.docx15MB提取正文文本.txt15MBUTF-8 编码Markdown.md15MB保留格式CSV.csv15MB按行切分HTML.html15MB提取正文Excel.xlsx15MB按行切分PPT.pptx15MB提取文字分段配置详解配置项推荐值说明分段模式自动按段落自动切分分段长度500每段 500 字太短检索不准太长浪费 Token分段重叠50相邻段重叠 50 字防止切断上下文清洗规则开启自动去除多余空行和特殊字符分段长度怎么选FAQ 类文档用 200~300一个问题一段产品手册用 500~800一个功能段长文章用 800~1000。检索模式详解模式原理适合场景准确率高质量向量检索把问题转成向量找最相似的段落语义匹配高经济全文检索关键词匹配精确查找中混合检索向量 关键词同时匹配兼顾语义和精确最高推荐用「混合检索」——既理解语义又不漏关键词。需要 Embedding 模型支持。检索参数调优参数推荐值说明Top K3检索最相似的 3 个段落Score 阈值0.5相似度低于 0.5 的不返回重排序关闭本地模型重排序较慢Top K 怎么选K1 只看最相似的回答精准但容易漏信息K5 覆盖面广但可能引入噪声。一般 3 是平衡点。关联知识库到应用创建聊天助手应用 → 编排页面 → 添加「知识库」节点选择已创建的知识库在 System Prompt 里加约束你是公司客服助手。 根据知识库内容回答用户问题。 如果知识库中没有相关信息明确告知暂未收录该问题不要编造。 回答末尾附上信息来源文档名。发布应用实际效果用户问「年假怎么折算」AI 从《员工手册》里检索到折算规则回答具体比例附上来源。没接知识库时命中率 30%接上后飙到 90%。五、搭工作流——可视化编排 AI 流程工作流是 Dify 的进阶能力——把多个 AI 步骤串成流水线每一步的输出是下一步的输入。创建工作流应用创建应用 → 选择「工作流」进入可视化编排界面工作流节点类型节点作用示例开始定义输入变量用户问题LLM调用大模型总结、分析、翻译知识库检索搜索文档检索公司手册条件判断分支逻辑检索到→回答没检索到→记录HTTP 请求调用外部 API调用 n8n 工作流代码执行运行 Python数据格式转换模板转换变量拼装组装 Prompt变量赋值存储中间值保存用户选择参数提取从文本提取参数提取日期/金额结束定义输出返回回答示例工作流智能客服开始用户提问 │ ▼ 知识库检索搜索公司文档 │ ├─ 检索到 → LLM 节点基于文档回答→ 结束 │ └─ 未检索到 → HTTP 请求记录到数据库→ LLM 节点说暂未收录→ 结束配置步骤拖入「开始」节点定义输入变量question用户问题拖入「知识库检索」节点输入变量选{{question}}Top K 3拖入「条件判断」节点判断检索结果是否为空检索到 → 拖入「LLM」节点Prompt 写根据以下资料回答用户问题。 资料{{检索结果}} 问题{{question}} 回答要求先给答案再附上来源。未检索到 → 拖入「HTTP 请求」节点POST 到记录接口Body{question:{{question}},timestamp:{{now}},status:unresolved}拖入「结束」节点输出 LLM 的回答右上角点「发布」工作流调试每个节点右上角有「运行」按钮可以单独测试该节点不需要从头跑整个流程。调试技巧操作说明单节点测试点节点 → 运行只跑当前节点看输出完整运行右上角运行从头跑到尾查看中间值点节点 → 查看输出检查每一步的输出修改变量开始节点 → 改输入模拟不同用户输入工作流每加 2~3 个节点就测一次别一口气搭完再调试——出了错不知道是哪个节点的问题。六、Agent——让 AI 自主调用工具Dify 内置 Agent 能力让 AI 自己决定什么时候调用什么工具。配置 Agent 应用创建应用 → 选择「Agent」选择模型必须支持 Tool Calling推荐 qwen3:8b添加工具内置工具列表工具作用需要联网搜索搜索最新信息SearXNG 或搜索引擎 API知识库检索文档已建知识库计算数学运算无代码执行运行 Python 代码无HTTP 请求调用外部 APIAPI 地址Wikipedia查百科无天气查询查天气预报API Key时间查询获取当前时间无自定义工具——通过 OpenAPI 规范进阶可跳过以下内容适合需要在 Agent 中接入第三方 API 的开发者新手先跳过。Dify 支持导入 OpenAPISwagger规范文件自动生成工具编写 OpenAPI YAML 文件openapi:3.0.0info:title:内部工具 APIversion:1.0.0servers:-url:http://localhost:8080paths:/search:get:summary:搜索内部知识description:根据关键词搜索内部知识库operationId:searchKnowledgeparameters:-name:keywordin:queryrequired:trueschema:type:stringresponses:200:description:搜索结果Dify 后台 → 工具 → 自定义 → 导入 OpenAPI 规范Agent 应用中添加该工具Agent 调用示例用户帮我查一下北京明天的天气然后算一下出差 3 天的预算每天 200 Agent 思考过程 1. 需要查天气 → 调用天气查询工具 → 获取北京明天 28°C 2. 需要算预算 → 调用计算工具 → 200 × 3 600 3. 综合回答七、Dify API——编程调用你的应用每个发布的应用都提供 REST API可以在你的代码里调用。获取 API Key应用详情 → 访问 API → 右上角复制 API Key调用聊天助手 APIimportrequestsimportos DIFY_API_URLhttp://localhost/v1DIFY_API_KEYos.getenv(DIFY_API_KEY,your-api-key-here)# 发送对话消息responserequests.post(f{DIFY_API_URL}/chat-messages,headers{Authorization:fBearer{DIFY_API_KEY},Content-Type:application/json,},json{inputs:{},# 变量值query:公司年假怎么折算,response_mode:blocking,# blocking阻塞等待streaming流式user:user-001,# 用户标识},)resultresponse.json()print(result[answer])# 输出根据《员工手册》年假按以下规则折算...调用工作流 API# 调用工作流responserequests.post(f{DIFY_API_URL}/workflows/run,headers{Authorization:fBearer{DIFY_API_KEY},Content-Type:application/json,},json{inputs:{question:产品型号 A3 的功耗是多少,},response_mode:blocking,user:user-001,},)resultresponse.json()print(result[data][outputs][result])流式响应逐字输出# 流式调用——逐字输出responserequests.post(f{DIFY_API_URL}/chat-messages,headers{Authorization:fBearer{DIFY_API_KEY},Content-Type:application/json,},json{inputs:{},query:解释什么是 RAG,response_mode:streaming,user:user-001,},streamTrue,)forlineinresponse.iter_lines():ifline:importjson datajson.loads(line.decode(utf-8).replace(data: ,))ifdata.get(event)message:print(data.get(answer,),end,flushTrue)API 接口速查表接口方法路径用途对话消息POST/v1/chat-messages发送消息获取回答工作流执行POST/v1/workflows/run执行工作流对话历史GET/v1/messages获取对话历史反馈POST/v1/feedbacks用户反馈文件上传POST/v1/files/upload上传文件停止生成POST/v1/chat-messages/:task_id/stop停止流式生成会话列表GET/v1/conversations获取会话列表删除会话DELETE/v1/conversations/:conversation_id删除会话八、多用户与权限管理用户角色角色权限说明管理员全部管理应用、用户、知识库编辑者应用知识库创建和编辑应用普通用户使用应用只能使用已发布的应用配置团队使用后台 → 设置 → 通用 → 开启「启用注册」同事访问localhost注册账号管理员分配角色和权限在应用设置中配置「可访问用户」环境变量配置Dify 的.env文件常用配置项环境变量作用默认值配置示例SECRET_KEY加密密钥自动生成32 位随机字符串CONSOLE_API_URL控制台地址http://localhosthttp://192.168.1.100APP_API_URL应用 API 地址http://localhosthttp://192.168.1.100SENTRY_DSN错误监控无Sentry DSNLOG_LEVEL日志级别INFODEBUG局域网访问需要改CONSOLE_API_URL和APP_API_URL为本机 IPCONSOLE_API_URLhttp://192.168.1.100 APP_API_URLhttp://192.168.1.100九、常见问题与排坑问题原因解决Ollama 模型验证失败容器内访问不到宿主机检查--add-hosthost.docker.internal:host-gateway地址用host.docker.internal不用localhost知识库上传后检索不到分段太长或太短调整分段长度 300~800Top K 3~5AI 回答不引用文档System Prompt 没约束加「根据知识库内容回答附上来源」检索结果全不相关Embedding 模型没配拉取nomic-embed-text在模型供应商里配工作流报错节点变量引用错误检查{{变量名}}是否正确用单节点测试排查应用发布后 API 404没发布或 API Key 错误确认应用已「发布」API Key 在「访问 API」页面复制Docker Desktop 关了 Dify 挂了容器没设自动重启docker-compose.yml 里每个服务加restart: always模型回复很慢模型太大或内存不够换小模型qwen3:4b或设置OLLAMA_KEEP_ALIVE30m知识库中文乱码文件编码不对保存为 UTF-8 编码后重新上传对话中途超时模型推理太慢调小 Max Tokens或换更快模型几个容易踩的坑地址填 localhost——Docker 容器内 localhost 指向容器自己不是你的电脑。必须填host.docker.internal。知识库什么文档都往里扔——一个库只放一个主题。FAQ 放一个库产品手册放另一个混在一起检索效率拉胯。工作流一口气搭完不测——每加 2~3 个节点测一次出了错好定位。改了应用不重新发布——API 调的还是旧版本。每次改完点「发布」。用不支持 Tool Calling 的模型做 Agent——Agent 不调用工具直接乱编。用ollama show 模型名确认支持 Function Calling推荐 qwen3。十、落地场景场景推荐模型知识库工作流配置建议公司客服机器人qwen3:8b产品手册FAQ检索→回答→记录32G 内存 RTX 4060文档问答助手qwen3:8b nomic-embed-text内部文档无16G 内存 RTX 3050智能工单分类qwen3:8b无分类→路由→派单16G 内存团队 AI 助手qwen3:8b行业知识多步推理32G 内存 RTX 4060低配尝鲜qwen3:4b简单文档无8G 内存什么情况不该用 Dify只是想跟本地模型聊聊天——直接用 Ollama 命令行或 Open WebUI 就够了Dify 的知识库和工作流用不上反而增加复杂度。需要高度自定义的 Agent 逻辑——Dify 的可视化工作流有上限复杂的多轮推理和状态管理用 LangChain 写代码更灵活。对外提供公网服务——Dify 本地部署适合内网/团队用公网暴露需要额外加 Nginx 反向代理 HTTPS 限流。核心知识点回顾安装Docker Compose 一键启动 7 个容器浏览器打开localhost进入后台接 Ollama地址填host.docker.internal:11434不是 localhost知识库上传文档 → 自动分段 → 向量化 → 混合检索 → 准确率从 30% 到 90%工作流拖拽编排开始→检索→LLM→条件判断→HTTP→结束每加节点测一次Agent选支持 Tool Calling 的模型内置搜索/计算/代码执行工具可导入自定义 OpenAPI 工具API每个发布的应用提供 REST APIPOST /v1/chat-messages发消息支持流式响应多用户开启注册分配角色权限局域网访问改CONSOLE_API_URL为本机 IP对比优势Dify 可视化界面 知识库 工作流 Agent API 多用户零代码搞定 LLM 应用本文所有配置和代码均经过验证可直接复制执行。如有问题欢迎评论区交流。觉得有用点个赞下篇讲 n8n——让 Dify 应用 7x24 小时自动跑。