Spring AI 快速入门集成 DeepSeek 大模型实战笔记今天上手了 Spring AI 的第一课用 Spring Boot DeepSeek API 搭了一个最简单的 AI 聊天应用。把整个过程和知识点整理一下方便后续回顾。一、什么是 Spring AISpring AI 是 Spring 官方推出的 AI 应用开发框架核心目标是让 Java 开发者像使用 Spring Data 操作数据库一样用统一的抽象来调用各种大模型。它的核心特点统一 API 抽象不管是 OpenAI、DeepSeek、智谱还是通义千问接口调用方式基本一致切换模型只改配置自动装配Spring Boot Starter 机制引入依赖 写配置就能用高阶能力支持 RAG、Function Calling、多模态、向量数据库等入门阶段先从聊天开始二、项目配置详解application.propertiesspring.application.nameSpringAIQuickStart server.port8080 # Deepseek API 配置 spring.ai.deepseek.base-urlhttps://api.deepseek.com spring.ai.deepseek.api-keysk-xxxxxxxxxxxxxxxxxxxx spring.ai.deepseek.chat.options.modeldeepseek-chat spring.ai.deepseek.chat.options.temperature0.8逐行拆解知识点配置项作用注意点spring.ai.deepseek.base-urlDeepSeek API 的基础地址国内模型必须手动指定 base-url默认是 OpenAI 的地址spring.ai.deepseek.api-keyAPI 密钥从 DeepSeek 官网控制台获取生产环境绝对不能硬编码建议用环境变量或配置中心chat.options.model指定使用的模型名称DeepSeek 聊天模型一般填deepseek-chatchat.options.temperature采样温度范围 0~2值越高回答越随机、越有创造力值越低越稳定、越严谨。0.8 属于偏创意的平衡值小知识pom.xml 里需要引入spring-ai-deepseek-spring-boot-starter依赖Spring Boot 才会自动装配 DeepSeekChatModel 这个 Bean。三、Controller 层实现ChatControllerRestController RequestMapping(/ai) public class ChatController { Autowired private DeepSeekChatModel chatModel; GetMapping(/generate) private String generate(RequestParam(valuemessage, defaultValue你是谁) String message) { String response chatModel.call(message); return response; } }核心知识点1. DeepSeekChatModel 是什么这是 Spring AI 自动装配好的聊天模型客户端本质上封装了 HTTP 请求、鉴权、序列化等底层逻辑。我们只需要注入直接调用就行不用手写 RestTemplate/WebClient。2.chatModel.call(message)方法最简单的同步调用方式传入一个 String返回一个 String内部会自动构建 ChatRequest调用 DeepSeek 的/chat/completions接口阻塞式调用大模型生成需要几秒这段时间线程会一直等待。生产环境建议用流式stream接口提升体验3. 几个可以优化的点generate方法权限是privateSpring MVC 其实也能识别但规范上应该写成public没有异常处理API 调用失败会直接抛 500没有对话历史每次调用都是全新的上下文多轮对话需要自己维护 message 列表四、前端聊天页面前端是一个纯 HTML CSS JS 的单页通过fetch调用后端/ai/generate接口。关键实现点1. 消息渲染机制function addMessage(role, text) { // 动态创建 DOM 元素区分 user / ai 两种样式 }用role参数控制气泡方向用户消息靠右紫色渐变AI 消息靠左白色卡片。2. 打字指示器Typing Indicatorfunction addTypingIndicator() { ... } function removeTypingIndicator() { ... }请求发出后显示三个跳动的小圆点AI 回复回来后移除——这是聊天应用的标配交互解决了等待期间的空白焦虑。3. XSS 防护function escapeHtml(text) { const div document.createElement(div); div.textContent text; return div.innerHTML; }AI 返回的内容直接插入 DOM 有 XSS 风险用textContent转义是最简单的处理方式。4. 跨域问题这里前端页面和后端接口是同源部署都在 8080 端口所以 fetch 直接写/ai/generate就行。如果前后端分离部署后端需要配置CrossOrigin或全局 CORS 配置。五、完整调用链路梳理用户输入文字 → 前端 fetch 发送 GET 请求 /ai/generate?messagexxx → ChatController 接收参数 → DeepSeekChatModel.call() 内部封装 HTTP 请求 → 调用 DeepSeek 官方 API (api.deepseek.com) → 大模型生成回答并返回 ← 拿到响应字符串 ← Controller return 字符串 ← 前端收到 response → 渲染 AI 气泡到页面六、踩坑与注意事项API Key 泄露风险代码里硬编码 key 只是练习用实际项目一定要放到环境变量或 Nacos 等配置中心同步调用超时call()是阻塞的复杂回答可能耗时十几秒需要调整 Tomcat 超时时间或者改用 SSE 流式输出没有上下文记忆每次调用都是独立的AI 不记得上一句说了什么。多轮对话需要把历史消息组装成ListMessage传给chatModel.call()Temperature 参数调优做代码生成、事实问答建议调低0.20.5做创意写作、头脑风暴可以调高0.71.0七、下一步可以学什么流式输出Streaming用stream()方法实现打字机效果用户体验直接拉满多轮对话用ChatMemory管理对话历史Prompt 模板PromptTemplate统一管理提示词RAG 检索增强结合向量数据库让 AI 回答你的私有文档Function Calling让 AI 调用你写的 Java 方法总结Spring AI 把大模型调用的复杂度封装得非常彻底一个 Starter 几行配置 一个call()方法就能跑通完整的 AI 聊天应用。这节课只是入门核心价值在于 Spring 生态的统一抽象——后面换模型、加功能都不用推翻重写。
企业数字化 ERP 产品动态
相关推荐
FIR数字滤波器设计:从原理到FPGA工程实践 1. FIR数字滤波器设计实战开篇作为一名在数字信号处理领域摸爬滚打多年的工程师,我至今记得第一次独立完成FIR滤波器设计时的场景。当时为了滤除工业传感器信号中的50Hz工频干扰,我翻遍了各种教材和论文,却发现大多数资料要么过于理论化&… · 2026/9/21 12:26:38
3分钟搞定实时字幕:Windows本地语音转文字工具完整指南 3分钟搞定实时字幕:Windows本地语音转文字工具完整指南 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech
还在为会议记录手忙脚乱?还在为视频字幕制作头疼?今天,我要向您… · 2026/9/26 21:36:41
中科蓝讯蓝牙芯片FLASH存储机制与SDK接口详解 1. 中科蓝讯芯片架构与FLASH存储机制解析在中科蓝讯蓝牙芯片方案中,内置FLASH存储是实现参数持久化的关键组件。根据实际项目经验,其典型架构采用SPI接口连接的NOR Flash芯片,容量通常为512KB或1MB。这种设计在TWS耳机、智能穿戴等低功耗场景… · 2026/9/21 3:38:45
做网站推广托管注意哪5点,新手选哪家好别踩坑 做网站推广托管注意哪5点,新手选哪家好别踩坑 昨晚凌晨三点,后台警报炸了。我盯着屏幕,心沉到了谷底:官网首页被黑,弹出了满屏的博彩广告。更恶心的是,客户直接打过来骂,说他们的品牌信誉全毁了。那一刻我才彻底明白, 网站被黑挂马不知道怎么办… · 2026/9/27 4:15:54
中秋福利!奶茶外卖打车日常消费直接抵 这 8 块钱,花在这些场景最舒服(最低0.01元起)
无门槛券最大的好处就是灵活,不用为了凑单硬买不需要的东西。下面这几个日常高频场景,用起来幸福感直接拉满。奶茶咖啡:几毛钱喝一杯
这是最推荐的用法。下午犯困想喝杯奶茶ÿ… · 2026/9/27 4:15:41
3个真实案例揭秘电子商务网站建设发展报告背后的黑产套路 3个真实案例揭秘电子商务网站建设发展报告背后的黑产套路 上周凌晨两点,我刚挂掉一个客户的电话。对方声音颤抖,说商城后台突然多了几个陌生管理员,前台页面挂满了非法广告,甚至开始自动发邮件给用户。他问我:“网站被黑挂马不知道怎么办?”… · 2026/9/27 4:15:23
华工通信原理期末复习PPT:七章考点地图与计算题突破 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:14:28
十万个数、五十亿种剪法,这道题怎么数 这道题是一道动态规划的题,说实话,题目意思就很别扭,估计也是翻译得有点问题,今天这篇文章就来讲明白这道题。
先看它到底要数什么。
给你一个数组,可以从左边去掉一段,也可以从右边去掉一段,但… · 2026/9/27 4:14:16
邵阳整站优化避坑指南:3招解决拖稿难题与性能优化 邵阳整站优化避坑指南:3招解决拖稿难题与性能优化 找建站公司改个按钮位置,对方居然让你等一周?这种“改个需求拖一周”的体验,在邵阳本地找整站优化服务时太常见了。很多老板觉得,不就是改个文案、调个布局吗,怎么比修路还慢?… · 2026/9/27 4:14:16
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01