私有化部署 DeepSeek + Dify,构建你的专属私人 AI 助手
私有化部署 DeepSeek + Dify,构建你的专属私人 AI 助手
概述
DeepSeek 是一款开创性的开源大语言模型,凭借其先进的算法架构和反思链能力,为 AI 对话交互带来了革新性的体验。通过私有化部署,你可以充分掌控数据安全和使用安全。你还可以灵活调整部署方案,并实现便捷的自定义系统。
Dify 作为同样开源的 AI 应用开发平台,提供完整的私有化部署方案。通过将本地部署的 DeepSeek 服务无缝集成到 Dify 平台,企业可以在确保数据隐私的前提下,在本地服务器环境内构建功能强大的 AI 应用。
以下是私有化部署方案的优势:
- 性能卓越:提供媲美商业模型的对话交互体验
- 环境隔离:完全离线运行,杜绝数据外泄风险
- 数据可控:完全掌控数据资产,符合合规要求
前置准备
硬件环境:
- CPU >= 2 Core
- 显存/RAM ≥ 16 GiB(推荐)
软件环境:
- Docker
- Docker Compose
- Ollama
- Dify 社区版
开始部署
1. 安装 Ollama
Ollama 是一款跨平台的大模型管理客户端(MacOS、Windows、Linux),旨在无缝部署大型语言模型 (LLM),例如 DeepSeek、Llama、Mistral 等。Ollama 提供大模型一键部署,所有使用数据均会保存在本地机器内,提供全方面的数据隐私和安全性。
访问 Ollama 官网,根据提示下载并安装 Ollama 客户端。安装完成后,在终端内运行 ollama -v 命令将输出版本号。
➜ ~ ollama -v
ollama version is 0.5.5
根据实际的环境配置,选择合适的 DeepSeek 尺寸模型进行部署。初次安装推荐安装 7B 尺寸模型。

运行命令 ollama run deepseek-r1:7b 安装 DeepSeek R1 模型。

2. 安装 Dify 社区版
访问 Dify GitHub 项目地址,运行以下命令完成拉取代码仓库和安装流程。
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d # 如果版本是 Docker Compose V1,使用以下命令:docker-compose up -d
运行命令后,你应该会看到所有容器的状态和端口映射。详细说明请参考 Docker Compose 部署。
Dify 社区版默认使用 80 端口,点击链接 http://your_server_ip 即可访问你的私有化 Dify 平台。
3. 将 DeepSeek 接入至 Dify
点击 Dify 平台右上角头像 → 设置 → 模型供应商,选择 Ollama,轻点“添加模型”。

模型供应商内的 DeepSeek 对应在线 API 服务;本地部署的 DeepSeek 模型对应 Ollama 客户端。请确保 DeepSeek 模型已成功部署由 Ollama 客户端部署,详细部署说明请参考上文。
选择 LLM 模型类型。
- Model Name,填写具体部署的模型型号。上文部署的模型型号为 deepseek-r1 7b,因此填写
deepseek-r1:7b - Base URL,填写 Ollama 客户端的运行地址,通常为
http://your_server_ip:11434。如遇连接问题,请阅读中常见问题。 - 其它选项保持默认值。根据 DeepSeek 模型说明,最大生成长度为 32,768 Tokens。

搭建 AI 应用
DeepSeek AI Chatbot(简单应用)
- 轻点 Dify 平台首页左侧的"创建空白应用",选择"聊天助手"类型应用并进行简单的命名。

- 在右上角的应用类型,选择 Ollama 框架内的
deepseek-r1:7b模型。

- 在预览对话框中输入内容,验证 AI 应用是否能够正常运行。生成答复后意味着 AI 应用的搭建已完成。

- 轻点应用右上方的发布按钮,获取 AI 应用链接并分享给他人或嵌入至其它网站内。
DeepSeek AI Chatflow / Workflow(进阶应用)
Chatflow / Workflow 应用可以帮助你搭建功能更加复杂的 AI 应用,例如具备文件识别、图像识别、语音识别等能力。详细说明请参考工作流文档。
- 轻点 Dify 平台首页左侧的"创建空白应用",选择"Chatflow" 或 “Workflow” 类型应用并进行简单的命名。

- 添加 LLM 节点,选择 Ollama 框架内的
deepseek-r1:7b模型,并在系统提示词内添加{{#sys.query#}}变量以连接起始节点。如遇 API 异常,可以通过负载均衡功能或异常处理节点进行处理。

- 添加结束节点完成配置。你可以在预览框中输入内容以进行测试。生成答复后意味着 AI 应用的搭建已完成。

常见问题
1. Docker 部署时的连接错误
当使用 Docker 部署 Dify 和 Ollama 时,可能遇到以下错误:
httpconnectionpool(host=127.0.0.1, port=11434): max retries exceeded with url:/cpi/chat
(Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f8562812c20>:
fail to establish a new connection:[Errno 111] Connection refused'))
httpconnectionpool(host=localhost, port=11434): max retries exceeded with url:/cpi/chat
(Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f8562812c20>:
fail to establish a new connection:[Errno 111] Connection refused'))
错误原因:此错误发生是因为 Ollama 服务在 Docker 容器中无法访问。localhost 通常指向容器本身,而不是主机或其他容器。要解决此问题,需要将 Ollama 服务暴露到网络中。
macOS 环境配置方法:
如果 Ollama 作为 macOS 应用运行,需要使用 launchctl 设置环境变量:
-
通过调用
launchctl setenv设置环境变量:launchctl setenv OLLAMA_HOST "0.0.0.0" -
重启 Ollama 应用程序。
-
如果以上步骤无效,可以使用以下方法:
问题是在 docker 内部,你应该连接到
host.docker.internal,才能访问 docker 的主机,所以将localhost替换为host.docker.internal服务就可以生效了:http://host.docker.internal:11434
Linux 环境配置方法:
如果 Ollama 作为 systemd 服务运行,应该使用 systemctl 设置环境变量:
-
通过调用
systemctl edit ollama.service编辑 systemd 服务。这将打开一个编辑器。 -
对于每个环境变量,在
[Service]部分下添加一行Environment:[Service] Environment="OLLAMA_HOST=0.0.0.0" -
保存并退出。
-
重载
systemd并重启 Ollama:systemctl daemon-reload systemctl restart ollama
Windows 环境配置方法:
在 Windows 上,Ollama 继承了你的用户和系统环境变量。
-
首先通过任务栏点击 Ollama 退出程序
-
从控制面板编辑系统环境变量
-
为你的用户账户编辑或新建变量,比如
OLLAMA_HOST、OLLAMA_MODELS等。 -
点击 OK / 应用保存
-
在一个新的终端窗口运行
ollama
2. 如何修改 Ollama 服务地址和端口号?
Ollama 默认绑定 127.0.0.1 端口 11434,你可以通过 OLLAMA_HOST 环境变量更改绑定地址。
- 作者:langgenius
- https://github.com/langgenius/dify-docs/blob/main/zh_CN/learn-more/use-cases/private-ai-deepseek-dify.md
相关文章:
私有化部署 DeepSeek + Dify,构建你的专属私人 AI 助手
私有化部署 DeepSeek Dify,构建你的专属私人 AI 助手 概述 DeepSeek 是一款开创性的开源大语言模型,凭借其先进的算法架构和反思链能力,为 AI 对话交互带来了革新性的体验。通过私有化部署,你可以充分掌控数据安全和使用安全。…...
【Elasticsearch】post_filter
post_filter是 Elasticsearch 中的一种后置过滤机制,用于在查询执行完成后对结果进行过滤。以下是关于post_filter的详细介绍: 工作原理 • 查询后过滤:post_filter在查询执行完毕后对返回的文档集进行过滤。这意味着所有与查询匹配的文档都…...
验证工具:GVIM和VIM
一、定义与关系 gVim:gVim是Vim的图形界面版本,提供了更多的图形化功能,如菜单栏、工具栏和鼠标支持。它使得Vim的使用更加直观和方便,尤其对于不习惯命令行界面的用户来说。Vim:Vim是一个在命令行界面下运行的文本编…...
如何优化垃圾回收机制?
垃圾回收机制 掌握 GC 算法之前,我们需要先弄清楚 3 个问题。第一,回收发生在哪里?第二,对象在 什么时候可以被回收?第三,如何回收这些对象? 回收发生在哪里? JVM 的内存区域中&…...
beyond the ‘PHYSICAL‘ memory limit.问题处理
Container [pid5616,containerIDcontainer_e50_1734408743176_3027740_01_000006] is running 507887616B beyond the ‘PHYSICAL’ memory limit. Current usage: 4.5 GB of 4 GB physical memory used; 6.6 GB of 8.4 GB virtual memory used. Killing container. 1.增大map…...
Day36【AI思考】-表达式知识体系总览
文章目录 **表达式知识体系总览**回答1:**表达式知识体系****一、三种表达式形式对比****二、表达式转换核心方法****1. 中缀转后缀(重点)****2. 中缀转前缀** **三、表达式计算方法****1. 后缀表达式计算(栈实现)****…...
段错误(Segmentation Fault)调试
1. 使用 GDB(GNU Debugger) GDB 是一个强大的调试工具,可以帮助你逐步执行程序并检查变量状态。 编译时添加调试信息: gcc -g your_program.c -o your_program启动 GDB: gdb ./your_program运行程序: …...
每日Attention学习19——Convolutional Multi-Focal Attention
每日Attention学习19——Convolutional Multi-Focal Attention 模块出处 [ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation 模块名称 Convolutional Multi-Focal Atte…...
LeetCode题练习与总结:三个数的最大乘积--628
一、题目描述 给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例 1: 输入:nums [1,2,3] 输出:6示例 2: 输入:nums [1,2,3,4] 输出:24示例 3&a…...
Colorful/七彩虹 隐星P15 TA 24 原厂Win11 家庭版系统 带F9 Colorful一键恢复功能
Colorful/七彩虹 隐星P15 TA 24 原厂Win11 家庭中文版系统 带F9 Colorful一键恢复功能 自动重建COLORFUL RECOVERY功能 带所有随机软件和机型专用驱动 支持机型:隐星P15 TA 24 文件下载:asusoem.cn/745.html 文件格式:ISO 系统版本&…...
第二篇:多模态技术突破——DeepSeek如何重构AI的感知与认知边界
——从跨模态对齐到因果推理的工程化实践 在AI技术从单一模态向多模态跃迁的关键阶段,DeepSeek通过自研的多模态融合框架,在视觉-语言-语音的联合理解与生成领域实现系统性突破。本文将从技术实现层面,解构其跨模态表征学习、动态融合机制与…...
CTreeCtrl 设置图标
mfc界面修改真难受 使用CTreeCtrl 进行设置导航视图时,有时候需要设置图标,一般使用如下代码 m_TreeViewImages.DeleteImageList();UINT uiBmpId IDB_ICONLIST_TREE;CBitmap bmp; if (!bmp.LoadBitmap(uiBmpId)) return;BITMAP bmpObj; bmp.GetBitmap…...
在JAX-RS中获取请求头信息的方法
在JAX-RS中获取请求头信息的方法 HeaderParam注解,可以直接将请求头中的特定值注入到方法参数中,代码示例: import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; import javax.ws.rs.Path; import javax.ws.rs.core.Response;Path(&q…...
Java 面试之结束问答
技术优化 线程池优化 设置最大线程数设置最小核心线程数设置额外线程存活时间选择线程池队列选择合适的线程池选择合适的饱和策略 锁优化 尽量不要锁住方法缩小同步代码块,只锁数据锁中尽量不要再包含锁将锁私有化,在内部管理锁进行适当的锁分解 HT…...
柔性数组与c/c++程序中内存区域的划分
1.柔性数组 1.1柔性数组的定义 柔性数组是指在结构体中定义的,其大小在编译时未确定,而在运行时动态分配的数组。这种数组允许结构体的大小根据需要动态变化。语法如下: struct D {int a;int arry1[0]; };struct F {int a;int arry2[]; };…...
mini-lsm通关笔记Week2Day7
项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm 在上一章中,您已经构建了一个完整的基于LSM的存储引擎。在本周末,我们将实现存储引擎的一些简单但重要的优化。欢迎来到Mini-LSM的…...
Typora免费使用
一.下载地址 https://typoraio.cn/ 二.修改配置文件 1.找到安装路径下的LicenseIndex.180dd4c7.4da8909c.chunk.js文件 文件路径为:安装路径\resources\page-dist\static\js\LicenseIndex.180dd4c7.4da8909c.chunk.js 将js中的 e.hasActivated"true"e.hasActiva…...
AI驱动的无线定位:基础、标准、最新进展与挑战
1. 论文概述 研究目标:本论文旨在综述AI在无线定位领域的应用,包括其基础理论、标准化进展、最新技术发展,以及面临的挑战和未来研究方向。主要发现: AI/ML 技术已成为提升无线定位精度和鲁棒性的关键手段,特别是在 3GPP 标准的推动下。论文系统性地分析了 AI 在 LOS/NLOS…...
苹果再度砍掉AR眼镜项目?AR真的是伪风口吗?
曾经,AR游戏一度异常火热,宝可梦go让多少人不惜翻墙都要去玩,但是也没过去几年,苹果被曝出再度砍掉了AR眼镜项目,面对着市场的变化,让人不禁想问AR真的是伪风口吗? 一、苹果再度砍掉AR眼镜项目&…...
18 大量数据的异步查询方案
在分布式的应用中分库分表大家都已经熟知了。如果我们的程序中需要做一个模糊查询,那就涉及到跨库搜索的情况,这个时候需要看中间件能不能支持跨库求交集的功能。比如mycat就不支持跨库查询,当然现在mycat也渐渐被摒弃了(没有处理笛卡尔交集的…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
