Spring AI第一课-简单问答
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 生态的统一抽象——后面换模型、加功能都不用推翻重写。

相关新闻

FIR数字滤波器设计:从原理到FPGA工程实践

FIR数字滤波器设计:从原理到FPGA工程实践

1. FIR数字滤波器设计实战开篇作为一名在数字信号处理领域摸爬滚打多年的工程师,我至今记得第一次独立完成FIR滤波器设计时的场景。当时为了滤除工业传感器信号中的50Hz工频干扰,我翻遍了各种教材和论文,却发现大多数资料要么过于理论化&…

2026/7/18 19:43:58阅读更多 →
3分钟搞定实时字幕:Windows本地语音转文字工具完整指南

3分钟搞定实时字幕:Windows本地语音转文字工具完整指南

3分钟搞定实时字幕:Windows本地语音转文字工具完整指南 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 还在为会议记录手忙脚乱?还在为视频字幕制作头疼?今天,我要向您…

2026/7/18 19:43:58阅读更多 →
中科蓝讯蓝牙芯片FLASH存储机制与SDK接口详解

中科蓝讯蓝牙芯片FLASH存储机制与SDK接口详解

1. 中科蓝讯芯片架构与FLASH存储机制解析在中科蓝讯蓝牙芯片方案中,内置FLASH存储是实现参数持久化的关键组件。根据实际项目经验,其典型架构采用SPI接口连接的NOR Flash芯片,容量通常为512KB或1MB。这种设计在TWS耳机、智能穿戴等低功耗场景…

2026/7/18 19:43:58阅读更多 →
AI时代企业哪家强?深度对比评测:广州裕富科技如何用四大模型颠覆直播行业

AI时代企业哪家强?深度对比评测:广州裕富科技如何用四大模型颠覆直播行业

引言:AI时代的十字路口,企业如何选对合作伙伴? 2025年,AI技术已从概念走向全面落地。无论是电商直播、短视频营销,还是企业数字化运营,“AI智播”、“智能体”等词汇频繁出现在商业决策者的视野中。然而&am…

2026/7/18 20:42:20阅读更多 →
CSDN资源上传与查看管理全攻略:从新手到高手的完整指南(建议收藏)

CSDN资源上传与查看管理全攻略:从新手到高手的完整指南(建议收藏)

CSDN资源上传与查看管理全攻略:从新手到高手的完整指南 文章目录CSDN资源上传与查看管理全攻略:从新手到高手的完整指南第一部分:资源上传前的准备工作为什么要上传资源?上传前的必备条件第二部分:资源上传详细操作指南…

2026/7/18 20:42:20阅读更多 →
骑手同时戴美团头盔、穿饿了么衣服、背达达箱子——“诚心呈意“,即时配送的B面生意

骑手同时戴美团头盔、穿饿了么衣服、背达达箱子——“诚心呈意“,即时配送的B面生意

一、万亿级市场的"最后一公里"战争2024年,中国即时配送行业订单规模达到482.8亿单,同比增长17.6%。按照弗若斯特沙利文的预测,行业有望在2030年突破千亿订单规模,未来六年保持年均13.1%的两位数增长。这不是一个抽象的数…

2026/7/18 20:42:20阅读更多 →
tlsfoward 不只是抓包:用脚本化思路做 HTTP/TLS 网络测试

tlsfoward 不只是抓包:用脚本化思路做 HTTP/TLS 网络测试

tlsfoward 不只是抓包:用脚本化思路做 HTTP/TLS 网络测试 很多人第一次接触抓包工具时,关注点通常都在“能不能看到请求”。例如接口地址是什么、状态码是多少、Header 有没有带上、响应内容是否正常。 这些能力当然重要,但在实际开发和测试…

2026/7/18 20:42:20阅读更多 →
金融科技GEO案例拆解:蚂蚁ZOLOZ+10.4x背后,全球增长服务如何做到可量化可复现?

金融科技GEO案例拆解:蚂蚁ZOLOZ+10.4x背后,全球增长服务如何做到可量化可复现?

摘要:本文拆解金融科技GEO可量化成果的实现路径,以蚂蚁集团ZOLOZ(AI可见度10.4倍、累计1855条可归因线索,同一项目不同阶段)为案例,系统梳理双生态AI覆盖、合规内容工程、实体档案建设和效果验证四个核心模…

2026/7/18 20:42:20阅读更多 →
【核反应】基于matlab核衰变粒子的三维仿真【含Matlab源码 15894期】

【核反应】基于matlab核衰变粒子的三维仿真【含Matlab源码 15894期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…

2026/7/18 20:40:18阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/18 10:49:13阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/18 8:49:08阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/18 14:49:24阅读更多 →
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

2026/7/18 0:00:14阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:14阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/18 0:00:14阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/17 22:48:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →