Spring AI 如何接入集成 DeepSeek

后端 潘老师 2个月前 (02-19) 419 ℃ (0) 扫码查看

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集成的。在开始集成之前,咱们得做好下面这些准备工作:

  1. 获取API密钥:先去https://api-docs.deepseek.com/zh-cn/ 创建API密钥,拿到密钥后,在Spring AI项目里,把它配置到spring.ai.openai.api-key这个属性里。如果不会获取deepseek api请参考:
    如何获取 DeepSeek API?

    文章目录 第一步:注册DeepSeek 第二步:创建并复制API Key 补充说明 常见工具接入DeekSee […]

  2. 设置基本URL:接着把spring.ai.openai.base-url属性设置成api.deepseek.com
  3. 选择模型:用spring.ai.openai.chat.model=<model name>这个属性来指定要用的模型。可以从支持的型号里挑选,比如想用对话功能就选deepseek – chat,想用推理功能就选deepseek – reasoner。

做好准备工作后,咱们就可以开始集成DeepSeek了,具体步骤如下:

  1. 引入依赖:在项目的依赖配置文件里加上下面这段代码:
<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可以参考文章:

如何本地部署deepseek开源AI大模型

文章目录 一、LM Studio部署步骤 二、模型下载要点 三、模型使用体验 最近这过年期间,AI领域可谓热闹 […]

四、总结

总的来说,Spring AI接入DeepSeek大模型的操作并不复杂,而且还实现了阻塞和流式聊天模式,方便开发者根据实际需求选择。DeepSeek大模型的函数调用、角色定义以及结构化输出等功能,和之前文章里讲的差不多,这里就不多说了。要是你对这些内容感兴趣,可以去看看本站的其他文章。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/14655.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】