spring ai 调用本地部署的deepseek实现简单的问答功能
这里写自定义目录标题
- 安装deepseek
- 创建springboot 项目
- pom.xml
- application.yml
- DeepSeekService
- DeepSeekController
安装deepseek
- Ollama作用
- deepseek 需要运行在ollama上
- 下载Ollama
- Ollama官网:https://ollama.com/
- 下载windows版本
傻瓜式安装Ollama
选择模型
由于我电脑配置较低
我选择最低版本的模型
打开windows doc 窗口 执行ollama run deepseek-r1:1.5b 进行模型镜像下载和安装
部署完成,send a message,输入内容即可开始对话。
创建springboot 项目
- 环境要求 jdk17 + springboot 3.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/> <!-- lookup parent from repository -->
</parent>
<groupId>com.wl</groupId>
<artifactId>spring-deepseek-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>17</java.version>
<spring-ai.version>1.0.0-M5</spring-ai.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.yml
spring:
ai:
ollama:
# Ollama模型地址
base-url: http://192.168.10.97:11434
chat:
options:
model: deepseek-r1:1.5b
DeepSeekService
package com.wl.service;
import jakarta.annotation.Resource;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class DeepSeekService {
@Resource
private OllamaChatModel chatClient;
public String chat(String message) {
List<Message> abstractMessages = List.of(
// new SystemMessage("你是一个工单分析专家,请根据用户输入的内容从以下工单分类中找出一个分类 ;分类如下\n1" +
// "垃圾清运\n2" +
// "维修"),
new UserMessage(message)
);
Prompt prompt = new Prompt(abstractMessages);
ChatResponse call = chatClient.call(prompt);
System.out.println(call);
return call.getResult().toString();
}
}
DeepSeekController
package com.wl;
import com.wl.service.DeepSeekService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("deepseek")
public class DeepSeekController {
@Resource
private DeepSeekService deepSeekService;
@GetMapping("chat")
public String chat(@RequestParam String ques) {
return deepSeekService.chat(ques);
}
}