Linux本地部署deepseek及SpringBoot集成deepseek

news2025/3/12 16:55:41

一、ollama安装

      本文以linux安装为例(服务器主机ip:192.168.109.210)

1、自动安装(方式一)

   curl -fsSL https://ollama.com/install.sh | sh

2、手动安装(方式二)

 (1)下载二进制文件
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
  (2)解压安装包
tar -C /usr  -xzf ollama-linux-amd64.tgz
   (3)启动ollama

          配置环境变量,默认ollama服务只能本机访问,可通过配置开放HOST,指定ip访问

export OLLAMA_HOST=0.0.0.0:11434
export PATH=$OLLAMA_HOST:$PATH

           启动服务

 nohup  ollama  serve  >> /var/logs/ollama.log  2>&1 &

          查看启动日志

tail  -f  /var/logs/ollama.log

  (4)验证服务
ollama -v

       至此ollama服务安装完成。防火墙开放11434端口:

firewall-cmd --zone=public --add-port=011434/tcp --permanent
firewall-cmd  --reload

       浏览器访问http://192.168.109.210:11434

3、加入systemd自启服务

touch  /etc/systemd/system/ollama.service
 [Unit]
 Description=Ollama Service
 After=network-online.target

 [Service]
 ExecStart=/usr/bin/ollama serve
 User=ollama
 Group=ollama
 Restart=always

 [Install]
 WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable ollama

        此步骤不是必选项,仅为方便启动服务。 

  4、win环境安装(附录)

      由于win安装坑太多,ollama默认将程序安装到c盘,将部署的大模型也下载到c盘,会造成c盘体积暴增,为了避坑。这里也附带记录一下。

      安装指令cmd窗口,将ollama安装到指定的盘符目录下

OllamaSetup   /DIR=D:\software\ollama

       配置ollama的model环境变量 

 OLLAMA_MODELS =D:\software\ollama\models

二、deepseek部署

1、部署deepseek

        访问官网查看安装指令https://ollama.com/library,由于笔记本硬件资源限制,此次选择安装8b的model。

   

ollama run deepseek-r1:8b

          出现success表明本地大模型部署成功。接下来可以向大模型提问题了:

         这种命令行窗口对于非开发人员使用显然很不友好,要是有个可视化的页面就完美了,当然,这种调用ui应用实在是太多了

       此次选择open-webui 

2、安装 open-webui

       Open WebUI是由python开发的一个可扩展、功能丰富、用户友好的自托管WebUI,它支持各种LLM运行程序,包括Ollama和OpenAi兼容的API。直接使用docker安装即可:

docker run   \
-d --name open-webui  -p 3000:8080  \
--add-host=host.docker.internal:host-gateway  \
-e OLLAMA_BASE_URL=http://192.168.109.210:11434 \
-v /home/wucf/open-webui/data:/app/backend/data  \
--restart always ghcr.io/open-webui/open-webui:main  \

         访问192.168.109.210:3000即可

        刚才在服务器上部署的deepseek 可以正常在ui 页面上加载

三、spring boot集成deepseek

       市面目前调用大模型api的框架以python居多,java能用的脚手架不多,现在比较成熟的有langchain4j,spring官方的spring-ai。本次以spring-boot整合deepseek的api调用为例

1、springboot版本

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.3'
    id 'io.spring.dependency-management' version '1.1.5'
}

2、大模型依赖

     gradle配置以下依赖

    // ollama依赖
    implementation group: 'io.springboot.ai', name: 'spring-ai-ollama-spring-boot-starter', version: '1.0.3'
    //spring-ai依赖
    implementation group: 'org.springframework.ai', name: 'spring-ai-bom', version: '1.0.0-M6', ext: 'pom'
    // deepseek整合
    implementation group: 'io.github.pig-mesh.ai', name: 'deepseek-spring-boot-starter', version: '1.4.5'
    

3、deepseek配置

deepseek:
  api-key: 官网申请填写至此
  #base-url: https://api.deepseek.com/v1
  #model: deepseek-chat
  base-url: http:192.168.109.210:11434/v1
  model: deepseek-r1:8b

4、接口编写

    @GetMapping("/ai/ds/chat")
    public String  chatDeepSeek(String prompt){
        ChatCompletionRequest request = ChatCompletionRequest.builder().addUserMessage(prompt).build();
        ChatCompletionResponse response = deepSeekClient.chatCompletion(request).execute();
        return response.content();
    }

        访问本地接口:http://127.0.0.1:8006/api/ai/ds/chat

        至此就可以为前端提供访问大模型的接口,定制化的开发知识库。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用物理信息神经网络(PINN)解决实际优化问题:全面解析与实践

摘要 本文系统介绍了物理信息神经网络(PINN)在解决实际优化问题中的创新应用。通过将物理定律与神经网络深度融合,PINN在摆的倒立控制、最短时间路径规划及航天器借力飞行轨道设计等复杂任务中展现出显著优势。实验表明,PINN相比…

RabbitMQ之旅(1)

相信自己,终会成功 目录 主流MQ产品 1.kafaka 2.RocketMQ 3.RabbitMQ 在xshell上安装RabbitMQ RabbitMQ七种工作模式 1.简单模式 ​编辑 2.工作队列模式 3.发布/订阅模式 4.路由模式 5.通配符模式 6.RPC模式 AMQP.BasicProperties 设置消息属性的类 7.发布确认模…

HTML-网页介绍

一、网页 1.什么是网页: 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。 网页是构成网站的基本元素&#xf…

【C#学习笔记03】进制转换与反码、补码、原码

1. 进制转换 计算机中的数据通常以二进制形式存储,但在编程和调试过程中,我们经常需要与十进制、八进制和十六进制打交道。因此,掌握进制转换是C语言学习中的重要一环。 1.1 进制的基本概念 二进制(Binary)&#xff…

python学智能算法(七)|KNN邻近算法

【1】引言 前述学习进程中,已经了解了一些非常经典的智能算法,相关文章包括且不限于: python学智能算法(三)|模拟退火算法:深层分析_模拟退火 动画演示-CSDN博客 python学智能算法(四&#x…

Java数据结构第二十二期:Map与Set的高效应用之道(一)

专栏:Java数据结构秘籍 个人主页:手握风云 目录 一、Map和Set 1.1. 概念 二、搜索树 2.1. 概念 2.2. 查找操作 2.2. 插入操作 2.3. 删除操作 2.4. 性能分析 三、搜索 3.1. 概念及场景 3.2. 模型 四、Map 4.1. Map的说明 3.2. Map的使用 五…

兴达易控modbusTCP转profinet接防撞雷达测试

modbusTCP转profinet接防撞雷达测试 随着工业自动化程度的不断提高,现场设备之间的通信需求日益增长。ModbusTCP作为一种广泛应用的工业通信协议,因其简单、可靠的特点,被广泛应用于各种自动化设备中。而Profinet作为工业以太网的一种&#…

flutter实践:断点调试踩坑

问题:使用VSCode开发flutter,最近突然开始打断点不生效,程序可以attach,修改有日志输出,但是断点处怎么都停不了,程序异常断点会停。 分析:开始误以为是flutterSDK出了问题折腾了一天,后来又怀疑是lauch.j…

STM32——GPIO介绍

GPIO(General-Purpose IO ports,通用输入/输出接口)模块是STM32的外设接口的核心部分,用于感知外界信号(输入模式)和控制外部设备(输出模式),支持多种工作模式和配置选项。 1、GPIO 基本结构 STM32F407 的每个 GPIO 引脚均可独立配置,主要特性包括: 9 组 GPIO 端口…

Photo Works在线图片编辑器:一键修复老照片,轻松焕新记忆

★【概况介绍】 今天突然收到我的朋友电脑出故障了,截图给我,我一看就知道这个是缺少必要的组件引起的故障。结合这个问题,我来谈谈自己的解决思路和方法,希望能够帮助到大家。帮助大家是我最开心的事情。以前只是帮朋友解决问题,没有记录下来,刚刚接触到这个平台,刚好可…

SQLiteStudio:一款免费开源跨平台的SQLite管理工具

目录 1.简介 2.下载与安装 3.实现分析 4.总结 1.简介 SQLiteStudio 是一款专门用于管理 SQLite 数据库的图形化工具,由波兰开发者开发并维护。由于 SQLite 以其轻量级、零配置、嵌入式等特性被广泛应用于各种小型项目、移动应用和桌面应用中,而 SQLi…

Markdown 语法入门指南(VSCode 版)

此博客为一份详细的 Markdown 语法入门指南,专门针对在 VSCode 上使用 Markdown 的零基础用户。这份指南将包括 Markdown 的基础语法、在 VSCode 中的安装与使用方式、常见问题及注意事项。 Markdown 是一种轻量级标记语言,使用纯文本符号来标记格式&am…

PostgreSQL学习笔记:PostgreSQL vs MySQL

PostgreSQL 和 MySQL 都是广泛使用的关系型数据库管理系统,它们有以下一些对比: 一、功能特性 1. 数据类型支持 PostgreSQL:支持丰富的数据类型,包括数组、JSON、JSONB、范围类型、几何类型等。对于复杂数据结构的存储和处理非…

内存检测工具——Qt Creator

前言 检测内存错误的工具,有很多个,我今天粗浅的学了一下可在Qt上使用的工具们: Dr.Memory 工具之前我曾在关注的博主上看到相关的博客:C(Qt)软件调试---内存调试器Dr.Memory(21)_dr. memory-CSDN博客 今…

2.4 基于Vitest的单元测试基础设施搭建

文章目录 1. 现代单元测试体系解析测试金字塔演进Vitest核心定位2. 基础设施架构设计整体架构图3. 环境配置全流程3.1 基础环境搭建3.2 配置文件`vitest.config.ts`3.3 测试环境初始化4. 测试用例编写规范4.1 基础测试示例4.2 Vue组件测试4.3 异步逻辑测试5. Mock策略深度优化5…

⭐算法OJ⭐链表排序【归并排序】(C++/JavaScript 实现)

文章目录 148. Sort List解题思路归并排序的基本思想归并排序的步骤 实现实现步骤C 实现JavaScript 实现 复杂度总结 148. Sort List Given the head of a linked list, return the list after sorting it in ascending order. 解题思路 链表排序问题可以通过多种方法解决&am…

SegMAN模型详解及代码复现

SegMAN模型概述 模型背景 在深入探讨SegMAN模型之前,我们需要了解其研究背景。在SegMAN出现之前,计算机视觉领域的研究主要集中在以下几个方面: 手工制作方法,如SIFT基于卷积神经网络(CNN)的方法,如STN和PTN对平移、…

Manus AI:多语言手写识别的技术革命与未来图景

摘要:在全球化浪潮下,跨语言沟通的需求日益迫切,但手写文字的多样性却成为技术突破的难点。Manus AI凭借其多语言手写识别技术,将潦草笔迹转化为精准数字文本,覆盖全球超百种语言。本文从技术原理、应用场景、行业价值…

Stable Diffusion游戏底模推荐

一、基础通用型底模 SDXLbase 📚 官方原版底模,支持1024x1024高清出图,适用于各类游戏场景和角色的基础生成,建议作为微调训练的基准模型。 来源: 相关搜索结果 写实风格搭配推荐 🎨 搭配 9realisticSDXL 或 麻袋real…

理解字符流和字节流,节点流和处理流、缓冲流、InputStreamReader、BufferInputStream、BufferReader...

DAY10.2 Java核心基础 IO流 字符流和字节流 字符流和字节流在每次处理数据的单位不同,一个是字符,一个是字节 如果复制文件类型是文本类型,字节流字符流都可以 如果复制的文件类型是非文本类型,则只能使用字节流,使…