专栏名称: 程序员鱼皮
鹅厂全栈开发,持续分享编程技法和实用项目
目录
相关文章推荐
沪考一点通  ·  2025复旦、上交大、同济考研复试分数线公布 ·  17 小时前  
沪考一点通  ·  2025复旦、上交大、同济考研复试分数线公布 ·  17 小时前  
幸福东台  ·  郑重声明 ·  3 天前  
幸福东台  ·  郑重声明 ·  3 天前  
51好读  ›  专栏  ›  程序员鱼皮

Spring 官宣接入 DeepSeek,太香了!

程序员鱼皮  · 公众号  ·  · 2025-02-13 13:30

正文

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

这里介绍两种方式:

  1. spring-ai-openai starter :伪装成 OpenAI,DeepSeek 提供了 OpenAI 兼容模式。
  2. 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.aigroupId>
    <artifactId>spring-ai-openai-spring-boot-starterartifactId>
    <version>0.8.1version>
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 开放平台中自行创建,地址: https://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: https://ollama.com

Ollama 可以让你轻松在自己的电脑上运行各种强大的 AI 模型,就像运行普通软件一样简单。







请到「今天看啥」查看全文