当前位置: 首页 > news >正文

使用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不够,可以根据机器条件,下载其他更高版本的模型使用:
    在这里插入图片描述

相关文章:

  • 【C#】async与await介绍
  • JAVASE(一)
  • 计算机视觉|3D卷积网络VoxelNet:点云检测的革新力量
  • Unity组件TrailRenderer屏幕滑动拖尾
  • 策略模式详解:实现灵活多样的支付方式
  • 数据上新 | 专业领域多语种对话语音数据集
  • P63 C++当中的计时
  • 不小心更改了/etc权限为777导致sudo,ssh等软件都无法使用
  • “此电脑”中删除WPS云盘方法(百度网盘通用)
  • 10 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar头像组件开发教程(一)
  • 为何吹订单?因为特斯拉的销量已遥遥领先,掩耳盗铃之举!
  • 第10章 metasploit(网络安全防御实战--蓝军武器库)
  • 每日一题----------异常处理
  • 【Python运维】实现高效的自动化备份与恢复:Python脚本从入门到实践
  • 数据结构---八大排序
  • Python的学习篇(七)--网页结构
  • 数据清洗与治理:为大模型预训练打造完美数据
  • Python已知后序遍历和中序遍历,求先序遍历
  • 字典树(trie树)详解
  • TCP/IP 5层协议簇:网络层(ICMP协议)
  • 政府网站首页模板/给你一个网站怎么优化
  • 淘宝可以到哪些网站做推广/seo顾问
  • 作文素材/长春seo顾问
  • 想注册一个做网站的公司/最好用的系统优化软件
  • 番禺外贸网站建设/站长工具pr值查询
  • 如何做购物网站的教程/百度seo手机