如何在Spring AI上接入DeepSeek
大家平时开发应用时,接入 AI 模型是不是觉得很麻烦?特别是不同 AI 服务商的接口和配置各不相同,光是对接就能让人头大。
而 Spring AI 就是来解决这个问题的!它从一些知名的 Python 项目(比如 LangChain 和 LlamaIndex)中汲取灵感,专门为 Java 应用提供了一套统一的解决方案。简单来说,它就像个“万能适配器”,帮你把各种 AI 模型轻松接入到你的应用中。
Spring AI 的主要亮点有以下几点:
- 统一接口:无论是 OpenAI、Hugging Face 还是国产的 DeepSeek,只要通过 Spring AI,你都可以用同样的方式调用它们。
- 简化配置:不用再手动配置各种复杂的参数,Spring AI 会帮你搞定一切,比如 API 密钥、模型参数等。
- 灵活切换:如果哪天你想换个 AI 服务商,只需要改个配置文件,业务代码基本不用动,省心又高效。
这次我们要讲的是如何用 Spring AI 来集成国产的 AI 模型 DeepSeek。这款模型最近很火,性能不错,很多公司都在考虑集成到自己的应用中。接下来,我会详细介绍两种集成方式:伪装成 OpenAI 和 本地化部署。
方法一:伪装成 OpenAI
DeepSeek 提供了 OpenAI 兼容模式,这意味着你可以用调用 OpenAI 的方式来调用 DeepSeek。Spring AI 的 openai starter 就是通过 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 密钥:
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 开放平台申请,由于官网服务器资源紧张,已暂停 API 服务充值,所以我们需要其他的方法来获取,具体请看这篇:【获取DeepSeek API】
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 模型,这种方式会更适合你。我们可以借助 Ollama 工具来本地部署一个 DeepSeek R1 蒸馏版。
1、部署DeepSeek本地模型
通过Ollama将DeepSeek部署到本地我已经写过教程了,大家可以参考这篇教程:【如何安装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
中配置 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();
}
}
}
最后
通过 Spring AI,我们可以轻松实现 DeepSeek 的集成,无论是通过云端的 OpenAI 兼容模式,还是本地化部署,都非常简单方便。如果你正在寻找一款高效的国产 AI 模型,DeepSeek 值得一试。
而 Spring AI 则让整个集成过程变得更加顺畅。我的感觉是,这种方式不仅降低了开发复杂度,还提升了代码的灵活性,强烈推荐试试!