在 AI 技术与后端开发深度融合的当下,Spring AI 作为 Spring 生态下的 AI 集成框架,为 Java 开发者快速对接大模型、实现智能应用开发提供了极大便利。近期通过学习 CSDN 上《Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统》这一实战教程,从环境搭建到代码实现,完整掌握了基于 Spring Boot 3.2 + Spring AI + DeepSeek 构建智能客服系统的核心技术,现将学习心得与知识点总结分享,方便后续复盘拓展应用与同行交流。
本次学习的核心项目是基于Spring Boot 3.2.0 + Spring AI 1.0.0-M4 + DeepSeek Chat API打造的轻量级智能客服系统,该项目不仅整合了 Spring 生态的主流后端技术,还实现了大模型的无缝对接,具备智能对话问答、上下文记忆、对话历史记录、实时响应等核心功能,是入门 Spring AI 开发的优质实战案例。
通过该项目的学习,不仅能巩固 Spring Boot、MyBatis 等后端基础技术,更能掌握 Spring AI 对接第三方大模型的通用方法,理解 AI 智能应用的开发流程与核心逻辑,为后续开发教育、电商、办公等垂直领域的 AI 应用打下坚实基础。
2.1 项目核心技术栈梳理
项目采用的技术栈均为当前后端与 AI 开发的主流技术,各组件分工明确、搭配合理,完美契合轻量级智能应用的开发需求,核心技术栈及作用如下:
表格
2.2 项目整体架构设计
项目采用经典的分层架构设计,严格遵循 “单一职责原则”,代码结构清晰、易于维护与扩展,从下到上分为数据层、服务层、控制层,同时配合前端模板层实现交互,整体项目结构如下:
plaintext
springai-deepseek-chatbot/
├── pom.xml # Maven依赖全局配置
├── src/main/
│ ├── java/com/example/chatbot/
│ │ ├── ChatbotApplication.java # 项目主启动类,程序入口
│ │ ├── controller/ # 控制层,接收前端请求,返回响应结果
│ │ │ ├── ChatbotController.java # 核心对话接口控制层
│ │ │ └── PageController.java # 页面跳转控制层
│ │ ├── service/ # 服务层,处理核心业务逻辑
│ │ │ └── ChatbotService.java # 智能对话与数据交互核心服务
│ │ ├── mapper/ # 数据访问层,MyBatis映射器接口
│ │ │ └── ChatRecordMapper.java # 对话记录数据库操作接口
│ │ ├── entity/ # 实体类,与数据库表结构一一对应
│ │ │ └── ChatRecord.java # 聊天记录实体
│ │ └── dto/ # 数据传输对象,封装前后端交互数据
│ │ ├── ChatRequest.java # 前端对话请求参数封装
│ │ └── ChatResponse.java # 后端对话响应结果封装
│ └── resources/
│ ├── application.yml # 项目全局配置文件(端口、数据库、AI等)
│ ├── schema.sql # 数据库表结构初始化脚本
│ ├── data.sql # 数据库初始化数据脚本
│ ├── mapper/ # MyBatis映射文件,编写SQL语句
│ └── templates/ # Thymeleaf前端模板目录
│ └── chat.html # 智能客服对话主页面
各层级的核心交互逻辑:前端页面通过 HTTP 请求调用控制层接口 → 控制层调用服务层处理业务逻辑(包括调用 Spring AI 对接 DeepSeek、调用 mapper 操作数据库) → 数据访问层与 H2 数据库交互完成数据读写 → 结果逐层返回至前端,实现智能对话功能。
本次学习的核心在于掌握Spring AI 对接大模型、Spring Boot 整合多组件、智能对话业务逻辑实现三大模块,以下是各模块的核心知识点与实现细节总结:
3.1 环境搭建与核心配置
项目搭建的核心是完成 Maven 依赖配置与 application.yml 全局配置,这是所有组件正常工作的基础,也是入门的关键。
3.1.1 Maven 依赖核心配置
需重点引入Spring AI OpenAI Starter(兼容 DeepSeek API)、Spring Boot Web、MyBatis、H2 数据库、Thymeleaf等核心依赖,同时需配置 Spring Milestones 仓库获取 Spring AI 的里程碑版本,核心依赖配置要点:
- 定义 Spring AI 版本常量:
;1.0.0-M4 - 引入
spring-ai-openai-spring-boot-starter,实现大模型对接; - 配置 H2 数据库依赖并设置
scope: runtime,仅运行时生效; - 引入 MyBatis Spring Boot Starter,实现与 Spring Boot 的无缝整合;
- 配置 Spring Milestones 仓库,解决 Spring AI 里程碑版本的依赖下载问题。
3.1.2 application.yml 全局配置
该文件是项目的核心配置入口,需完成服务器、数据库、Spring AI、Thymeleaf、MyBatis五大模块的配置,核心要点:
- 服务器配置:设置端口、编码为 UTF-8,保证请求响应正常;
- H2 数据库配置:配置驱动、连接 URL、用户名密码,启用 H2 控制台方便调试,设置
DB_CLOSE_DELAY=-1保证内存数据库数据不丢失; - Spring AI 配置:配置 DeepSeek API 的
api-key、base-url(https://api.deepseek.com),指定模型为deepseek-chat,设置温度参数temperature:0.7(控制回答的随机性); - Thymeleaf 配置:关闭缓存、指定模板前缀后缀,保证开发阶段页面实时刷新;
- MyBatis 配置:指定映射文件位置、实体类包名,开启下划线转驼峰,方便实体类与数据库表字段映射;
- 自定义配置:设置智能客服的系统提示词、最大历史记录数、超时时间,规范大模型的回答逻辑。
3.2 数据库设计与初始化
项目采用 H2 内存数据库,仅设计一张chat_record聊天记录表,用于存储用户与智能客服的对话记录,核心字段包括:自增主键 id、用户消息 user_message、机器人回复 bot_response、创建时间 created_time、会话 id session_id(用于区分不同用户的对话)。
通过schema.sql完成表结构初始化,data.sql完成初始化数据插入,同时在 application.yml 中设置sql.init.mode: always,保证项目启动时自动执行初始化脚本,无需手动操作数据库。
3.3 Spring AI 对接 DeepSeek 大模型
这是本次学习的核心重点,Spring AI 为大模型调用提供了高度封装的 API,无需关注底层请求细节,仅需简单配置即可实现对接,核心逻辑:
- 引入 Spring AI OpenAI Starter 依赖后,框架会自动根据 application.yml 中的配置创建
ChatClient实例; - 在服务层注入
ChatClient,通过chatClient.prompt()构建请求(包括系统提示词、用户消息、历史对话); - 调用
chatClient.call()方法发送请求至 DeepSeek API,获取大模型的回复结果; - 对返回结果进行封装,返回至前端并同步保存至数据库。
同时,项目通过上下文记忆功能提升对话体验,核心是通过 session_id 关联同一用户的历史对话,将历史对话信息拼接至每次的请求中,让大模型能基于上下文进行回答。
3.4 核心业务层与控制层实现
3.4.1 服务层(ChatbotService)
服务层是业务逻辑的核心,负责整合大模型调用与数据库操作,核心职责:
- 接收控制层传递的用户请求参数(用户消息、session_id);
- 构建 Spring AI 的对话请求,调用 DeepSeek API 获取智能回复;
- 将用户消息与机器人回复封装为 ChatRecord 实体,调用 mapper 保存至数据库;
- 封装对话结果,返回至控制层。
服务层通过注入ChatClient和ChatRecordMapper,实现 AI 能力与数据持久化的结合,是连接控制层与数据层、AI 接口的桥梁。
3.4.2 控制层(ChatbotController)
控制层负责接收前端请求与返回响应,核心职责:
- 通过
@RestController标记为 REST 接口控制器,处理 AJAX 请求; - 定义对话接口(如
/chat),接收前端传递的userMessage和sessionId参数; - 调用服务层的聊天方法,获取结果;
- 将结果封装为 ChatResponse DTO 对象,以 JSON 格式返回至前端。
同时,PageController 负责页面跳转,通过@Controller标记,映射根路径至 chat.html 前端页面,实现前端界面的访问。
3.5 前端交互实现
项目采用服务端渲染方式,基于 Thymeleaf + Bootstrap 5.3 + JavaScript 实现智能对话界面,核心功能:
- 提供输入框让用户输入问题,点击发送或按回车触发请求;
- 通过 JavaScript 的 AJAX 技术异步调用后端 /chat 接口,避免页面刷新;
- 将用户消息与机器人回复实时渲染至页面,实现对话气泡展示;
- 展示对话历史记录,提升用户体验。
前端开发无需关注复杂的前端框架,仅需基础的 HTML/CSS/JS 即可实现,契合后端开发者的开发习惯,快速完成智能应用的前端交互。
通过本次完整的项目实战学习,从 0 到 1 掌握了 Spring AI 智能应用的开发流程,不仅巩固了后端基础技术,更实现了 AI 开发的入门,核心收获如下:
4.1 技术能力层面
- 掌握了Spring AI的核心使用方法,理解其对接大模型的底层逻辑,能基于 Spring AI 快速对接 DeepSeek、OpenAI 等兼容 OpenAI API 的大模型;
- 巩固了Spring Boot 3.2的核心知识点,包括自动配置、依赖管理、配置文件、分层架构设计等,提升了 Spring Boot 项目的搭建与开发能力;
- 熟练掌握了MyBatis 与 Spring Boot 的整合,包括映射器接口、映射文件、实体类与数据库表的映射,以及 H2 内存数据库的使用;
- 理解了智能客服系统的核心业务逻辑,包括对话请求处理、上下文记忆、对话历史记录存储,为后续开发垂直领域 AI 应用提供了参考;
- 掌握了服务端渲染的前端开发方法,能通过 Thymeleaf + Bootstrap 快速实现简单的前端交互界面。
4.2 开发思维层面
- 加深了分层架构的设计思想,理解了控制层、服务层、数据层的职责划分,学会了通过 DTO 封装前后端交互数据,保证代码的规范性与可维护性;
- 掌握了第三方 API 对接的通用方法,理解了 “配置化 + 封装化” 的对接思路,降低了对接第三方服务的开发成本;
- 培养了轻量级项目开发的思维,学会了选择合适的技术组件(如 H2 数据库)快速实现项目原型,提升开发效率;
- 理解了AI 与后端开发的融合方式,打破了 “Java 后端与 AI 开发分离” 的认知,掌握了后端开发者入门 AI 应用开发的核心路径。
在学习与项目运行过程中,遇到了几个典型问题,通过查阅文档、调试代码最终解决,现将问题与解决方法总结,为同行避坑:
- Spring AI 依赖下载失败:原因是 Spring AI 1.0.0-M4 为里程碑版本,未在中央仓库发布,解决方法是在 pom.xml 中配置 Spring Milestones 仓库;
- DeepSeek API 调用失败:原因是 api-key 配置错误或无调用额度,解决方法是检查 application.yml 中的 api-key 是否正确,确保 DeepSeek 平台账号有可用额度;
- H2 控制台无法访问:原因是配置的 path 与访问路径不一致,解决方法是保证 application.yml 中
h2.console.path配置与访问路径一致,且项目启动正常; - 对话历史记录无法保存:原因是 MyBatis 映射文件的 SQL 语句错误或实体类与表字段映射不一致,解决方法是开启 MyBatis 的 SQL 日志,调试 SQL 语句,检查实体类字段与数据库表字段的对应关系。
本次学习的智能客服系统是 Spring AI 的基础实战案例,后续将基于本次所学,从技术深化和场景拓展两个方向继续学习,主要包括:
- 技术深化:深入学习 Spring AI 的高级特性,如大模型返回结果解析、函数调用、向量数据库集成、多模型切换等,提升 AI 应用的开发能力;
- 场景拓展:将本次所学的技术框架迁移至教育等垂直领域,开发智能学习助手应用,实现技术与业务的结合;
- 技术栈升级:将前端改为前后端分离架构(Vue/React + Spring Boot),提升前端交互体验;将 H2 数据库替换为 MySQL/PostgreSQL,适配生产环境;
- 功能优化:为智能客服系统增加意图识别、关键词提取、多轮对话优化等功能,提升系统的智能性与实用性;
- 其他大模型对接:基于 Spring AI 的统一接口,尝试对接文心一言、讯飞星火、通义千问等大模型,实现多模型兼容的智能应用。
本次通过学习 Spring Boot + Spring AI + DeepSeek 智能客服系统的实战教程,完成了 Spring AI 开发的入门,不仅掌握了具体的技术知识点和代码实现方法,更理解了 AI 与 Java 后端开发融合的核心逻辑。该项目作为轻量级 AI 应用的实战案例,代码结构清晰、技术栈主流,非常适合后端开发者入门 AI 开发。
学习的核心不仅是掌握代码的编写,更要理解技术的底层逻辑和架构的设计思想,本次所学的分层架构、大模型对接方法、配置化开发思路,都能迁移至其他 AI 应用开发中。后续将继续深耕 Spring AI 与后端开发的融合,不断尝试垂直领域的 AI 应用开发,让技术落地于实际业务。
附参考教程地址:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/242031.html