当前位置: 首页 > news >正文

【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>


补充启动类

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


补充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.comchat:options:model:deepseek-chat# 模型temperature:0.7# 模型的参数0-2之间 数值越高,那么结果更加随机 数值越低,那么数值就越聚焦


3、编写接口去调用deepseek

@RequestMapping("/deepseek")@RestControllerpublicclassDeepSeekController{@Autowired//注入OpenAI聊天对象privateOpenAiChatModelopenAiChatModel;@RequestMapping("/chat")publicStringchat(Stringmessage){returnopenAiChatModel.call(message);}}

代码解释:


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

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


http://www.cnnetsun.cn/news/1843574.html

相关文章:

  • AI开发-python-langchain框架(--langchain与milvus的结合 )兰
  • 3分钟掌握Apex Legends智能压枪:免费开源工具终极指南
  • QModMaster:免费开源的工业级ModBus主站通信解决方案
  • Jasmine漫画浏览器:5分钟掌握跨设备阅读的终极指南
  • UniversalSplitScreen:打破单屏限制,让任何游戏都能本地分屏对战
  • 【深度学习】VSCode远程连接AutoDL部署YOLOv8实战指南
  • 如何在Windows上完美使用苹果触控板:mac-precision-touchpad完全配置指南
  • Xinference 安装与常见问题解决指南
  • 窄幅卫星式柔性版印刷机印刷装置设计(说明书+16张CAD图纸+solidworks三维图……)
  • 别再手动写if-else了!用Python装饰器@register_model实现模型工厂,5行代码搞定动态加载
  • MetaboAnalystR完整指南:3步实现代谢组学数据分析自由
  • 大模型推理延迟骤降73%?揭秘2026奇点大会公布的向量数据库3层协同优化架构
  • 2025届学术党必备的十大AI辅助写作网站推荐
  • 重新定义知识管理:从静态笔记到动态数据思维的范式转移
  • 文脉定序系统处理Typora Markdown笔记库:知识点的自动重构与链接建议
  • 终极指南:3分钟完成Axure RP中文界面切换,告别英文烦恼
  • 避坑指南:用JADX辅助分析混淆代码,精准定位APK内购破解的关键Smali位置
  • Vue2.X/Vue3.X项目中WangEditor 5富文本编辑器的封装实践:从配置到图片上传的完整指南
  • 伏羲天气预报业务监控:Prometheus+Grafana实现推理延迟与成功率看板
  • AI头像生成器部署教程(Windows WSL2):Ubuntu子系统运行Qwen3-32B+Gradio全记录
  • C 盘被微信占满?微信C盘空间清理指南
  • XCOM 2模组管理架构深度解析:AML启动器的技术实现与实践
  • 如何快速掌握ComfyUI节点管理:面向新手的完整指南
  • Win11 WSL2 + Ubuntu 24.04 下,如何让nRF开发板(DK)被VS Code和NCS v3.0.0正确识别?
  • 深入解析字节序与比特序:大小端原理及网络编程实战
  • 如何免费解析Altium电路图文件:5个简单步骤实现SchDoc格式转换
  • LeetCode 152. 乘积最大子数组:从双状态DP到空间优化【C++/Java精讲】
  • 从Level6到Level13:手把手带你通关RCE-labs靶场,掌握那些不为人知的Bash绕过技巧
  • 开源工具Nucleus Co-Op:如何让单人游戏秒变4人同屏?
  • 如何快速解决网易云音乐格式限制:ncmdump完整使用指南