Python技术迷

Spring 官宣接入 DeepSeek,太香了!

你是不是也和我一样,时不时会被各种AI工具搞得眼花缭乱?昨天还在纠结哪个模型好,今天又被一款新技术给吸引了——Spring接入了DeepSeek!

Image

这件事可不得不说,简直是给开发者们送上了王炸!说实话,作为一个程序员,我可是没想到,Spring竟然能帮我们轻松地把AI模型接入到Java应用中,而且这么简单高效。今天我就带大家一起来看看,这个Spring AI加上DeepSeek到底有什么神奇的地方。

Image

Spring AI:万用适配器

Spring AI,顾名思义,就是为Java应用提供一个方便、统一的AI接入方案。如果你了解Python的LangChain和LlamaIndex,可能会觉得Spring AI有点类似这些工具,但它专门为Java量身定做。

Spring AI就像个万金油一样,它能帮助你将多种不同的AI模型轻松接入到Java应用中。不管是OpenAI、Hugging Face,还是国内的DeepSeek,通过Spring AI,大家可以用相同的方式来调用这些AI服务。

这种方便的体验,简直就像是为开发者量身定做的神器。而且,Spring AI的优势不仅仅是统一接口,它还简化了很多麻烦的配置工作。

别再为那些复杂的API密钥、模型参数操心了,Spring AI会帮你搞定这一切!配置文件也变得简单得多,甚至在你需要切换AI服务商时,只需要修改一个配置文件,业务代码基本上不用动。

集成方式一:伪装成OpenAI

这里最有趣的部分来了!DeepSeek为了兼容OpenAI,提供了一个OpenAI兼容模式,这意味着你可以通过调用OpenAI的方式来访问DeepSeek。对于开发者来说,这简直是个福音,避免了重新学习新API的麻烦。Spring AI提供的openai starter就是通过RestTemplate来发请求的,我们只需要稍微修改一下URL和认证方式,就能轻松使用DeepSeek的服务。

步骤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密钥。看,配置文件简单得不要不要的:

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的模型名称

注意:API密钥需要去DeepSeek开放平台申请。因为目前DeepSeek的官网服务器资源比较紧张,API充值服务暂停,我们可以用一个稳定的中转站:腾讯云 API 代理:https://curl.qcloud.com/T3M5yBHp

步骤3:调用DeepSeek

配置好后,你就能通过控制器来调用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:覆盖默认配置(可选)

如果你希望在某些请求中使用不同的模型或参数,Spring AI也允许你临时覆盖默认配置。例如:

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

这样一来,你就能根据需求灵活调整AI模型的参数了。

集成方式二:本地化部署

如果你更倾向于在本地或者内网环境中部署DeepSeek模型,那么Spring AI也支持这种方式。这时,我们就需要借助Ollama工具将DeepSeek本地化部署。

步骤1:部署DeepSeek本地模型

首先,你得通过Ollama工具将DeepSeek模型部署到本地。这个过程我之前已经写过教程,大家可以参考这篇文章【如何安装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中,你只需配置本地DeepSeek服务地址和模型名称:

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();
        }
    }
}

总结

看到这里,你一定能感受到Spring AI接入DeepSeek后带来的便利。无论是伪装成OpenAI进行API调用,还是将DeepSeek本地化部署到你的服务器,Spring AI都能轻松帮你实现这些需求。对于Java开发者来说,Spring AI无疑是一款省时又省力的神器!这样一来,我们就可以把精力集中在业务逻辑上,不用再为集成不同的AI模型而烦恼。

Image

好了,今天就分享到这里。如果你也正在考虑如何将AI融入到Java项目中,不妨试试Spring AI,真的挺方便的!

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

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

图片