Spring项目接入DeepSeek的两种超简单的方式分享

 更新时间:2025年02月13日 09:19:01   作者:JavaGuide  
DeepSeek 作为一款卓越的国产 AI 模型,越来越多的公司考虑在自己的应用中集成,本文为大家 分享了Spring项目接入DeepSeek的两种超简单的方式,希望对大家有所帮助

DeepSeek 作为一款卓越的国产 AI 模型,越来越多的公司考虑在自己的应用中集成。对于 Java 应用来说,我们可以借助 Spring AI 集成 DeepSeek,非常简单方便!

Spring AI 是什么?

Spring AI 从著名的 Python 项目(例如 LangChain 和 LlamaIndex)中汲取灵感,解决了 AI 集成中的核心挑战:将企业数据和 API 与 AI 模型连接起来。

你可以将 Spring AI 看作是一个适配器或者高层封装,用来帮你更方便地集成和使用不同的 AI 模型。它的核心目标是简化开发流程,降低使用多种 AI 服务时的复杂性,同时提升代码的可维护性和灵活性。

Spring AI 的主要功能包括:

  • 统一 API: Spring AI 提供了一套统一的接口,用来调用不同的 AI 模型(例如 OpenAI、Hugging Face、DeepSeek、Gemini 等)。开发者只需要学习 Spring AI 的 API,就能无缝对接各种 AI 服务,而无需深入了解各家服务的底层实现和差异。
  • 简化配置: Spring AI 提供了自动化的配置管理,例如 API 密钥、模型参数等。你只需要简单地在配置文件中定义所需的参数,Spring AI 就会自动完成初始化和连接,避免繁琐的手动配置。
  • 易于切换: Spring AI 的抽象设计使得更换 AI 提供商变得非常简单。开发者只需要修改少量配置,而不用修改业务代码,从而实现灵活的 AI 服务切换,适应不同场景需求。

Spring AI 集成 DeepSeek

这里介绍两种方式:

  • spring-ai-openai starter:伪装成 OpenAI,DeepSeek 提供了 OpenAI 兼容模式
  • spring-ai-ollama-spring-boot-starter:通过 Ollama 本地部署一个 DeepSeek R1 蒸馏版。

伪装成 OpenAI

DeepSeek 其实提供了 OpenAI 兼容模式,只要在请求头里加个api_key,就能假装自己在调 OpenAI。Spring AI 的 openai starter 本质上是通过 RestTemplate 发请求,我们只需要改改 URL 和认证方式。

1、添加依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    <version>0.8.1</version>
</dependency>

2、修改配置文件 application.yml

spring:
  ai:
    openai:
      base-url: https://api.deepseek.com/v1  # DeepSeek的OpenAI式端点
      api-key: sk-your-deepseek-key-here
      chat.options:
        model: deepseek-chat  # 指定DeepSeek的模型名称

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

4、在代码中调用:

@RestController
@RequestMapping("/ai")
@Slf4j
public class ChatController {

	private final ChatClient chatClient;

 // 构造方法注入 ChatClient.Builder,用于构建 ChatClient 实例
	public ChatController(ChatClient.Builder chatClientBuilder) {
		this.chatClient = chatClientBuilder.build();
	}

	@GetMapping("/chat")
	public String generate(@RequestParam(value = "message") String message) {
		log.info("Generating response");
  // 调用 ChatClient 的 prompt 方法生成响应
  // 1. prompt(message): 创建一个包含用户输入消息的 Prompt 对象
  // 2. call(): 调用 ChatClient 与 AI 模型交互以获取响应
  // 3. content(): 提取响应的内容部分
		return chatClient.prompt(message).call().content();
	}

}

在运行时,你可以通过在 Prompt 调用中添加新的、针对请求的选项来覆盖默认配置。例如,要为特定请求覆盖默认模型和温度,可以这样实现:

ChatResponse response = chatModel.call(
    new Prompt(
        "Generate the names of 5 famous pirates.",
        OpenAiChatOptions.builder()
            .withModel("deepseek-chat")
            .withTemperature(0.4)
        .build()
    ));

本地化部署

如果想要把 DeepSeek 部署在内网服务器,或者你想在本地跑个小模型,可以采用这种方式来在本地部署一个 DeepSeek R1 蒸馏版。

1、从官方网站下载并安装 Ollama:ollama.com

2、拉取 DeepSeek 模型:

ollama pull deepseek-r1:1.5b
ollama list deepseek

更多版本可以在这里查看:ollama.com/library/deepseek-r1

3、添加依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
    <version>0.8.1</version>
</dependency>

4、修改配置:

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: deepseek-r1:1.5b  # 与本地模型名称对应

5、在代码中调用:

@RestController
@RequestMapping("/ai")
public class ChatController {
    private final ChatClient chatClient;

    // 构造方法注入 ChatClient.Builder,用于构建 ChatClient 实例
    public ChatController(ChatClient.Builder chatClient) {
        this.chatClient = chatClient.build();
    }

    	@GetMapping("/chat")
    public ResponseEntity<Flux<String>> chat(@RequestParam(value = "message") String message) {
        try {
            // 调用 ChatClient 生成响应,并以 Flux<String>(响应流)形式返回
            Flux<String> response = chatClient.prompt(message).stream().content();
            return ResponseEntity.ok(response);
        } catch (Exception e) {
            return ResponseEntity.badRequest().build();
        }
    }
}

Spring Cloud Alibaba AI 中也支持这种方式,并且官网上提供了详细的方法:java2ai.com/blog/spring-ai-alibaba-ollama-deepseek/

总结

这篇文章主要介绍了 Spring AI 以及如何通过 Spring AI 集成 DeepSeek:

  • 伪装成 OpenAI: DeepSeek 可以假装自己是 OpenAI,直接用 Spring AI 的 OpenAI starter 就行,改改配置就好,就像换个链接一样简单。
  • 本地部署: 如果你想把 DeepSeek 放在自己服务器上,或者想在电脑上跑个小模型玩玩,可以用 Ollama。先下载 Ollama,再下载 DeepSeek 模型,然后用 Spring AI 的 Ollama starter,也超级简单。Spring Cloud Alibaba AI 也支持这种玩法,官网有教程。

以上就是Spring项目接入DeepSeek的两种超简单的方式分享的详细内容,更多关于Spring项目接入DeepSeek的资料请关注脚本之家其它相关文章!

相关文章

  • Java中十六进制和十进制之间互相转换代码示例

    Java中十六进制和十进制之间互相转换代码示例

    这篇文章主要给大家介绍了关于Java中十六进制和十进制之间互相转换的相关资料,我们项目过程中总是要用到十进制与十六进制相互转换的方法,需要的朋友可以参考下
    2023-07-07
  • Springboot之restTemplate配置及使用方式

    Springboot之restTemplate配置及使用方式

    这篇文章主要介绍了Springboot之restTemplate配置及使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • maven依赖版本冲突如何处理

    maven依赖版本冲突如何处理

    文章主要介绍了Maven依赖版本冲突的原因以及如何处理版本冲突的方法,包括使用exclusions排除依赖和使用dependencyManagement锁定版本号
    2025-01-01
  • springboot+springmvc实现登录拦截

    springboot+springmvc实现登录拦截

    这篇文章主要介绍了springboot+springmvc实现登录拦截,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 如何理解SpringMVC

    如何理解SpringMVC

    Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发
    2021-06-06
  • nacos在liunx系统中启动成功浏览器却访问不了的解决方法

    nacos在liunx系统中启动成功浏览器却访问不了的解决方法

    在linux下搭建nacos,现在想要启动,访问nacos页面,访问不了,所以本文小编将给大家介绍nacos在liunx系统中启动成功,浏览器却访问不了?全面的解决办法,需要的朋友可以参考下
    2023-09-09
  • Java 深入理解创建型设计模式之抽象工厂模式

    Java 深入理解创建型设计模式之抽象工厂模式

    当系统所提供的工厂所需生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构中属于不同类型的具体产品时需要使用抽象工厂模式,抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态
    2022-02-02
  • springboot2.x整合shiro权限框架的使用

    springboot2.x整合shiro权限框架的使用

    这篇文章主要介绍了springboot2.x整合shiro权限框架的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Android studio按钮点击页面跳转详细步骤

    Android studio按钮点击页面跳转详细步骤

    在Android应用程序中,页面跳转是非常常见的操作,下面这篇文章主要给大家介绍了关于Android studio按钮点击页面跳转的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • Java基于socket实现的客户端和服务端通信功能完整实例

    Java基于socket实现的客户端和服务端通信功能完整实例

    这篇文章主要介绍了Java基于socket实现的客户端和服务端通信功能,结合完整实例形式分析了Java使用socket建立客户端与服务器端连接与通信功能,需要的朋友可以参考下
    2018-05-05

最新评论