写点什么

太香了!Spring 官宣接入 DeepSeek

作者:秃头小帅oi
  • 2025-03-13
    福建
  • 本文字数:2215 字

    阅读完需:约 7 分钟

太香了!Spring 官宣接入 DeepSeek

最近逛了下 Spring 的官网,发现 Spring AI 已经支持 DeepSeek!今天和大家聊聊如何在 Spring Boot 项目制使用 DeepSeek,还是非常方便的!

Spring AI 简介

Spring AI 是 Spring 官方推出的开源框架,旨在为 Java 开发者提供方便的 AI 集成能力。其核心是通过抽象化和模块化设计,简化 AI 功能的接入步骤,同时保持与 Spring 生态的无缝兼容。

以下是其主要特点与功能:

  • 统一的抽象 API:支持主流 AI 服务,如 OpenAI、DeepSeek、Google、和 Ollama 等,提供了提供标准化的接口。

  • 核心功能模块:模型交互、向量处理、检索增强生成(RAG)、函数调用。

  • 低代码集成:通过 Spring Boot Starter 依赖快速接入,在配置文件中配置好 AI 服务即可使用。

  • 结构化输出:将模型响应直接映射为 Java 对象,简化数据处理。

  • 流式响应:支持 Flux 流式输出,适用于实时聊天等场景。

获取 API KEY

由于 DeepSeek 官方服务有时候调用会繁忙,这里以阿里云百炼平台的 DeepSeek 服务为例。


  • 点击模型的立即体验,然后点击右上角的钥匙按钮就可以获取到对应的 API KEY 了,首次使用需要自行创建 API KEY。


这或许是一个对你有用的开源项目,mall 项目是一套基于 SpringBoot3 + Vue 的电商系统(Github 标星 60K),后端支持多模块和 2024 最新微服务架构,采用 Docker 和 K8S 部署。包括前台商城项目和后台管理系统,能支持完整的订单流程!涵盖商品、订单、购物车、权限、优惠券、会员、支付等功能!

项目演示:


使用

接下来我们就来讲解下使用 Spring AI 来调用 DeepSeek 服务。

  • 首先在 SpringBoot 项目中添加 Spring AI 对应的依赖;

<dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>    <version>1.0.0-M6</version></dependency>
复制代码
  • 然后在项目的 application.yml 配置文件中添加调用 AI 服务相关的配置;

spring:  ai:    openai:      # 调用AI接口时表明身份的API KEY      api-key: <YOUR_API_KEY>      # 调用AI接口时的基础路径,配置的是阿里云百炼的基础路径      base-url: https://dashscope.aliyuncs.com/compatible-mode      chat:        options:          # 调用的模型,DeepSeek的话可以选择deepseek-r1或deepseek-v3          model: deepseek-r1          # 用来控制文本生成的随机性(创造力),值越小越严谨          temperature: 0.8
复制代码
  • 接下来在 Controller 中添加对应的接口来调用 AI 服务生成答案,这里提供了直接回答和流式回答两个接口。

/** * @auther macrozheng * @description 对接DeepSeek后生成回答的Controller * @date 2025/2/21 * @github https://github.com/macrozheng */@RestControllerpublic class DeepSeekController {
private final OpenAiChatModel chatModel;
@Autowired public DeepSeekController(OpenAiChatModel chatModel) { this.chatModel = chatModel; }
/** * 根据消息直接输出回答 */ @GetMapping("/ai/chat") public Map chat(@RequestParam(value = "message") String message) { return Map.of("generation", this.chatModel.call(message)); }
/** * 根据消息采用流式输出,输出回答 */ @GetMapping(value = "/ai/chatFlux", produces = MediaType.TEXT_EVENT_STREAM_VALUE + "; charset=UTF-8") public Flux<ChatResponse> chatFlux(@RequestParam(value = "message") String message) { Prompt prompt = new Prompt(new UserMessage(message)); return this.chatModel.stream(prompt); }
}
复制代码

测试

然后启动项目,这里我们使用 Postman 来测试下接口


  • 接下来调用下流式输出答案的接口,我们可以发现它会持续不断地返回结果,直到请求连接关闭,接口地址:http://localhost:8080/ai/chatFlux

  • 其实总的回答在 result.output.text 这个属性里面,我们可以通过接口中的 text 属性的拼接来获得完整的回答。


总结

今天给大家介绍了下 Spring AI 和 DeepSeek 的集成方法,还是比较简单的。对于回答的输出,由于直接输出响应比较慢,我们可以采用流式输出,通过不断拼接回答来响应比较好。

项目源码地址

https://github.com/macrozheng/spring-examples/tree/master/spring-deepseek

行业拓展

分享一个面向研发人群使用的前后端分离的低代码软件——JNPF

基于 Java Boot/.Net Core 双引擎,它适配国产化,支持主流数据库和操作系统,提供五十几种高频预制组件,内置了常用的后台管理系统使用场景和实用模版,通过简单的拖拉拽操作,开发者能够高效完成软件开发,提高开发效率,减少代码编写工作。

JNPF 基于 SpringBoot+Vue.js,提供了一个适合所有水平用户的低代码学习平台,无论是有经验的开发者还是编程新手,都可以在这里找到适合自己的学习路径。

此外,JNPF 支持全源码交付,完全支持根据公司、项目需求、业务需求进行二次改造开发或内网部署,具备多角色门户、登录认证、组织管理、角色授权、表单设计、流程设计、页面配置、报表设计、门户配置、代码生成工具等开箱即用的在线服务。

用户头像

摸个鱼,顺便发点有用的东西 2023-06-19 加入

互联网某厂人(重生版)

评论

发布
暂无评论
太香了!Spring 官宣接入 DeepSeek_秃头小帅oi_InfoQ写作社区