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

SpringAI集成本地部署DeepSeek大模型服务(Ollama)

本例演示使用SpringAI集成本地部署的DeepSeek大模型,DeepSeek大模型使用Ollama的方式部署。接下来我们学习相关概念:

SpringAI   访问地址:Spring AI

‌Spring AI‌是一个面向人工智能工程的应用框架,由Spring团队推出,旨在将AI能力集成到Java应用中。Spring AI的核心是解决AI集成的根本挑战,即将企业数据和API与AI模型连接起来‌。
 

Ollama

Ollama 是一个基于 Go 语言的本地大语言模型运行框架,类 docker 产品(支持 list,pull,push,run 等命令),事实上它保留了 Docker 的操作习惯,支持上传大语言模型仓库 (有 deepseek、llama 2,mistral,qwen 等模型,你也可以自定义模型上传)。它简化了模型的下载、管理和运行流程,用户可以通过命令行与模型交互,并支持自定义模型和 API 集成。

一、Ollama本地部署DeepSeek

1 下载安装Ollama

Ollama支持多平台部署,登录官网地址:Ollama 选择适合的安装包。

 

2 验证Ollama状态

安装成功后访问:http://127.0.0.1:11434/

 

查看Ollama版本

ollama -v

3 Ollama基本命令

Ollama提供了一系列基本命令,方便用户管理、运行和调试模型。这些命令包括:
  • ollama run:运行模型。
  • ollama pull:从注册表中拉取模型。
  • ollama push:将模型推送到注册表。
  • ollama list:列出模型。
  • ollama cp:复制模型。
  • ollama rm:删除模型。
  • ollama help:获取有关Ollama任何命令的帮助信息。
  • ollama serve:启动Ollama服务。
  • ollama create:创建模型,可以从模型文件创建模型。
  • ollama show:显示模型信息。
  • ollama -v 或 ollama --version:查看Ollama版本。
示例:
拉取模型 deepseek-r1:70b
ollama pull deepseek-r1:70b

 运行模型 deepseek-r1:70b

ollama run deepseek-r1:70b

4 Ollama主要功能

4.1 本地运行

支持在本地计算机上运行 LLMs,无需依赖云服务。Ollama允许用户在自己的设备上部署和运行语言模型,而不必完全依赖云端服务。这降低了对云端的依赖,提高了数据处理的灵活性和隐私性。

4.2 跨平台支持

支持多平台部署。Ollama支持Windows、Linux和MacOS等多种操作系统,用户可以根据自己的需求选择合适的平台。

4.3 多模型支持

兼容多种开源模型,如Llama 3.3, DeepSeek-R1, Phi-4, Mistral, Gemma 2 等。用户可以在官网直接下载使用。同时,用户还可以上传自己的模型,以及将其他格式的模型转换为ggml格式后导入使用。

4.4 多GPU并行推理加速

在多卡环境下,Ollama可以设置环境变量来指定特定GPU,实现多GPU并行推理加速,提高模型的运行效率。

二、SpringAI集成DeepSeek大模型

1 创建SpringBoot项目

版本要求

  • JDK 17
  • SpringBoot  3.4.2

pom.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.2</version><relativePath/></parent><groupId></groupId><artifactId>platform-ai</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-ai.version>1.0.0-M6</spring-ai.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- ollama 依赖 --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId><version>${spring-ai.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies></project>

2 创建DeepSeek服务调用逻辑

@Slf4j
@Service
public class DeepSeekServiceImpl implements DeepSeekService {@Autowiredprivate  OllamaChatModel ollamaChatModel;@Overridepublic String search(String prompt) {log.info("prompt: {}",prompt);return ollamaChatModel.call(prompt);}@Overridepublic Flux<String> stream(String prompt) {log.info("stream-prompt: {}",prompt);return ollamaChatModel.stream(prompt);}
}

注:OllamaChatModel如果启动提示类注入失败,请排查SpringBoot版本和JDK版本是否与本例版本一致。

3 创建请求调用接口

 

@Slf4j
@RestController
@RequestMapping("/ai")
public class AIController{@Autowiredprivate DeepSeekService deepSeekService;@PostMapping("/chat")public String search(@RequestBody String prompt) {return deepSeekService.search(prompt);}/*** 流式输出* @param prompt* @return*/@PostMapping("/stream")public Flux<String> stream(@RequestBody String prompt) {return deepSeekService.stream(prompt);}}

4配置application.yml

spring:ai:ollama:base: http://localhost:11434chat:model: deepseek-r1:8b

5 测试验证问答服务

相关文章:

  • Android开发,实现一个简约又好看的登录页
  • 深入理解java线程池
  • [RoarCTF 2019]Easy Calc 详解
  • 空洞/膨胀卷积
  • clangd-vscode配置
  • 网络安全之红队LLM的大模型自动化越狱
  • LinuxAgent开源程序是一款智能运维助手,通过接入 DeepSeek API 实现对 Linux 终端的自然语言控制,帮助用户更高效地进行系统运维工作
  • 遗传算法实现单货架库位优化
  • 在Linux系统中安装Anaconda的完整指南
  • vue3代码规范管理;基于vite和vue3、 eslint、prettier、stylelint、husky规范;git触发eslint校验
  • JavaWeb:vueaxios
  • 光触发RFID:破解物流、电力、资产管理三大领域的“不可能三角”
  • 基于 Python 的实现:居民用电量数据分析与可视化
  • 基于SpringBoot的食物营养分析与推荐网站系统
  • 22.晶振的信号与布局布线处理
  • 安卓基础(泛型)
  • 跨语言哈希一致性:C# 与 Java 的 MD5 之战?
  • 搭建speak yarn集群:从零开始的详细指南
  • C++(初阶)(十三)——继承
  • 【C++11特性】Lambda表达式(匿名函数)
  • 石家庄:城市更新,生活向美
  • 怒江州委常委、泸水市委书记余剑锋调任云南省委省直机关工委副书记
  • 广西干旱程度有所缓解,未来一周旱情偏重地区降水量仍不足
  • 上海第三家“胖永辉”在浦东开业,设立了外贸产品专区
  • 中纪报:五一节前公开通报释放强烈信号,以铁律狠刹歪风邪气
  • 五一假期“热潮”来袭,计划南下的小伙伴注意了