使用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。如果未安装,可以通过以下链接下载并安装适合我们操作系…...
deepseek 3FS编译
3FS在ubuntu22.04下的编译(记录下编译过程,方便后续使用) 环境信息 OS ubuntu 22.04内核版本 6.8.0-52-genericlibfuse 3.16.1rust 1.75.0FoundationDB 7.1.66meson 1.0.0ninja 1.10.1 libfuse编译 以下建议均在root下执行 pip3 install…...
网安知识点
1.SQL注入漏洞产生的原因是? 前端传到后端的数据,没有经过任何处理,直接当作sql语句的一部分来执行 2.讲一下sql注入,写入webshell需要哪些前提条件 开启导入导出权限secure-file-priv 站点根目录位置/路径 mysql用户对站点根目…...
UniApp 运行的微信小程序如何进行深度优化
UniApp 运行的微信小程序如何进行深度优化 目录 引言性能优化 1. 减少包体积2. 优化页面加载速度3. 减少 setData 调用4. 使用分包加载 代码优化 1. 减少不必要的代码2. 使用条件编译3. 优化图片资源 用户体验优化 1. 优化交互体验2. 预加载数据3. 使用骨架屏 调试与监控 1. …...
leetcode-sql数据库面试题冲刺(高频SQL五十题)
题目: 577.员工奖金 表:Employee -------------------- | Column Name | Type | -------------------- | empId | int | | name | varchar | | supervisor | int | | salary | int | -------------------- empId 是该表中具有唯一值的列。 该表的每一行…...
图片分类实战:食物分类问题(含半监督)
食物分类问题 simple_class 1. 导入必要的库和模块 import random import torch import torch.nn as nn import numpy as np import os from PIL import Image #读取图片数据 from torch.utils.data import Dataset, DataLoader from tqdm import tqdm from torchvision impo…...
Java初级入门学习
JAVA学习 @[TOC](JAVA学习)**一、Java初级入门学习路径****1. Java基础语法****2. 面向对象编程(OOP)****3. 数据库与JDBC****4. Java Web基础****二、主流框架推荐与学习建议****1. Spring框架****2. Spring MVC****3. MyBatis****4. Spring Boot****三、后续学习建议****1.…...
每日一练之移除链表元素
题目: 画图解析: 方法:双指针 解答代码(注:解答代码带解析): //题目给的结构体 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* }…...
BM25原理概述
1️⃣设定:对于查询 Q { q 1 , q 2 , . . . , q n } Q\text{}\{q_1,q_2,...,q_n\} Q{q1,q2,...,qn}和段落集 P { P ( 1 ) , P ( 2 ) , … , P ( N ) } \mathscr{P}\text{}\left\{P^{(1)},P^{(2)},\ldots,P^{(\text{N})}\right\} P{P(1),P(2),…,P(N)}&#…...
PAT乙级真题(2014·冬)
大纲 1031、查验身份证-(解析)-简单题 1032、挖掘机技术哪家强-(解析)-细节题(┬┬﹏┬┬),太抠细节了 1033、旧键盘打字-(解析)-输入格式!这才是重点(┬┬﹏┬┬),让…...
力大砖飞,纯暴力搜索——蓝桥p2110(写着玩的)
#include<bits/stdc.h>const int N1000000;using namespace std;bool mp[2][N];int cnt0; int n;void dfs(int row,int col){cntcnt%1000000007;if(coln && row2){cnt;return ;}if(row>2){ //下一列 dfs(0,col1);return;}if(mp[row][col]1){ //下一行 dfs(row…...
如何计算两个向量的余弦相似度
参考笔记: https://zhuanlan.zhihu.com/p/677639498 日常学习之:如何计算两个向量或者矩阵的余弦相似度-CSDN博客 1.余弦相似度定理 百度的解释:余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估…...
OkHttp:工作原理 拦截器链深度解析
目录 一、OKHttp 的基本使用 1. 添加依赖 2. 发起 HTTP 请求 3. 拦截器(Interceptor) 4. 高级配置 二、OKHttp 核心原理 1. 责任链模式(Interceptor Chain) 2. 连接池(ConnectionPool) 3. 请求调度…...
python: DDD+ORM using oracle 21c
sql script: create table GEOVINDU.School --創建表 ( SchoolId char(5) NOT NULL, -- SchoolName nvarchar2(500) NOT NULL, SchoolTelNo varchar(8) NULL, PRIMARY KEY (SchoolId) --#主鍵 );create table GEOVINDU.Teacher ( TeacherId char(5) NOT NULL , TeacherFirstNa…...
基于 LeNet 网络的 MNIST 数据集图像分类
1.LeNet的原始实验数据集MNIST 名称:MNIST手写数字数据集 数据类型:灰度图 (一通道) 图像大小:28*28 类别数:10类(数字0-9) 1.通过torchvision.datasets.MNIST下载并保存到本地…...
Day4 C语言与画面显示练习
文章目录 1. harib01a例程2. harib01b例程3. harib01e例程4. harib01f例程5. harib01h例程 1. harib01a例程 上一章主要是将画面搞成黑屏,如果期望做点什么图案,只需要再VRAM里写点什么就好了,使用nask汇编语言实现一个函数write_mem8&#…...
一周热点-OpenAI 推出了 GPT-4.5,这可能是其最后一个非推理模型
在人工智能领域,大型语言模型一直是研究的热点。OpenAI 的 GPT 系列模型在自然语言处理方面取得了显著成就。GPT-4.5 是 OpenAI 在这一领域的又一力作,它在多个方面进行了升级和优化。 1 新模型的出现 GPT-4.5 目前作为研究预览版发布。与 OpenAI 最近的 o1 和 o3 模型不同,…...
《UE5_C++多人TPS完整教程》学习笔记34 ——《P35 网络角色(Network Role)》
本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P35 网络角色(Network Role)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Stephe…...
手写简易Tomcat核心实现:深入理解Servlet容器原理
目录 一、Tomcat概况 1. tomcat全局图 2.项目结构概览 二、实现步骤详解 2.1 基础工具包(com.qcby.util) 2.1.1 ResponseUtil:HTTP响应生成工具 2.1.2 SearchClassUtil:类扫描工具 2.1.3 WebServlet:自定义注解…...
ES Filter Query 区别
在 Elasticsearch(ES) 中,Filter 和 Query 是两种常用的数据检索方式,它们的主要区别在于 是否计算相关性分数(Score) 以及 是否使用缓存。以下是它们的详细区别和应用场景: 1. 核心区别 特性F…...
Java多线程与高并发专题——关于CopyOnWrite 容器特点
引入 在 CopyOnWriteArrayList 出现之前,我们已经有了 ArrayList 和 LinkedList 作为 List 的数组和链表的实现,而且也有了线程安全的 Vector 和Collections.synchronizedList() 可以使用。 首先我们来看看Vector是如何实现线程安全的 ,还是…...
春节面对大流量并发,系统该如何设计
基于6个层次进行系统设计以解决大流量瞬时并发问题:CDN层,Nginx层,服务层,缓存层,数据库层,全链路压测监控。以下为具体设计参考 1. CDN(内容分发网络) 作用:静态资源&…...
mac本地安装运行Redis-单机
记录一下我以前用的连接服务器的跨平台SSH客户端。 因为还要准备毕设...... 服务器又过期了,只能把redis安装下载到本地了。 目录 1.github下载Redis 2.安装homebrew 3.更新GCC 4.自行安装Redis 5.通过 Homebrew 安装 Redis 安装地址:https://git…...
77.ObservableCollection使用介绍1 C#例子 WPF例子
可观察集合ObservableCollection using System; using System.Collections.ObjectModel;class Program {static void Main(){// 创建一个可观察集合ObservableCollection<string> list new ObservableCollection<string>();// 注册集合变化事件list.CollectionCh…...
【ThreeJS Basics 09】Debug
文章目录 简介从 dat.GUI 到 lil-gui例子安装 lil-gui 并实例化不同类型的调整改变位置针对非属性的调整复选框颜色 功能/按钮调整几何形状文件夹调整 GUI宽度标题关闭文件夹隐藏按键切换 结论 简介 每一个创意项目的一个基本方面是能够轻松调整。开发人员和参与项目的其他参与…...
在 k8s中查看最大 CPU 和内存的极限
在 Kubernetes(k8s)中,你可以从不同层面查看最大 CPU 和内存的极限,下面为你详细介绍从节点和集群层面查看的方法。 查看节点的 CPU 和内存极限 节点的 CPU 和内存极限是指单个节点上可分配的最大资源量,可通过以下几…...
【笔记】STM32L4系列使用RT-Thread Studio电源管理组件(PM框架)实现低功耗
硬件平台:STM32L431RCT6 RT-Thread版本:4.1.0 目录 一.新建工程 二.配置工程 编辑 三.移植pm驱动 四.配置cubeMX 五.修改驱动文件,干掉报错 六.增加用户低功耗逻辑 1.设置唤醒方式 2.设置睡眠时以及唤醒后动作 编辑 3.增加测试命…...
类和对象:
1. 类的定义: 1. 类定义格式: 对于我们的类的话,我们是把类看成一个整体,我们的函数里面没有找到我们的成员变量,我们就在我们的类里面找。 我们看我们的第二点: 我们的类里面,我们通常会对…...
【十三】Golang 通道
💢欢迎来到张胤尘的开源技术站 💥开源如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 通道通道声明初始化缓冲机制无缓冲通道代码示例 带…...
对接RAGflow的API接口报错
对接RAGflow的API接口,报错: {"status":"success","message":"API连接正常","response":{"code":109,"data":false,"message":"Authentication error: API key …...
