使用Node.js从零搭建DeepSeek本地部署(Express框架、Ollama)
目录
- 1.安装Node.js和npm
- 2.初始化项目
- 3.安装Ollama
- 4.下载DeepSeek模型
- 5.创建Node.js服务器
- 6.运行服务器
- 7.Web UI对话-Chrome插件-Page Assist
1.安装Node.js和npm
- 首先确保我们机器上已经安装了Node.js和npm。如果未安装,可以通过以下链接下载并安装适合我们操作系统的版本:
Node.js官方下载页面 - 关于Node.js的安装可以参考该篇文章:
Node.js的安装及环境配置【超详细】 - 安装完成后,可以通过以下命令检查是否安装成功:
node -v
npm -v
- 安装成功界面:


2.初始化项目
- 使用以下命令,创建一个新的文件夹作为项目目录,并初始化一个Node.js项目:
mkdir deepseek-nodejs
cd deepseek-nodejs
npm init -y
- 如下图:

- 以上命令会在当前目录下生成一个package.json文件,用于管理项目的依赖关系和其他配置信息。
3.安装Ollama
- 访问Ollama官网下载适合我们电脑操作系统的安装包,并按照提示进行安装:
Ollama官方下载页面 - 对于Linux用户,可以通过以下命令直接安装:
curl -fsSL https://ollama.com/install.sh | sh
- 安装完成后,验证是否成功安装:
ollama -v
- 如下图:

4.下载DeepSeek模型
- 安装完Ollama后,我们可以通过其界面选择并下载DeepSeek-R1模型。以下是下载并运行DeepSeek-R1 1.5B版本的示例命令:
ollama run deepseek-r1:1.5b
根据我们机器的硬件配置,可以选择不同规模的模型版本,如7B、14B等
- 不同模型创建命令:
创建命令 - 不同规模的模型版本参数核心区别:
| 参数规模 | 特点和应用场景 | 部署需求和资源消耗 | 应用场景 |
|---|---|---|---|
| 1.5B | 适合简单的文本生成任务,如客服话术和短文案生成,但逻辑推理能力较弱 | 适合本地部署,资源消耗低,可以在消费级显卡上运行 | 生成食谱步骤和基础问答 |
| 7B-8B | 适合多轮对话和中等复杂度的任务,如代码补全和基础科研工作 | 适合本地部署,资源消耗低,可以在消费级显卡上运行 | ChatGPT级对话和中等复杂度代码生成 |
| 14B | 适合多轮对话和中等复杂度的任务,如代码补全和基础科研工作 | 需要在高性能GPU上运行,如A100/H100/H800等 | 科研论文辅助撰写和跨领域知识推理 |
| 32B | 具备接近人类水平的复杂任务处理能力,如法律文档分析和数学证明 | 需要在高性能GPU上运行,如A100/H100/H800等 | 科研论文辅助撰写和跨领域知识推理 |
| 70B | 适用于前沿研究和超高性能计算场景 | 需要多卡并行和云服务支持,适用于全球高并发场景 | 多模态融合和超长文本生成(如小说/剧本) |
| 671B | 顶尖多任务能力,接近通用人工智能(AGI),适合科研和超大规模企业 | 需要多卡并行和云服务支持,适用于全球高并发场景 | 多模态融合和超长文本生成(如小说/剧本) |
- 如下图:
注意:下载过程中,最开始下载速度可能要快一些,下载到后面可能就几十KB/s了,此时我们可以按Ctrl+C停止下载,然后再重新执行下载命令,此时的下载速度又恢复到了几MB/s了,如此循环往复操作,很快下载好

- 执行成功,可以问答:

- 使用 /bye 命令进行退出:

5.创建Node.js服务器
- 为了使DeepSeek可以通过API接口访问,我们可以使用Express框架创建一个简单的Node.js服务器。首先,安装Express:
npm install express
- 关于Express可以参考该篇文章:
当面试官问你关于Node.js的开发框架Express时,你怎么回答? - 然后,在项目根目录下创建一个名为server.js的文件,并添加以下示例代码:
const express = require('express');
const { exec } = require('child_process');const app = express();
const PORT = process.env.PORT || 3000;app.use(express.json());app.post('/query', (req, res) => {const query = req.body.query;if (!query) {return res.status(400).send({ error: 'query必填'});}// 使用提供的查询执行ollama命令exec(`ollama run deepseek-r1:1.5b -- ${query}`, (error, stdout, stderr) => {if (error) {return res.status(500).send({ error: '请求出错' });}res.send({ response: stdout });});
});app.listen(PORT, () => {console.log(`服务运行在${PORT}端口`);
});
- 这段代码设置了一个简单的HTTP服务器,监听/query端点上的POST请求,并将接收到的查询传递给Ollama执行的DeepSeek模型。响应结果将以JSON格式返回给客户端。
6.运行服务器
- 完成上述步骤后,可以在终端中通过以下命令启动服务器:
node server.js
- 在postman或者apifox中访问http://localhost:3000/query,并通过发送POST请求来与DeepSeek模型进行交互:

7.Web UI对话-Chrome插件-Page Assist
- 通过终端窗口进行对话不够直观,所以通过第三方Web UI来实现对话效果
- 通过谷歌浏览器官方插件地址搜索Page Assist,点击Page Assist - 本地 AI 模型的 Web UI:
谷歌应用商店

- 安装完成后,将该插件固定到浏览器顶部,方便使用:

- 使用时,点击图标,会跳转到使用界面,可以看到画面中间的“Ollama is running”,因为我们的Ollama软件已启动,只有启动才可正常使用:

- 设置为中文:

- 选择模型,因为我们只配置了1.5B,所以只能选择1.5B:

- 此时,即可正常使用,觉得1.5B不够,可以根据机器条件,下载其他更高版本的模型使用:

相关文章:
使用Node.js从零搭建DeepSeek本地部署(Express框架、Ollama)
目录 1.安装Node.js和npm2.初始化项目3.安装Ollama4.下载DeepSeek模型5.创建Node.js服务器6.运行服务器7.Web UI对话-Chrome插件-Page Assist 1.安装Node.js和npm 首先确保我们机器上已经安装了Node.js和npm。如果未安装,可以通过以下链接下载并安装适合我们操作系…...
Docker 部署 MongoDB 并持久化数据
Docker 部署 MongoDB 并持久化数据 在现代开发中,MongoDB 作为 NoSQL 数据库广泛应用,而 Docker 则提供了高效的容器化方案。本教程将介绍如何使用 Docker 快速部署 MongoDB,并实现数据持久化,确保数据不会因容器重启或删除而丢失…...
DeepSeek + 沉浸式翻译 打造智能翻译助手
本文详细介绍如何使用 DeepSeek API 沉浸式翻译插件打造个性化翻译助手。 一、DeepSeek API 配置 基础配置 API 基础地址:https://api.deepseek.com需要申请 API Key支持与 OpenAI SDK 兼容的调用方式 可用模型 deepseek-chat:已升级为 DeepSeek-V3&am…...
cdn取消接口缓存
添加cdn后,使用cdn加速域名访问接口 是缓存,不是最新的数据,如果使用局域网则是最新的数据,如果修改配置,确保使用cdn域名请求的接口返回不是缓存 要确保通过CDN加速域名访问接口时返回的是最新的数据,而不…...
字节跳动C++客户端开发实习生内推-抖音基础技术
智能手机爱好者和使用者,追求良好的用户体验; 具有良好的编程习惯,代码结构清晰,命名规范; 熟练掌握数据结构与算法、计算机网络、操作系统、编译原理等课程; 熟练掌握C/C/OC/Swift一种或多种语言ÿ…...
OpenHarmony子系统开发编译构建指导
OpenHarmony子系统开发编译构建指导 概述 OpenHarmony编译子系统是以GN和Ninja构建为基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统,该系统提供以下基本功能: 以部件为最小粒度拼装产品和独…...
MySQL进阶-关联查询优化
采用左外连接 下面开始 EXPLAIN 分析 EXPLAIN SELECT SQL_NO_CACHE * FROM type LEFT JOIN book ON type.card book.card; 结论:type 有All ,代表着全表扫描,效率较差 添加索引优化 ALTER TABLE book ADD INDEX Y ( card); #【被驱动表】࿰…...
数据结构第六节:二叉搜索树(BST)的基本操作与实现
【本节要点】 二叉搜索树(BST)基本原理代码实现核心操作实现辅助函数测试代码完整代码 一、二叉搜索树(BST)基本原理与设计总结 注:基本原理的详细分析可以在数据结构第六节中查看,这里是简单描述。 二叉搜…...
在昇腾GPU上部署DeepSeek大模型与OpenWebUI:从零到生产的完整指南
引言 随着国产AI芯片的快速发展,昇腾(Ascend)系列GPU凭借其高性能和兼容性,逐渐成为大模型部署的重要选择。本文将以昇腾300i为例,手把手教你如何部署DeepSeek大模型,并搭配OpenWebUI构建交互式界面。无论…...
在window终端创建docker容器的问题
问题: 错误原因: PowerShell 换行符错误 PowerShell 中换行应使用反引号而非反斜杠 \,错误的换行符导致命令解析中断。 在 Windows 的 PowerShell 中运行 Docker 命令时遇到「sudo 无法识别」的问题,这是因为 Windows 系统原生不…...
掌握Kubernetes Network Policy,构建安全的容器网络
在 Kubernetes 集群中,默认情况下,所有 Pod 之间都是可以相互通信的,这在某些场景下可能会带来安全隐患。为了实现更精细的网络访问控制,Kubernetes 提供了 Network Policy 机制。Network Policy 允许我们定义一组规则,…...
ReAct论文阅读笔记总结
ReAct:Synergizing Reasoning and Acting in Language Models 背景 最近的研究结果暗示了在自主系统中结合语言推理与交互决策的可能性。 一方面,经过适当Prompt的大型语言模型(LLMs)已经展示了在算术、常识和符号推理任务中通…...
Linux云计算SRE-第十七周
1. 做三个节点的redis集群。 1、编辑redis节点node0(10.0.0.100)、node1(10.0.0.110)、node2(10.0.0.120)的安装脚本 [rootnode0 ~]# vim install_redis.sh#!/bin/bash # 指定脚本解释器为bashREDIS_VERSIONredis-7.2.7 # 定义Redis的版本号PASSWORD123456 # 设置Redis的访问…...
Python在数字货币交易中的算法设计:从策略到实践
Python在数字货币交易中的算法设计:从策略到实践 随着区块链技术的发展和加密货币市场的繁荣,数字货币交易已经成为金融领域的一个重要分支。从个体投资者到量化基金,算法交易(Algorithmic Trading)正在为提高交易效率和决策质量提供强大的支撑。在这些技术应用中,Pytho…...
高纬度、跨极区导航技术
本文是何昆鹏老师所写,在此非常感谢何老师的分享。 全球导航,特别是极区导航,一直被美俄导航领域所关注。美俄本身部分国土就处于极区,很多战略军事部署与全球航线也都处于该区域,加之其战略军事任务也都强调全球覆盖…...
用AI学编程2——python学习1
一个py文件,学会所有python所有语法和特性,给出注释,给出这样的文件 Python 学习整合文件 """ Python 学习整合文件 包含 Python 的基础语法、数据结构、函数定义、面向对象编程、异常处理、文件操作、高级特性等内容 每个部…...
用数据唤醒深度好眠,时序数据库 TDengine 助力安提思脑科学研究
在智能医疗与脑科学快速发展的今天,高效的数据处理能力已成为突破创新的关键。安提思专注于睡眠监测与神经调控,基于人工智能和边缘计算,实现从生理体征监测、智能干预到效果评估的闭环。面对海量生理数据的存储与实时计算需求,安…...
Ubuntu下MySQL的安装与使用(一)
目录 用户切换 MySQL的安装 MySQL的初步使用 登录与退出 Linux和mysql中的普通用户和root用户 查看、创建与使用 简单应用 MySQL 数据库在 Linux 文件系统中的存储结构 数据库、数据库服务、数据库管理系统(宏观) 微观下的DBMS SQL语言及其分…...
步进电机软件细分算法解析与实践指南
1. 步进电机细分技术概述 步进电机是一种将电脉冲信号转换为角位移的执行机构,其基本运动单位为步距角。传统步进电机的步距角通常为 1.8(对应 200 步 / 转),但在高精度定位场景下,这种分辨率已无法满足需求。细分技术…...
pytorch retain_grad vs requires_grad
requires_grad大家都挺熟悉的,因此穿插在retain_grad的例子里进行捎带讲解就行。下面看一个代码片段: import torch# 创建一个标量 tensor,并开启梯度计算 x torch.tensor(2.0, requires_gradTrue)# 中间计算:y 依赖于 x&#x…...
百川2-13B-Chat惊艳效果展示:同一提示词下Temperature=0.3与0.9输出对比
百川2-13B-Chat惊艳效果展示:同一提示词下Temperature0.3与0.9输出对比 你有没有想过,同一个问题问给同一个AI,为什么每次的回答都不太一样?有时候它像个严谨的学者,回答得一丝不苟;有时候又像个天马行空的…...
告别SD卡!用ADB在Windows PowerShell里给开发板传文件,保姆级避坑指南
告别SD卡!用ADB在Windows PowerShell里给开发板传文件,保姆级避坑指南 嵌入式开发中,文件传输一直是个高频痛点。每次修改代码后,传统方式要么拔出SD卡用读卡器拷贝,要么搭建FTP/NFS网络共享,不仅步骤繁琐…...
ESP32-C3实战:低功耗WiFi与BLE信号扫描及JSON数据上报方案
1. ESP32-C3双模信号扫描方案设计 ESP32-C3作为乐鑫推出的RISC-V架构物联网芯片,其内置的WiFi 4和BLE 5.0双模射频模块非常适合环境信号监测场景。在实际项目中,我经常用它来构建智能家居信号质量分析仪、商场客流监测终端等设备。相比传统方案需要外接…...
出差党/远程办公必备:用OpenWrt软路由打造你的随身‘家庭办公室’(支持Windows远程唤醒与桌面)
移动办公革命:OpenWrt软路由构建高效远程办公系统 1. 现代远程办公的痛点与解决方案 作为一名常年奔波于各大城市的咨询顾问,我深刻理解移动办公的痛点:酒店网络不稳定、公共WiFi安全隐患、重要文件无法随时调取、高性能工作站闲置在家...直到…...
C++多线程编程:为什么compare_exchange_weak比strong更适合循环场景?
C多线程编程:为什么compare_exchange_weak比strong更适合循环场景? 在构建高性能并发系统时,C开发者常常需要在原子操作的精确性和执行效率之间寻找平衡点。compare_exchange系列函数作为无锁编程的核心工具,其强弱两种变体的选择…...
LFM2.5-1.2B-Thinking-GGUF案例分享:为国产操作系统社区生成的发行版更新日志摘要
LFM2.5-1.2B-Thinking-GGUF案例分享:为国产操作系统社区生成的发行版更新日志摘要 1. 模型简介 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。该模型采用GGUF格式存储,配合llama.cpp运行时&…...
Google Test进阶玩法:用测试夹具重构你的C++项目(CLion实战篇)
Google Test进阶实战:用测试夹具重构复杂C项目的工程化实践 当你的C项目从几百行扩展到几万行代码时,那些曾经简单的单元测试开始变得力不从心。测试用例之间出现隐蔽的状态依赖,setup代码重复率飙升,而每次运行测试套件的时间越来…...
手把手教你部署造相Z-Image v2:内置模型版,开箱即用免配置
手把手教你部署造相Z-Image v2:内置模型版,开箱即用免配置 1. 为什么选择造相Z-Image v2? 如果你正在寻找一个既强大又易于部署的文生图模型,造相Z-Image v2绝对值得考虑。这个由阿里通义万相团队开源的模型,拥有20亿…...
PyTorch Geometric安装避坑指南:从依赖冲突到版本匹配,手把手带你搞定PyG环境
PyTorch Geometric安装避坑指南:从依赖冲突到版本匹配 每次打开终端准备安装PyTorch Geometric(PyG)时,那种既期待又忐忑的心情,相信很多图神经网络(GNN)开发者都深有体会。明明按照官方文档一…...
BLIP-Diffusion实战解析:如何通过预训练主题表示实现高效可控的图像生成
1. BLIP-Diffusion的核心创新点解析 第一次看到BLIP-Diffusion这个模型时,最让我惊讶的是它解决了一个困扰行业多年的难题:如何在不需要反复微调的情况下,让AI生成的图像既保持输入主题的特征,又能灵活响应文本指令。这就像教一个…...
