手撸一个 deepseek 本地联网版且私有化部署(ollama + deepseek + langchain + searxXNG + flask)

前言

之前写过一篇 openwebui 和博查结合的 deepseek 联网教程,但是考虑到灵活性、安全性和成本问题,还是决定自己搭一个全部本地私有化的,用 langchain 框架进行开发,通篇代码都在教程里,不夹私货~

一、准备环境

  1. ollama,用于在本地运行、部署和管理大型语言模型(LLMs)。
  2. deepseek 模型,本文用的 deepseek-r1:14b。
  3. searxXNG,免费的互联网搜索引擎,用户既不被跟踪也不被分析。
  4. langchain,大语言模型应用程序的开发框架,主要 python 实现。
  5. flask,python编写的web应用框架,本文主要用来对外提供api。

二、ollama 及 deepseek 部署安装

之前写过类似教程,这里就不在写了,传送门:

保姆级教程 本地部署 deepseek + ollama + open-webui + cuda + cudnn

ollama导出导入模型 解决下载模型慢问题 deepseek + ollama + Cherry Studio 客户端(离线部署)

三、searxXNG 部署安装

  1. 基于 docker 安装,先去下载需要的配置文件,地址:https://github.com/searxng/searxng-docker
  2. 下载完,进到根目录,修改以下内容:

① 修改 docker-compose.yaml 的端口,开放外网访问(公网服务器还是要限制下,白名单或者代理之类的):

在这里插入图片描述
② 修改 Caddyfile 文件的默认 80 和 443 端口,Caddy除了应用的端口外,默认还会监听 80 和 443,为了防止和别的软件冲突,这里还是修改下:
在这里插入图片描述
③ 应用端口可以看自己情况调整,保持和 docker-compose 里面的一致:
在这里插入图片描述
④ 修改 searxng 目录下的 settings.yml 的内容

  • secret_key 随便改一个
  • limiter 改为 false,否定通过 api 会访问不了
  • 添加 json 格式,方面 api 调用
# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
  # base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
  secret_key: "admin@123456"  # change this!
  limiter: false  # can be disabled for a private instance
  image_proxy: true

search:  
  formats:
  - html
  - json

ui:
  static_use_hash: true
redis:
  url: redis://redis:6379/0

⑤ 构建并启动镜像,执行命令:

docker-compose up -d

访问localhost:8080,如下:
在这里插入图片描述

在网页上要想正常使用,还需在配置下,点击右上角首选项:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

搜索引擎好多国外的,国内用不了,所以只要勾选国内能用的,如下:

在这里插入图片描述
在这里插入图片描述

配置完之后点保存就可以正常使用了

在这里插入图片描述
在这里插入图片描述

三、开发环境准备

本文使用的 conda 管理 python 环境,创建一个 langchain 的虚拟机环境

conda create -n langchain python=3.11

使用 langchain 虚拟环境

conda activate langchain

切换pip镜像源

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple

本文用的到依赖都在存在 requirements.txt 里面,如下:

aiohappyeyeballs==2.4.6
aiohttp==3.11.12
aiosignal==1.3.2
annotated-types==0.7.0
anyio==4.8.0
attrs==25.1.0
beautifulsoup4==4.13.3
blinker==1.9.0
certifi==2025.1.31
charset-normalizer==3.4.1
click==8.1.8
colorama==0.4.6
dataclasses-json==0.6.7
faiss==1.9.0
Flask==3.1.0
frozenlist==1.5.0
greenlet==3.1.1
h11==0.14.0
html2text==2024.2.26
httpcore==1.0.7
httpx==0.28.1
httpx-sse==0.4.0
idna==3.10
itsdangerous==2.2.0
Jinja2==3.1.6
jsonpatch==1.33
jsonpointer==3.0.0
langchain==0.3.20
langchain-community==0.3.19
langchain-core==0.3.41
langchain-experimental==0.3.4
langchain-ollama==0.2.3
langchain-text-splitters==0.3.6
langsmith==0.3.8
MarkupSafe==3.0.2
marshmallow==3.26.1
mkl-service==2.4.0
multidict==6.1.0
mypy-extensions==1.0.0
ollama==0.4.7
orjson==3.10.15
propcache==0.2.1
pydantic==2.10.6
pydantic-settings==2.8.1
pydantic_core==2.27.2
pypdf==5.3.1
python-dotenv==1.0.1
PyYAML==6.0.2
requests==2.32.3
requests-toolbelt==1.0.0
sniffio==1.3.1
soupsieve==2.6
SQLAlchemy==2.0.38
tenacity
### 部署 DeepSeek Ollama 和 OpenWebUI 的本地指南 #### 安装依赖环境 为了成功部署 DeepSeek Ollama 和 OpenWebUI,在开始之前需确保安装必要的软件包和工具。通常情况下,这包括 Python 及其开发库、pip 工具以及虚拟环境支持。 对于大多数 Linux 发行而言,可以通过如下命令来准备基础环境: ```bash sudo apt-get update && sudo apt-get install python3-dev python3-pip virtualenv -y ``` #### 获取项目源码 访问官方 GitHub 或其他托管平台上的仓库页面下载最新本的 DeepSeek Ollama 和 OpenWebUI 源代码。使用 `git clone` 命令克隆远程仓库到本地机器上: ```bash git clone https://github.com/your-repo/deepseek-ollama.git cd deepseek-ollama ``` 同样的操作适用于获取 OpenWebUI 项目的源文件。 #### 设置并激活虚拟环境 创建一个新的 Python 虚拟环境有助于隔离不同应用之间的依赖关系冲突。执行以下指令完成此过程: ```bash virtualenv venv source venv/bin/activate ``` 此时终端提示符前应显示 `(venv)` 表明当前处于活动状态下的虚拟环境中工作。 #### 安装Python依赖项 进入各自的应用目录后,通过 pip 来加载所需的 Python 库列表。一般会在根路径下找到名为 requirements.txt 文件,按照下面的方式读取它来进行批量安装: ```bash pip install -r requirements.txt ``` #### 启动服务端口监听 启动应用程序服务器以便能够接收来自客户端浏览器或其他 HTTP 请求发起者的连接请求。具体做法取决于所使用的框架;如果是 Flask,则可能是这样的形式: ```python if __name__ == "__main__": app.run(host='0.0.0.0', port=8080, debug=True) ``` 请注意调整主机地址与开放端口号以适应实际网络配置需求[^1]。 #### 测试运行情况 打开 Web 浏览器输入 http://localhost:8080 访问刚刚搭建起来的服务界面。如果一切正常应该可以看到默认首页内容展示出来。尝试浏览各个功能模块验证整个系统能否稳定运作。 #### 开启安全策略 (可选) 考虑到生产环境下可能面临的潜在风险因素,建议启用 HTTPS 加密传输机制保护数据交换的安全性。可以参照相关文档学习如何利用 Let's Encrypt 提供免费 SSL/TLS 证书服务实现这一目标[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值