乐于分享
好东西不私藏

【SpringAI翻车笔记】01-准备工作+SpringAI接入DeepSeek

【SpringAI翻车笔记】01-准备工作+SpringAI接入DeepSeek

哈喽哈喽~ 各位小伙伴们集合啦! 👋我是小特同学,没错,我又来啦~ 今天正式解锁新副本:SpringAI 学习! 心情激动到搓手手,但学习咱不着急,放慢脚步,稳扎稳打才是王道,一起冲!😎


一、准备工作

1. 申请秘钥

🤔俺想要接入DeepSeek 的 API咋办尼? 1、进入官网👉https://platform.deepseek.com/api_keys 2、我们会进入到这个页面的哇~ 你看要消费是吧,😂没错滴,要用DeepSeek大API咱得开通哈,但是咱处于学习阶段的话,可以充值1元,对吧,等用完啦,咱在继续充值,因为这个东西是学习的话使用不了多少。


3、那么充值好之后,咱得注意秘钥哦~ 如果我们没有复制秘钥的话,就只能重新再创建一个啦🌶️,创建好之后记得:将你的秘钥复制好,存在一个你自己知道的地方,⚠️不要给别人使用哦,不然就真的是你的钱被别花啦😄~


2. 看API文档

🤔我要用API,那么如何下手呢? 很简单滴,咱看官方文档🚀,如下👇 我和DeepSeek的AI服务器怎么沟通呢???🤔 ✨哈哈,人家规定了一套规则,那么这套规则如下所示:


😄,看完之后是不是还是觉得这个规则 挺多的呀,🤔那完啦,是不是咱后面都这么写呀???

这个就是为什么我们需要学习SpringAI啦,SpringAI把这些都封装好啦,咱们就不需要考虑那么多了,所以让我们开始学习第一个SpringAI程序吧,看我们如何接入DeepSeek


二、SpringAI接入DeepSeek

1. 创建父工程

创建项目咱使用的是父子工程的模式,因为这样方便我们的代码进行维护~~ 1、首先创建一个父工程 2、咱是父工程所以不需要src目录,直接删啦 3、修改我们的pom文件,我使用的是下面的pom文件

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>org.example</groupId>    <artifactId>spring-ai-project</artifactId>    <version>1.0-SNAPSHOT</version>    <!-- 声明⽗⼯程的打包⽅式为pom -->    <packaging>pom</packaging>    <!-- 完善依赖,我们使用的spring版本是3.5.3 -->    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>3.5.3</version>        <relativePath/>    </parent>    <properties>        <maven.compiler.source>17</maven.compiler.source>        <maven.compiler.target>17</maven.compiler.target>    </properties></project>

2. 创建子工程

1、创建子项目,我们不使用Spring项目插件,我们直接建一个空的模块,然后我们自己去搭建spring项目结构 2、创建好之后,补充我们spring项目所需要的东西 补充pom文件中的依赖

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <parent>        <artifactId>spring-ai-project</artifactId>        <groupId>org.example</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    <modelVersion>4.0.0</modelVersion>    <artifactId>spring-ai-demo</artifactId>    <properties>        <maven.compiler.source>17</maven.compiler.source>        <maven.compiler.target>17</maven.compiler.target>    </properties>    <!--依赖-->    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>    </dependencies>    <!--插件-->    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

补充启动类

@SpringBootApplicationpublic class SpringAiApplication {    publicstaticvoidmain(String[] args) {        SpringApplication.run(SpringAiApplication.classargs);    }}

补充yml文件


3. 接入deepseek前置工作

咱们是使用SpringAI来接入deepseek的,所以得需要加入SpringAI的依赖。

🤔那SpringAI 是啥?为啥要加依赖?跟 DeepSeek 啥关系?

3.1. SpringAI 到底是干啥的?

一句话:SpringAI = SpringBoot 官方给 AI 接口做的“统一外套”

我们可以把它理解成:

  • 以前你调用 DeepSeek、OpenAI、豆包、通义千问…… 每家 API 格式都不一样,参数不一样,写法不一样,很烦。
  • 现在 SpringAI 帮你统一了一套写法 你只需要学一套代码,换个配置就能对接任何 AI。

就像:

  • 你有很多插头(各家AI)
  • SpringAI 就是万能插排
  • 你只需要插上去,不用管里面怎么接线

3.2. 为什么必须加 SpringAI 依赖?

因为:我们现在写的是 SpringBoot 项目,但 SpringBoot 本身不自带 AI 功能!

  • 你不加依赖 → 项目里没有 AI 相关类
  • 加了依赖 → 才能用 ChatClient 这类东西去调用 AI
  • 不加就会爆红、报错、找不到类

就像你想玩手机拍照,必须要有摄像头硬件一样,依赖就是那个“摄像头”。

3.3. 我们现在做的事情逻辑是这样

所写的项目: SpringBoot ← 依赖 SpringAI ← 对接 DeepSeek API

  • SpringAI 负责:统一调用方式、处理对话、流式输出、异常等
  • DeepSeek 负责:真正的 AI 思考、回答内容
  • 你只负责:写业务代码,不用管底层 HTTP 请求

3.4. 总结

  • DeepSeek
    :真正的AI大脑
  • SpringAI
    :帮你轻松连接AI的工具包
  • SpringBoot
    :你的项目框架
  • 依赖
    :把工具包引进来

不加依赖 = 有车没油,跑不起来。

3.5 添加SpringAI的BOM

导入BOM的官网👉https://docs.spring.io/spring-ai/reference/getting-started.html

    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.ai</groupId>                <artifactId>spring-ai-bom</artifactId>                <version>1.0.0-M6</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>

解释为什么需要加入BOM?

BOM = 版本管理员 它的作用只有一个:帮你统一管理所有 SpringAI 相关依赖的版本号,不让它们打架。

1. 不加 BOM 会怎样? 你要用到 SpringAI 的很多工具:

  • spring-ai-core
  • spring-ai-openai
  • spring-ai-chat
  • ……

如果你一个个自己写版本号,很容易出现:

  • 这个是 1.0.0
  • 那个是 1.0.1
  • 另一个是 0.9.0

结果就是:版本不兼容 → 项目爆红、启动失败、报错满天飞!

就像: 你买了一堆零件组装电脑, CPU 是新款,主板是老款,不兼容 → 装不起来 → 电脑用不了


2. 加了 BOM 会怎样? 你只需要在 dependencyManagement 里加一次 BOM

<dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-bom</artifactId>    <version>1.0.0-M6</version>    <type>pom</type>    <scope>import</scope></dependency>

从此以后:你引入任何 SpringAI 依赖,都不用写版本号! BOM 会自动给你匹配最兼容、最稳定、最配套的版本。

就像: 你买了一整套品牌原装电脑零件 厂家已经帮你配好所有兼容版本 你只管装,不用管型号对不对


3. 最核心的 2 个作用

  1. 不用手动写版本号 引入依赖时干干净净:

    <dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-openai-spring-boot-starter</artifactId></dependency>

  2. 保证所有依赖版本统一、不冲突、不报错 这是 Spring 官方强制推荐的方式。


3.6 要加的依赖大概长这样

<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId>  <!--<version>1.0.0-M6</version>--><!--如果你上述将BOM引入进来了,那么此处就不需要版本了--></dependency>

因为 DeepSeek 兼容 OpenAI 格式,所以用这个依赖就能直接对接。


4. 接入deepseek

1、需要添加依赖 上述已完成

<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId></dependency>

2、配置秘钥

spring:  ai:    openai:      # 下面是我们的DeepSeek的api相关配置      api-key: sk-your-key # 你自己的API秘钥      base-url: https://api.deepseek.com      chat:  # 注意格式要对齐,我们的Spring才能够管理得到        options:          model: deepseek-chat  # 模型          temperature: 0.7      # 模型的参数0-2之间 数值越高,那么结果更加随机 数值越低,那么数值就越聚焦

3、编写接口去调用deepseek

@RequestMapping("/deepseek")@RestControllerpublic class DeepSeekController {@Autowired    //注入OpenAI聊天对象    private OpenAiChatModel openAiChatModel;    @RequestMapping("/chat")    public String chat(String message) {        return openAiChatModel.call(message);    }}

代码解释:


这样我们的入门程序接入Deepseek就完毕啦 🎉🎉🎉

感谢各位的观看,如果觉得有用,记得点赞、收藏+关注,我们后续内容更加精彩👏 你的支持是我创作的动力,谢谢各位朋友🍻,咱们下期见啦👋~~