程序员老鬼

Spring 官宣接入 DeepSeek,太香了!

今天有个重磅消息,我都不敢相信!Spring 和 DeepSeek 终于强强联手了!春天终于迎来了 AI 的春风?这个消息一出,我就觉得,好家伙,技术圈的“王炸”果然非同凡响。

这俩大佬一联合,简直是程序员们的福音。你可能会想,Spring 为什么要接入 DeepSeek?怎么个“王炸”法?让我给你扒一扒。

Image

1. 解决了啥问题?

首先,Spring AI 这次接入 DeepSeek,解决了很多 Java 开发者的痛点。你知道吗,很多人做 AI 开发的时候,最头疼的一点就是,如何将不同的 AI 模型接入到自己的应用中。

之前大家都习惯了 Python 的生态,像 LangChain 和 LlamaIndex 都是解决这个问题的利器。但是对于 Java 的小伙伴来说,要想将各种 AI 模型集成到应用里,实在有点儿捉襟见肘,难度堪比大规模分布式系统调试。

不过现在有了 Spring AI,它就像是个“万能适配器”,帮你将 DeepSeek 这样的模型无缝接入 Java 应用中。而且,Spring AI 的一个大亮点就是“统一接口”!你可以直接用一个接口就接入 DeepSeek、OpenAI、Hugging Face 等多个平台,配置啥的也不复杂,简直是“懒人开发者”的福音。

2. Spring AI 有哪些亮点?

说到 Spring AI,我不得不提几个亮点功能:

  • 统一接口:无论你用的是 DeepSeek、Hugging Face,还是其他什么平台,Spring AI 让你只用一种方式来调用它们,简直是懒人开发者的梦。
  • 简化配置:配置啥的,我都不想提多复杂。Spring AI 会帮你搞定 API 密钥、模型参数这些繁琐的细节,省得你一个个手动配置,彻底解放你的双手。
  • 灵活切换:最酷的是,如果你哪天想换个 AI 服务商(比如从 OpenAI 切换到 DeepSeek),只需要改个配置文件,业务代码基本上不需要动,真的是省心又高效。

这些优势,就好像你正在开车,突然给你加装了一个自动驾驶系统,不用再手忙脚乱地去换挡,所有的一切都由系统智能完成。

3. 如何接入 DeepSeek?

说了那么多,具体怎么操作呢?让我给你分享两种常见的接入方式——伪装成 OpenAI 和本地化部署。

方法一:伪装成 OpenAI

DeepSeek 提供了 OpenAI 兼容模式,你可以像调用 OpenAI 那样,调用 DeepSeek 的服务。Spring AI 就是通过 RestTemplate 来发送请求,你只需要改一下 URL 和认证方式,就能轻松搞定。

1. 添加依赖

首先,在你的 Maven 项目中添加以下依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    <version>0.8.1</version>
</dependency>
2. 修改配置文件

在 application.yml 中配置 DeepSeek 的 OpenAI 兼容端点和 API 密钥(你可以在 DeepSeek 的开放平台申请一个 API 密钥):

⚠️ 友情提醒:目前 DeepSeek 官网暂停了 API 充值,但别慌,我们可以用一个稳定的中转站:腾讯云 API 代理:https://curl.qcloud.com/T3M5yBHp

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 模型生成响应:

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

    private final ChatClient chatClient;

    public ChatController(ChatClient.Builder chatClientBuilder) {
        this.chatClient = chatClientBuilder.build();
    }

    @GetMapping("/chat")
    public String generate(@RequestParam(value = "message") String message) {
        return chatClient.prompt(message).call().content();
    }
}

这样,你就可以通过 /ai/chat 接口发送消息,并获取 DeepSeek 的响应了。

4. 覆盖默认配置(可选)

如果你需要更高的灵活性,可以临时覆盖默认配置,修改请求的模型或者参数:

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

方法二:本地化部署

如果你不想把数据放在云端,可以选择在本地或者内网部署 DeepSeek 模型。这种方式适合那些要求更高的数据安全性的小伙伴。

1. 部署 DeepSeek 本地模型

如果你选择本地部署,可以参考我的另一篇文章,教你如何通过 Ollama 部署 DeepSeek R1 蒸馏版。文章链接我给你放这儿:【如何安装DeepSeek本地模型】。

2. 添加依赖

在 Maven 项目中添加以下依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
    <version>0.8.1</version>
</dependency>
3. 修改配置文件

在 application.yml 中配置 Ollama 的本地服务地址和模型名称:

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: deepseek-r1:1.5b  # 与本地模型名称对应
4. 在代码中调用

写一个控制器,用于调用本地部署的 DeepSeek 模型:

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

    private final ChatClient chatClient;

    public ChatController(ChatClient.Builder chatClient) {
        this.chatClient = chatClient.build();
    }

    @GetMapping("/chat")
    public ResponseEntity<Flux<String>> chat(@RequestParam(value = "message") String message) {
        try {
            Flux<String> response = chatClient.prompt(message).stream().content();
            return ResponseEntity.ok(response);
        } catch (Exception e) {
            return ResponseEntity.badRequest().build();
        }
    }
}

4. 结束语

看完这些操作,是不是感觉整个人都轻松了?Spring AI 真的是把接入 AI 模型的门槛给降低到了极致,无论是伪装成 OpenAI 还是本地化部署,都能轻松搞定。而且,它的灵活性和扩展性也让你在选择 AI 服务商时,能够自由切换,不用担心锁定死了某个平台。

Image

对于我们这些程序员来说,真的是省时省力又高效的好帮手。现在,DeepSeek 和 Spring AI 的强强联合,不仅让我们可以更便捷地接入 AI 模型,还能让我们的业务代码更加简洁,灵活。能不激动吗?

最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek

同时,也欢迎加入下方的交流群,一起研究deepseek的最新玩法

图片