Spring AI 如何接入集成 DeepSeek
Spring宣布可以通过Spring AI 接入DeepSeek啦!DeepSeek可是咱们国产大模型里的佼佼者,由深度求索公司发布。这次Spring与DeepSeek的合作,让不少开发者都跃跃欲试,想知道怎么基于DeepSeek大模型开发智能应用。别着急,今天这篇文章就带你一步步了解。
一、认识DeepSeek大模型
DeepSeek推出了两款不同功能侧重的模型,能满足各种不同的需求。
- DeepSeek V系列:主打对话功能,模型名称是deepseek – chat。有了它,开发的应用就能和用户像朋友聊天一样顺畅交流,不管是解答问题,还是陪用户谈天说地都不在话下。
- DeepSeek R系统:主要负责推理,模型叫deepseek – reasoner。它就像个“智慧大脑”,遇到复杂问题时,能通过推理给出合理的答案,比如分析数据、解决逻辑难题等。
要是你想了解DeepSeek模型的发布和演化过程,可以去它的官方更新日志看看,地址是https://api-docs.deepseek.com/zh-cn/updates ,这里面详细记录了模型的演变轨迹。
二、Spring AI集成DeepSeek大模型的方法步骤
DeepSeek AI开源了DeepSeek V3模型,这个模型的推理和解决问题的能力特别厉害。Spring AI是通过重用现有的OpenAI客户端来和DeepSeek AI集成的。在开始集成之前,咱们得做好下面这些准备工作:
- 获取API密钥:先去https://api-docs.deepseek.com/zh-cn/ 创建API密钥,拿到密钥后,在Spring AI项目里,把它配置到
spring.ai.openai.api-key
这个属性里。如果不会获取deepseek api请参考: - 设置基本URL:接着把
spring.ai.openai.base-url
属性设置成api.deepseek.com
。 - 选择模型:用
spring.ai.openai.chat.model=<model name>
这个属性来指定要用的模型。可以从支持的型号里挑选,比如想用对话功能就选deepseek – chat,想用推理功能就选deepseek – reasoner。
做好准备工作后,咱们就可以开始集成DeepSeek了,具体步骤如下:
- 引入依赖:在项目的依赖配置文件里加上下面这段代码:
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency>
这段代码的作用是告诉项目,我们要使用Spring AI的OpenAI相关功能,为后续集成DeepSeek大模型打下基础。
2. 进行配置:在项目的配置文件里添加如下配置:
spring: ai: openai: api-key: sk-xxx // 填写自己申请的key base-url: https://api.deepseek.com chat: options: model: deepseek-chat
这里把前面获取的API密钥、设置的基本URL以及选择的模型都配置好了,让Spring AI能顺利连接到DeepSeek大模型。
3. 实现聊天示例:下面是一个简单的聊天示例代码:
package com.ivy.controller; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.model.ChatResponse; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.openai.OpenAiChatModel; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Flux; import java.util.Map; @RestController public class ChatController { // 注入OpenAiChatModel,用于与DeepSeek大模型进行交互 private final OpenAiChatModel chatModel; public ChatController(OpenAiChatModel chatModel) { this.chatModel = chatModel; } // 处理/generate请求,返回生成的文本 @GetMapping("/ai/generate") public Map<String, String> generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) { // 调用chatModel的call方法,传入用户消息,获取生成的文本 return Map.of("generation", this.chatModel.call(message)); } // 处理/generateStream请求,返回流式的聊天响应 @GetMapping("/ai/generateStream") public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) { // 创建一个包含用户消息的Prompt对象 Prompt prompt = new Prompt(new UserMessage(message)); // 调用chatModel的stream方法,传入Prompt对象,获取流式的聊天响应 return this.chatModel.stream(prompt); } }
这段代码实现了两个接口,/ai/generate
用于返回生成的文本,/ai/generateStream
用于返回流式的聊天响应,让应用能和用户进行实时交互。
三、本地部署DeepSeek大模型
现阶段,由于资源限制,DeepSeek的在线服务可能不太稳定。要是遇到这种情况,咱们可以在本地部署一个DeepSeek大模型,这样就能在本地学习和使用啦。如果想要本地部署deepseek可以参考文章:
四、总结
总的来说,Spring AI接入DeepSeek大模型的操作并不复杂,而且还实现了阻塞和流式聊天模式,方便开发者根据实际需求选择。DeepSeek大模型的函数调用、角色定义以及结构化输出等功能,和之前文章里讲的差不多,这里就不多说了。要是你对这些内容感兴趣,可以去看看本站的其他文章。