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

本地搭建deepseek-r1

一、下载ollama(官网下载比较慢,可以找个网盘资源下)
二、安装ollama
三、打开cmd,拉取模型deepseek-r1:14b(根据显存大小选择模型大小)

ollama pull deepseek-r1:14b
四、运行模型
ollama run deepseek-r1:14b

五、使用网页api访问,可以使用openweb-ui,也可以自己实现页面,下面是使用vue实现的页面
在这里插入图片描述

const ChildOllama = {data() {return {userInput: '',chatHistory: [],// 请根据实际情况修改 Ollama API 的 URLollamaApiUrl: 'http://localhost:11434/v1/chat',currentResponse: ''}},watch: {// 监听 messages 数组的变化chatHistory: {handler() {// 数据变化时将滚动条移动到最下方this.scrollToBottom();},deep: true}},methods: {// 将滚动条移动到最下方的方法scrollToBottom() {// 获取滚动 div 的引用const scrollDiv = this.$refs.scrollDiv;// 设置滚动条位置到最下方scrollDiv.scrollTop = scrollDiv.scrollHeight;},async sendMessage() {if (this.userInput.trim() === '') return;// 添加用户消息到历史记录const userMessage = { role: 'user', content: this.userInput };this.chatHistory.push(userMessage);try {// 构造请求数据const response = await fetch('http://localhost:11434/api/chat', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({model: 'deepseek-r1:14b', // 使用的模型messages: this.chatHistory,stream: true, // 启用流式传输}),});if (!response.ok) {throw new Error(`请求失败,状态码: ${response.status}`);}this.currentResponse = '';const reader = response.body.getReader();const decoder = new TextDecoder();let done = false;while (!done) {const { value, done: readerDone } = await reader.read();done = readerDone;if (value) {const chunk = decoder.decode(value, { stream: true });const lines = chunk.split('\n').filter(line => line.trim() !== '');for (const line of lines) {if (line) {try {const data = JSON.parse(line.replace(/^data: /, ''));if (data.done) {// 流式响应结束,添加完整回复到历史记录const ollamaMessage = { role: 'assistant', content: this.currentResponse };this.chatHistory.push(ollamaMessage);} else {this.currentResponse += data.message.content || '';}} catch (error) {console.error('Error parsing JSON:', error);}}}}}} catch (error) {console.error('Error sending message:', error);}// 清空输入框this.userInput = '';// try {//     // 将当前输入添加到对话历史中//     this.conversationHistory.push({ role: 'user', content: this.inputText });////     // 构造完整的提示信息,包含对话历史//     let fullPrompt = '';//     this.conversationHistory.forEach((item) => {//         fullPrompt += `${item.role === 'user' ? '用户: ' : '助手: '}${item.content}\n`;//     });////     // 清空之前的响应文本//     this.responseText = '';//     // 发起流式请求//     const response = await fetch('http://localhost:11434/api/generate', {//         method: 'POST',//         headers: {//             'Content-Type': 'application/json'//         },//         body: JSON.stringify({//             model: 'deepseek-r1:14b',//             prompt: fullPrompt,//             stream: true // 开启流式响应//         })//     });////     if (!response.ok) {//         throw new Error(`请求失败,状态码: ${response.status}`);//     }////     // 处理流式数据//     const reader = response.body.getReader();//     const decoder = new TextDecoder();//     let done = false;//     let currentResponse = '';//     while (!done) {//         const { value, done: readerDone } = await reader.read();//         done = readerDone;//         if (value) {//             const chunk = decoder.decode(value, { stream: true });//             // 解析 JSON 数据//             const lines = chunk.split('\n').filter(line => line.trim() !== '');//             for (const line of lines) {//                 try {//                     const data = JSON.parse(line);//                     if (data.response) {//                         // 更新响应文本//                         currentResponse += data.response;//                         this.responseText += data.response;//                     }//                 } catch (error) {//                     console.error('解析 JSON 数据时出错:', error);//                 }//             }//         }//     }//     // 将助手的回复添加到对话历史中//     this.conversationHistory.push({ role: 'assistant', content: currentResponse });// } catch (error) {//     console.error('请求出错:', error);// }}},template:`<div class="ollama-chat"><!-- 显示对话历史的区域 -->
<!--    <div class="history-area">-->
<!--      <div v-for="(item, index) in conversationHistory" :key="index" class="response-area">-->
<!--        <span :class="item.role === 'user' ? 'user-message' : 'assistant-message'">-->
<!--          {{ item.role === 'user' ? '用户: ' : '助手: ' }}-->
<!--        </span>-->
<!--        <span>{{ item.content }}</span>-->
<!--      </div>-->
<!--    </div>-->
<!--        <textarea v-model="inputText" placeholder="请输入问题"></textarea>-->
<!--    <button @click="sendRequest">发送请求</button>-->
<!--    -->
<!--    <div class="response-area">{{ responseText }}</div>--><h1>Ollama Chat</h1><div ref="scrollDiv" class="chat-history response-area"><div v-for="(message, index) in chatHistory" :key="index"><p><strong>{{ message.role === 'user' ? 'You' : 'Ollama' }}:</strong> {{ message.content }}</p></div></div><inputv-model="userInput"placeholder="Type your message..."@keyup.enter="sendMessage" style="width: 70%;padding: 5px;margin-right: 10px;"/><button @click="sendMessage">Send</button><button @click="scrollToBottom">botom</button><div class="chat-history response-area">{{ currentResponse }}</div>
</div>`
}
http://www.lryc.cn/news/529437.html

相关文章:

  • 【数据结构与算法】AVL树的插入与删除实现详解
  • 【机器学习】自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数
  • unity学习23:场景scene相关,场景信息,场景跳转
  • AI(计算机视觉)自学路线
  • Linux第104步_基于AP3216C之I2C实验
  • 常用Android模拟器(雷电 MuMu 夜神 Genymotion 蓝叠) - 20250131
  • 算法题(53):对称二叉树
  • Golang 并发机制-2:Golang Goroutine 和竞争条件
  • 深入剖析 CSRF 漏洞:原理、危害案例与防护
  • C++和Python实现SQL Server数据库导出数据到S3并导入Redshift数据仓库
  • AI大模型开发原理篇-5:循环神经网络RNN
  • 4-图像梯度计算
  • 数据结构与算法 —— 常用算法模版
  • DDD - 领域事件_解耦微服务的关键
  • 芯片AI深度实战:实战篇之vim chat
  • 【产品经理学习案例——AI翻译棒出海业务】
  • 解决运行npm时报错
  • 【07-编译工程与导入网表】
  • FireFox | Google Chrome | Microsoft Edge 禁用更新 final版
  • conda配置channel
  • 【MQ】探索 Kafka
  • Workbench 中的热源仿真
  • 计算机网络 笔记 网络层 3
  • 翼星求生服务器搭建【Icarus Dedicated Server For Linux】
  • ZZNUOJ(C/C++)基础练习1011——1020(详解版)
  • 论文阅读:Realistic Noise Synthesis with Diffusion Models
  • 复杂场景使用xpath定位元素
  • 算法基础——存储
  • 动态规划 (环形)
  • 信号模块--simulink操作