5分钟搞定Spring项目与DeepSeek集成,让你的应用更智能!

DeepSeek 作为一款卓越的国产 AI 大模型,性能和 ChatGPT 不相上下,而且无需复杂的网络环境,更适合国人。目前越来越多的公司考虑在自己的应用中集成。Java 开发者可以借助 Spring AI 集成 DeepSeek,非常简单方便!

简介

Spring AI 是 Spring 生态中的一个新项目,其主要完成了几种常见生成式模型的适配,包括对话、文生图、文生语音等。Spring AI 目前是通过使用现有的 OpenAI 客户端与 DeepSeek AI 集成的,如图所示:

动手体验

1. 新建项目

首先新建一个Maven项目,JDK选的是17版本

2. pom.xml文件引入依赖

项目pom.xml文件引入

spring-ai-openai-spring-boot-starter依赖

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>
    <groupId>com.jms</groupId>
    <artifactId>jms-ai-deepseek</artifactId>
    <version>1.0.0</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <java.version>17</java.version>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <logback.version>1.5.16</logback.version>
        <spring-boot.version>3.4.2</spring-boot.version>
        <spring-ai-openai-spring-boot-starter.version>1.0.0-M6</spring-ai-openai-spring-boot-starter.version>
        <lombok.version>1.18.26</lombok.version>
        <spring-cloud-function.version>4.2.1</spring-cloud-function.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
            <version>${spring-ai-openai-spring-boot-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
        <!--logback-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>${logback.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-function-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-function-core</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-function-context</artifactId>
                <version>${spring-cloud-function.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-function-core</artifactId>
                <version>${spring-cloud-function.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

3. 添加DeepSeek API KEY

DeepSeek API KEY 可以在 DeepSeek 开放平台中自行创建,地址:platform.deepseek.com/api\\_keys

然后在Spring Boot项目添加application.properties配置文件,加入以下内容(替成你创建的api-key)

ini 复制代码
# 服务端口
server.port=8089

# 服务名
spring.application.name=jms-ai-deepseek

# DeepSeek的OpenAI式端点
spring.ai.openai.base-url=https://api.deepseek.com/v1

# DeepSeek API KEY
spring.ai.openai.api-key=你创建的api-key

# 配置AI大模型
# deepseek-chat 模型已全面升级为 DeepSeek-V3,接口不变。 通过指定 
model=deepseek-chat 即可调用 DeepSeek-V3
# deepseek-reasoner 是 DeepSeek 最新推出的推理模型 DeepSeek-R1。通过指定 
model=deepseek-reasoner,即可调用 DeepSeek-R1。
spring.ai.openai.chat.options.model=deepseek-chat

4. 添加Spring Boot启动类

添加Spring Boot启动类 DeepSeekApplication

typescript 复制代码
@SpringBootApplication
public class DeepSeekApplication {
    public static void main(String[] args) {
        SpringApplication.run(DeepSeekApplication.class,args);
    }
}

5. 添加Controller控制器类

新建一个控制器类DeepSeekController,添加文本接口:

less 复制代码
@RestController
@RequestMapping("/ai")
@CrossOrigin
@RequiredArgsConstructor
public class DeepSeekController {
    private final DeepSeekService deepSeekService;

    /** 
     * 对接文本模型 
     * 
     * @param message 消息内容 
     * @return AI答案 
     */
     @GetMapping("/chat")
     public String completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {    
         return deepSeekService.completion(message);
     }
}

6. 添加Service服务接口和实现类

新建一个DeepSeekService接口,支持文本模型处理方法:

typescript 复制代码
public interface DeepSeekService {
    /**
     * 文本模型
     *
     * @param message 消息内容
     * @return AI答案
     */
    String completion(String message);
}

新建一个DeepSeekServiceImpl类实现DeepSeekService接口,具体实现如下:

typescript 复制代码
@Slf4j
@Service
public class DeepSeekServiceImpl implements DeepSeekService {
    private final ChatClient chatClient;
    
    public DeepSeekServiceImpl(ChatClient.Builder chatClientBuilder) {
        // 构造方法注入 ChatClient.Builder,用于构建 ChatClient 实例
        this.chatClient = chatClientBuilder.build();
    }

    /**
     * 文本模型
     *
     * @param message 消息内容
     * @return AI答案
     */
    @Override
    public String completion(String message) {
        log.info("DeepSeek response");
        // 调用 ChatClient 的 prompt 方法生成响应
        // 1. new Prompt(message): 创建一个包含用户输入消息的 Prompt 对象
        // 2. call(): 调用ChatClient与AI模型交互以获取响应
        // 3. content(): 获取响应的内容部分
        return chatClient.prompt(new Prompt(message)).call().content();
    }
}

可以看到,几行代码就搞定了,非常简单。

接下来启动DeepSeekApplication****应用来测试下效果!!!

测试

调用文本模型接口,可以看到AI生成了一个笑话。

总结

Spring AI框架提供了多种模型选择,简化了我们AI开发功能,只需简单几步即可轻松实现。Spring项目接入DeepSeek大模型介绍到此就结束了,感兴趣的同学可以去试试哈!

推荐阅读

轻松掌握二分法查找

十大经典排序算法之选择排序

Java日志脱敏框架sensitive使用

JRebel激活指南:让你的Java开发更高效!

Zookeeper客户端Curator使用(分布式锁实现)

真绝了~使用Wireshark工具抓取https数据明文包

相关推荐
Victor3567 分钟前
Redis(104)Redis的最大数据量是多少?
后端
Victor35613 分钟前
Redis(105)Redis的数据类型支持哪些操作?
后端
鬼火儿7 小时前
SpringBoot】Spring Boot 项目的打包配置
java·后端
cr7xin8 小时前
缓存三大问题及解决方案
redis·后端·缓存
间彧9 小时前
Kubernetes的Pod与Docker Compose中的服务在概念上有何异同?
后端
间彧9 小时前
从开发到生产,如何将Docker Compose项目平滑迁移到Kubernetes?
后端
间彧9 小时前
如何结合CI/CD流水线自动选择正确的Docker Compose配置?
后端
间彧9 小时前
在多环境(开发、测试、生产)下,如何管理不同的Docker Compose配置?
后端
间彧9 小时前
如何为Docker Compose中的服务配置健康检查,确保服务真正可用?
后端
间彧9 小时前
Docker Compose和Kubernetes在编排服务时有哪些核心区别?
后端