跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaAIjava

SpringAI 大模型应用开发:新手入门指南

SpringAI 框架在大模型应用开发中的入门知识。文章对比了 LangChain 与 SpringAI 的适用场景,指出 SpringAI 更适合 Spring 生态且需 JDK17 及以上环境。内容涵盖大模型 API 接入方式、pom.xml 与 application.yaml 配置、ChatClient 构建、同步与流式调用方法、System 设定、日志功能开启以及会话记忆功能的实现原理与配置步骤。

城市逃兵发布于 2026/4/5更新于 2026/7/2352 浏览
SpringAI 大模型应用开发:新手入门指南

SpringAI 概述

目前大模型应用开发最常见的框架是 LangChain,但它是基于 Python 语言。虽然有 LangChain4j,但对于大量使用 Spring 生态的应用来说,适配性稍差。

Spring 公司推出的 SpringAI 框架充分利用了 Spring 框架中 AOP、IOC 的能力,可以与现有的 Java 项目无缝融合,非常方便。

SpringAI 要求的 JDK 版本至少是 JDK17,SpringBoot 也必须是 3.x 的版本。如果是比较老的项目,也可以使用 LangChain4j,它要求的最低 JDK 版本为 JDK8。

大模型的使用

首先要明确一点,大模型应用开发并不是在浏览器中跟 AI 聊天,而是通过访问模型对外暴露的 API 接口,实现与大模型的交互。

企业首先需要有一个可访问的大模型,通常有三种选择:

  1. 使用开放的大模型 API;
  2. 在云平台部署稀有大模型;
  3. 在本地服务器部署稀有大模型。

本次演示使用的是开放的大模型 API,只需要选择自己合适的大模型,创建出自己的 API Key 就能免费使用很长时间了。

SpringAI 新手入门

配置 pom.xml 文件

首先,在 SpringBoot 项目中引入 SpringAI 起步依赖。接着,在项目 pom.xml 中添加 SpringAI 的版本信息。然后,添加 SpringAI 的依赖管理项。除了以上 SpringAI 的依赖之外,可根据后续项目开发需求引入其他依赖。

配置 application.yaml 文件

如果使用开放大模型的 API,需要在配置文件中添加相关内容。

配置 ChatClient

说明:ChatClient.builder 会得到一个 ChatClient.Builder 工厂对象,利用它可以自由选择模型、添加各种自定义配置。

同步调用

定义一个 Controller,在其中接收用户发送的提示词,然后把提示词发送给大模型,交给大模型处理,拿到结果后返回。

注意,基于 call() 方法的调用属于同步调用,需要所有响应结果全部返回后才能返回给前端。

启动项目,在浏览器中访问:http://localhost:8080/ai/chat?prompt=你好

流式调用

同步调用需要等待很长时间页面才能看到结果,用户体验不好。为了解决这个问题,我们可以改进调用方式为流式调用。

在 SpringAI 中使用了 WebFlux 技术实现流式调用。

重启测试,再次访问。

System 设定

当我们询问 AI 你是谁的时候,它回答自己是 DeepSeek-R1,这是大模型底层的设定。如果我们希望 AI 按照新的设定工作,就需要给它设置 System 背景信息。

在 SpringAI 中,设置 System 信息非常方便,不需要在每次发送时封装到 Message,而是创建 ChatClient 时指定即可。

日志功能

默认情况下,应用于 AI 的交互时不记录日志的,我们无法得知 SpringAI 组织的提示词到底长什么样,有没有问题。这样不方便我们调试。

SpringAI 基于 AOP 机制实现与大模型对话过程的增强、拦截、修改等功能。所有的增强通知都需要实现 Advisor 接口。

Spring 提供了一些 Advisor 的默认实现,来实现一些基本的增强功能:

  1. SimpleLoggerAdvisor:日志记录的 Advisor。
  2. MessageChatMemoryAdvisor:会话记忆的 Advisor。
  3. QuestionAnswerAdvisor:实现 RAG 的 Advisor。

只需要在配置 ChatClient 添加日志记录 Advisor。接下来,修改日志级别。重启项目,再次和 AI 聊天就可以在控制台上看到 AI 的日志输出了。

会话记忆功能

现在,我们的 AI 聊天机器人是没有记忆功能的,上一次聊天的内容,下一次就忘掉了。让 AI 有会话记忆的方式就是把每一次历史对话内容拼接到 Prompt 中,一起发送过去。SpringAI 自带了会话记忆功能,可以帮我们把历史会话保存下来,下一次请求 AI 时会自动拼接,非常方便。

ChatMemory

会话记忆功能同样是基于 AOP 实现,Spring 提供了一个 MessageChatMemoryAdvisor 的通知,我们可以像之前添加日志通知一样添加到 ChatClient 即可。

不过,要注意的是,MessageChatMemoryAdvisor 需要指定一个 ChatMemory 实例,也就是会话历史保存的方式。

ChatMemory 接口声明如下: 可以看到,所有的会话记忆都是与 conversationid 有关联的,也就是会话 Id,将来不同会话 id 的记忆自然是分开管理的。

目前,在 SpringAI 中有两个 ChatMemory 的实现:

  1. InMemoryChatMemory:会话历史保存在内存中
  2. CassandraChatMemory:会话保存在 Cassandra 数据库中(需要引入额外依赖,并且绑定了向量数据库,不够灵活)
添加会话记忆功能

首先注册 chatMemory 对象。然后添加到 ChatClient 中。最后在和 AI 聊天的时候,为了区分每一个用户对应着不同的会话记录,因此需要传入用户 ID 进行区分。

目录

  1. SpringAI 概述
  2. 大模型的使用
  3. SpringAI 新手入门
  4. 配置 pom.xml 文件
  5. 配置 application.yaml 文件
  6. 配置 ChatClient
  7. 同步调用
  8. 流式调用
  9. System 设定
  10. 日志功能
  11. 会话记忆功能
  12. ChatMemory
  13. 添加会话记忆功能
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 自然语言处理在客户服务中的实战应用
  • Transformer 模型部署实战:FastAPI、Docker 与 ONNX
  • MCPHost:命令行下通过 MCP 协议与大模型及外部工具交互的工具
  • Flutter 三方库 arcane_helper_utils 鸿蒙化适配指南
  • Java 随机数实战:从范围字符串解析到动态区间生成
  • FPGA 开发入门:基于 Quartus 实现 LED 控制
  • Edge 边栏 Copilot 图标消失修复方案
  • QClaw 上手指南:本地 AI 代理的桌面化实践
  • 积木报表快速入门:从零开始设计数据可视化报表
  • Video2Robot:从视频到机器人动作的端到端生成管道
  • AI 绘画提示词生成器的效率优化实践:从原理到工程实现
  • AI 鸿蒙 App 开发:从页面到能力系统的架构变革
  • 斯坦福 2025 AI Index Report 核心洞察:从技术突破到系统扩散
  • 基于FPGA的CARRY4 抽头延迟链TDC延时仿真
  • Spring Bean 作用域、生命周期与自动装配源码解析
  • 昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践
  • 程序员为何要尽早掌握基础知识与设计模式
  • WebLaTeX:基于 VSCode 的云端 LaTeX 写作平台
  • AIGC 个性化与定制化内容生成:技术原理与应用场景
  • AI 网络技术编程测试:从理论到实践

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online