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 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版本。
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