1.0 SpringAI 概述
目前大模型应用开发最常见的框架是 LangChain,但它是基于 Python 语言。虽然存在 LangChain4j,但对于大量使用 Spring 生态的应用来说,适配性稍差。
SpringAI 由 Spring 公司推出,充分利用了 Spring 框架中 AOP、IOC 的能力,可以与现有的 Java 项目无缝融合。
SpringAI 要求 JDK 版本至少为 JDK17,SpringBoot 必须是 3.x 版本。老项目可使用 LangChain4j(最低 JDK8)。
1.1 大模型的使用
大模型应用开发是通过访问模型对外暴露的 API 接口实现交互,而非在浏览器聊天。
企业通常有三种选择:
- 使用开放的大模型 API(需创建 API Key);
- 在云平台部署稀有大模型;
- 在本地服务器部署稀有大模型。
2.0 SpringAI 新手入门
2.1 配置 pom.xml 文件
在 SpringBoot 项目中引入 SpringAI 起步依赖,并在 pom.xml 中添加 SpringAI 的版本信息及依赖管理项。
2.2 配置 application.yaml 文件
若使用开放大模型的 API,需在配置文件中添加相应的 API Key 等信息。
2.3 配置 ChatClient
通过 ChatClient.builder() 获取工厂对象,利用它可以自由选择模型、添加各种自定义配置。
2.4 同步调用
定义 Controller 接收用户提示词并发送给大模型。基于 call() 方法的调用属于同步调用,需等待所有响应结果返回。
2.5 流式调用
同步调用可能导致用户体验不佳。SpringAI 使用 WebFlux 技术实现流式调用,可改善体验。
2.6 System 设定
大模型底层有默认设定。如需 AI 按新设定工作,可在创建 ChatClient 时指定 System 背景信息,无需每次封装到 Message。
2.7 日志功能
默认不记录 AI 交互日志。SpringAI 基于 AOP 机制实现增强、拦截等功能,需实现 Advisor 接口。
Spring 提供默认 Advisor 实现:
- SimpleLoggerAdvisor:日志记录;
- MessageChatMemoryAdvisor:会话记忆;
- QuestionAnswerAdvisor:实现 RAG。
在配置 ChatClient 时添加日志记录 Advisor,并修改日志级别即可在控制台查看输出。
2.8 会话记忆功能
AI 聊天机器人默认无记忆功能。SpringAI 自带会话记忆功能,自动保存历史会话并在下次请求时拼接。
2.8.1 ChatMemory
会话记忆基于 AOP 实现,需指定 ChatMemory 实例。所有会话记忆均与 conversationId 关联,不同会话 Id 的记忆分开管理。
SpringAI 提供两个实现:
- InMemoryChatMemory:保存在内存中;
- CassandraChatMemory:保存在 Cassandra 数据库中(需额外依赖及向量数据库绑定)。
2.8.2 添加会话记忆功能
注册 chatMemory 对象,添加到 ChatClient 中。在与 AI 聊天时,传入用户 ID 以区分不同的会话记录。


