ollama本地部署DeepSeek-R1大模型使用前端JS调用的详细流程

以下是关于如何在本地部署 DeepSeek-R1 大模型(通过 Ollama),并使用前端 JavaScript 调用其功能的详细流程。


前提条件

  1. 硬件要求
    • 建议至少 16GB RAM(运行较小模型如 1.5B 或 7B 参数版本),如果运行更大模型(如 14B 或 32B),需要 32GB 或更高。
    • 支持 macOS、Linux 或 Windows 的机器。
  2. 软件要求
    • 已安装 Ollama(用于本地运行模型)。
    • 基本的终端操作知识。

第一步:本地部署 Ollama 和 DeepSeek-R1

1. 安装 Ollama
  • 下载 Ollama
    访问 Ollama 官网,根据你的操作系统(macOS/Linux/Windows)下载对应版本。
  • 安装
    • macOS/Linux:在终端运行安装脚本或解压文件。
    • Windows:双击安装程序,按提示完成。
  • 验证安装
    在终端输入以下命令,检查是否成功安装:
    ollama --version
    
    如果返回版本号,说明安装成功。
2. 下载 DeepSeek-R1 模型
  • 选择模型大小
    DeepSeek-R1 有多个版本(1.5B、7B、8B、14B、32B、70B、671B), https://ollama.com/library/deepseek-r1:7b,根据你的硬件选择合适的模型。例如,7B 是性能和资源需求的平衡选择。
  • 拉取模型
    在终端运行以下命令以下载 DeepSeek-R1 的 7B 版本:
    ollama pull deepseek-r1:7b
    

下载时间取决于网络速度和模型大小,完成后会存储在本地。
在这里插入图片描述

3. 启动 Ollama 服务
  • 运行 Ollama 服务
    在终端输入以下命令,启动 Ollama 并加载 DeepSeek-R1:

    ollama run deepseek-r1:7b
    

    这会启动一个交互式终端,你可以直接输入提示测试模型。
    在这里插入图片描述

  • 后台运行(可选)
    如果希望 Ollama 在后台运行并提供 API 服务,可以启动服务器模式:

    ollama serve
    

    默认情况下,Ollama 会监听 http://localhost:11434

4. 测试模型
  • 在终端运行:
    ollama run deepseek-r1:7b "你好,什么是AI?"
    
    如果返回合理回答,说明模型部署成功。

第二步:通过 API 调用 DeepSeek-R1

Ollama 提供了一个 RESTful API,可以通过 HTTP 请求与本地模型交互。默认地址是 http://localhost:11434

1. 测试 API
  • 使用 curl 测试 API 是否正常工作:
    curl http://localhost:11434/api/chat -d '{"model": "deepseek-r1:7b","messages": [{"role": "user", "content": "你好,什么是AI?"}],"stream": false
    }'
    
  • 返回结果应包含模型的回答,例如:
    {"model": "deepseek-r1:7b","message": {"role": "assistant", "content": "AI 是人工智能(Artificial Intelligence)的简称..."}
    }
    

第三步:使用前端 JavaScript 调用

1. 设置 Node.js 项目
  • 初始化项目
    在终端创建一个新目录并初始化 Node.js 项目:
    mkdir deepseek-frontend
    cd deepseek-frontend
    npm init -y
    
  • 安装依赖
    安装 axios 或其他 HTTP 请求库以便从前端调用 API:
    npm install axios
    
2. 创建前端代码
  • 创建 HTML 文件index.html):

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head><meta charset="UTF-8"><title>DeepSeek-R1 前端调用</title>
    </head>
    <body><h1>与 DeepSeek-R1 对话</h1><input type="text" id="userInput" placeholder="输入你的问题"><button onclick="sendMessage()">发送</button><div id="response"></div><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script src="app.js"></script>
    </body>
    </html>
    
  • 创建 JavaScript 文件app.js):

    async function sendMessage() {const input = document.getElementById("userInput").value;const responseDiv = document.getElementById("response");try {const response = await axios.post("http://localhost:11434/api/chat", {model: "deepseek-r1:7b",messages: [{ role: "user", content: input }],stream: false});const reply = response.data.message.content;responseDiv.innerText = reply;} catch (error) {console.error("调用失败:", error);responseDiv.innerText = "错误: " + error.message;}
    }
    
3. 运行前端
  • 使用简单的静态服务器运行前端,例如 http-server
    npm install -g http-server
    http-server
    
  • 打开浏览器,访问 http://localhost:8080,输入问题并点击“发送”,即可看到 DeepSeek-R1 的回答。

第四步:优化与扩展

1. 支持流式响应
  • 如果需要实时显示模型的流式输出,将 stream 设置为 true,并处理返回的流数据:
    async function sendMessage() {const input = document.getElementById("userInput").value;const responseDiv = document.getElementById("response");responseDiv.innerText = "";const response = await fetch("http://localhost:11434/api/chat", {method: "POST",headers: { "Content-Type": "application/json" },body: JSON.stringify({model: "deepseek-r1:7b",messages: [{ role: "user", content: input }],stream: true})});const reader = response.body.getReader();const decoder = new TextDecoder();while (true) {const { done, value } = await reader.read();if (done) break;const chunk = decoder.decode(value);const json = JSON.parse(chunk);responseDiv.innerText += json.message.content;}
    }
    
2. 添加错误处理
  • 在前端添加更完善的错误提示,确保用户体验良好。
3. 部署到远程服务器(可选)
  • 如果需要从其他设备访问,可以将 Ollama 部署到 VPS 上,并调整 OLLAMA_HOST 环境变量为 0.0.0.0:11434,然后通过公网 IP 或域名访问。

注意事项

  • 跨域问题:如果前端和 Ollama 不在同一主机,可能遇到 CORS 问题。可以通过代理解决,或在开发时确保同源。
  • 性能:模型越大,响应时间越长。建议根据硬件调整模型大小。
  • 安全性:本地部署默认仅限本地访问,若公开 API,需设置认证机制。

总结

通过上述步骤,你已经完成了:

  1. 使用 Ollama 在本地部署 DeepSeek-R1。
  2. 通过 API 测试模型可用性。
  3. 使用前端 JavaScript 实现与模型的交互。

现在,你可以在浏览器中输入问题,与本地运行的 DeepSeek-R1 对话了!如果有进一步需求(如集成到复杂应用中),可以基于此扩展功能。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27041.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最好Wordpree+Apache+PHP安装教程

前提需要 PHP的安装最少需要7.4以上Mysql的安装&#xff0c;直接默认最新版就行APache服务器&#xff08;HTTP服务器&#xff0c;只有用这个你的软件才能在服务器上运行&#xff09; 安装apache 安装 sudo apt install apache2查看防火墙 sudo ufw app list如果有 Apache那…

deepseek使用记录18——文化基因之文化融合

文明长河中的生命浪花 在洛阳白马寺的银杏树下&#xff0c;年轻母亲指着"农禅并重"碑刻给孩子讲述祖辈耕作的故事&#xff1b;在哔哩哔哩的直播间里&#xff0c;00后女孩穿着汉服跳起街舞&#xff0c;弹幕飘过"这才是文化缝合怪"。当文明交融的宏大叙事照…

2025 GDC开发者先锋大会“人形机器人的开源之路”分论坛 | 圆桌会议:《开放协作:开源生态如何解锁人形机器人与具身智能的未来》(上篇)

在GDC全球开发者先锋大会期间&#xff0c;2月23日&#xff0c;由GDC组委会指导、国家地方共建人形机器人创新中心&#xff08;以下简称“国地中心”&#xff09;承办的“人形机器人的开源之路”主题论坛在上海西岸艺术中心成功举办。 在人工智能与机器人技术飞速发展的今天&…

txt 转 json 使用python语言

需求: 把如下的txt文档转成json输出 代码 import jsondef txt_to_json(input_file, output_file):data_list []with open(input_file, r, encodingutf-8) as f:for line in f:# 分割数据并去除换行符parts line.strip().split(,)print(f"{parts}")print(type(par…

快速入手-搭建Flask框架封装mysql并结合业务实际情况使用

1、安装包 pip install pymysql pip install dbutils 2、项目目录结构&#xff0c;注意目录的层级 3、在flask_project文件夹里创建__init__.py from flask import Flask, redirect, request, session def auth():# 拦截器print("拦截器")# js、css、img不拦截处…

【语法】C++中string类中的两个问题及解答

贴主在学习string类时遇到过两个困扰我的问题&#xff0c;今天拿出来给大家分享一下我是如何解决的 一、扩容时capacity的增长问题 在string的capacity()接口中&#xff0c;调用的是这个string对象的容量(可以存多少个有效字符)&#xff0c;而size()是调用的string对象现在有…

P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair

P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair 题目 分析一、pair1.1pair与vector的区别1.2 两者使用场景两者组合使用 二、set2.1核心特点2.2set的基本操作2.3 set vs unordered_set示例&#xff1a;统计唯一单词数代码 题目 分析 大佬写的很明白&#xff0c;看这儿 我讲讲…

协议-Airkiss

是什么&#xff1f; 设备 A 与外界没有建立任何实质性连接&#xff0c;可以称之为信息孤岛。设备 B 通过路由 或者直接 将 Wifi 的 ssid 与密码 UDP广播 传递给 A 为什么&#xff1f; 解决将无线网络的 ssid 与密码传输到设备难题 怎么做&#xff1f; 芯片自带AT指令开启Air…

git从零学起

从事了多年java开发&#xff0c;一直在用svn进行版本控制&#xff0c;如今更换了公司&#xff0c;使用的是git进行版本控制&#xff0c;所以打算记录一下git学习的点滴&#xff0c;和大家一起分享。 百度百科&#xff1a; Git&#xff08;读音为/gɪt/&#xff09;是一个开源…

企微审批中MySQL字段TEXT类型被截断的排查与修复实践

在MySQL中&#xff0c;TEXT类型字段常用于存储较大的文本数据&#xff0c;但在一些应用场景中&#xff0c;当文本内容较大时&#xff0c;TEXT类型字段可能无法满足需求&#xff0c;导致数据截断或插入失败。为了避免这种问题&#xff0c;了解不同文本类型&#xff08;如TEXT、M…

《Python实战进阶》No 10:基于Flask案例的Web 安全性:防止 SQL 注入、XSS 和 CSRF 攻击

第10集&#xff1a;Web 安全性&#xff1a;防止 SQL 注入、XSS 和 CSRF 攻击 在现代 Web 开发中&#xff0c;安全性是至关重要的。无论是用户数据的保护&#xff0c;还是系统稳定性的维护&#xff0c;开发者都需要对常见的 Web 安全威胁有深刻的理解&#xff0c;并采取有效的防…

nio多线程版本

多线程多路复用 多线程NIO&#xff0c;&#xff0c;就是多个线程&#xff0c;每个线程上都有一个Selector&#xff0c;&#xff0c;&#xff0c;比如说一个系统中一个线程用来接收请求&#xff0c;&#xff0c;剩余的线程用来读写数据&#xff0c;&#xff0c;每个线程独立干自…

LabVIEW DataSocket 通信库详解

dataskt.llb 是 LabVIEW 2019 内置的核心函数库之一&#xff0c;位于 vi.lib\Platform\ 目录下&#xff0c;专注于 DataSocket 技术的实现。DataSocket 是 NI 提供的网络通信协议&#xff0c;支持跨平台、跨设备的实时数据共享&#xff0c;广泛应用于远程监控、分布式系统集成等…

【UI设计——视频播放界面分享】

视频播放界面设计分享 在本次设计分享中&#xff0c;带来一个视频播放界面的设计作品。 此界面采用了简洁直观的布局。顶部是导航栏&#xff0c;包含主页、播放、搜索框等常见功能&#xff0c;方便用户快速找到所需操作。搜索框旁输入 “萌宠成长记”&#xff0c;体现了对特定内…

论coding能力 new bing 对比 chatgpt

近日需要编程计算每个月的第二个星期二是哪一天&#xff0c;因为那一天需要做一件重要的事情&#xff0c;我想在这个日期做一个提醒&#xff0c;于是把这个重任交给当下最火的AI&#xff0c;微软new bing和chatGPT&#xff0c;实验对比结果如下&#xff1a;微软new bing会给你参…

leetcode第39题组合总和

原题出于leetcode第39题https://leetcode.cn/problems/combination-sum/description/题目如下&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以…

计算机毕业设计SpringBoot+Vue.js社区智慧养老监护管理平台(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Linux:动静态库

库&#xff1a;Linux&#xff1a;静态库&#xff08;libxxxx.a&#xff09;和动态库(libxxxx.so) 库&#xff1a;windows静态库(xxxx.lib)和动态库 (xxxx.dll) ldd 可以看自己所依赖的目标文件 /lib64/libc.so.6------>这是c标准库 file code &#xff08;动态库&…

在Pycharm中将ui文件修改为py文件

在Pycharm中将ui文件修改为py文件 有些时候&#xff0c;我们需要把QTDesigner生成的.ui文件修改为.py文件 在一些教程中&#xff0c;通常使用cmd打开终端修改&#xff0c;或者是有一些人写了一些脚本来修改 这里我们可以使用pycharm来快速的修改 首先&#xff0c;我们在pyc…

RabbitMQ面试题及原理

RabbitMQ使用场景&#xff1a; 异步发送&#xff08;验证码、短信、邮件…&#xff09;MYSQL和Redis, ES之间的数据同步分布式事务削峰填谷 1. 消息可靠性&#xff08;不丢失&#xff09; 消息丢失场景&#xff1a; RabbitMQ-如何保证消息不丟失&#xff1f; 开启生产者确…