一个基于 Spring Boot 3 和 Spring AI 的多模块示例工程,覆盖了:
- OpenAI 兼容接口调用
- 阿里云 DashScope 调用
ChatClient基础用法- 流式输出与 SSE 示例
- 多模态图片理解
- 带会话列表与历史记录的聊天机器人页面
spring-ai-project
├─ spring-ai-demo
├─ spring-alibaba-demo
├─ spring-chat-robot
└─ pom.xml
演示 Spring AI 基础能力,主要使用 OpenAI 兼容接口方式接入模型。
主要内容:
OpenAiChatModel基础调用ChatClient同步调用ChatClient流式调用- SSE 示例
核心接口:
GET /qwen/chatGET /qwen/chatWithPromptGET /qwen/chatWithRoleGET /qwen/streamGET /chat/callGET /chat/entityGET /chat/streamGET /sse/dataGET /sse/retryGET /sse/eventGET /sse/endGET /sse/stream
演示 DashScope 直连方式,以及 ChatClient、ChatModel、多模态能力。
主要内容:
ChatModel基础调用ChatClient基础调用- 关键字约束回复
- 图片理解示例
核心接口:
GET /ali/chatGET /chat/callGET /chat/entityGET /chat/streamGET /chat/wordGET /multi/image
一个带前端页面的聊天机器人模块,风格参考 GitHub,支持:
- 新建会话
- 会话列表
- 历史记录查询
- 删除会话
- 流式回复
- 基于
ChatMemory的上下文记忆
前端页面:
GET /
核心接口:
GET /chat/streamGET /chat/getChatIdsGET /chat/getChatHistoryGET /chat/deleteChat
- Java 17
- Spring Boot 3.5.3
- Maven
- Spring AI
- Spring Web
- Reactor
- Lombok
启动前请确认本地具备:
- JDK 17
- Maven 3.9+
- 可用的模型 API Key
仓库中各模块默认提供的是模板配置文件:
- spring-ai-demo/src/main/resources/application-template.yml
- spring-alibaba-demo/src/main/resources/application-template.yml
- spring-chat-robot/src/main/resources/application-template.yml
使用时建议:
- 复制
application-template.yml - 重命名为
application.yml - 填入你自己的
api-key、base-url和模型名
适用于 spring-ai-demo、spring-chat-robot:
spring:
ai:
openai:
api-key: sk-xxxx
base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
chat:
options:
model: qwen3-max
temperature: 0.7适用于 spring-alibaba-demo:
spring:
ai:
dashscope:
api-key: sk-xxxx
chat:
options:
model: qwen-vl-max-latest
multi-model: true
temperature: 0.7mvn clean installmvn -pl spring-ai-demo spring-boot:run
mvn -pl spring-alibaba-demo spring-boot:run
mvn -pl spring-chat-robot spring-boot:run如果你使用 IDEA,也可以直接运行对应模块中的启动类:
- SpringAiDemoApplication.java
- SpringAlibabaDemoApplication.java
- SpringChatRobotApplication.java
默认启动后访问:
http://localhost:8080
如果你同时启动多个模块,请为不同模块配置不同端口。
启动 spring-chat-robot 后,浏览器访问:
http://localhost:8080/
页面提供:
- 左侧历史会话列表
- 主聊天窗口
- 流式响应展示
- 会话删除
接口交互方式:
- 首次发送消息时自动创建
chatId - 前端通过
/chat/stream获取流式回复 - 通过
/chat/getChatIds获取会话列表 - 通过
/chat/getChatHistory获取历史记录 - 通过
/chat/deleteChat删除会话
相关文件:
- spring-chat-robot/src/main/resources/static/index.html
- spring-chat-robot/src/main/java/com/example/springchatrobot/controller/ChatController.java
- spring-chat-robot/src/main/java/com/example/springchatrobot/config/CommonConfiguration.java
这类 Spring AI 项目在调试时,优先关注两件事:
- 配置是否和依赖对应
- 例如用了
spring-ai-openai-spring-boot-starter,就要检查spring.ai.openai.*
- 例如用了
- Spring AI 版本是否一致
- 不要混用不同主线或 milestone/正式版组件,否则容易出现
NoSuchMethodError、AbstractMethodError
- 不要混用不同主线或 milestone/正式版组件,否则容易出现
排查顺序建议:
- 先看
pom.xml - 再看
application.yml - 再看
CommonConfiguration - 最后再看业务控制器
- 当前仓库里存在一个临时文件
inspect.java,它不是业务代码的一部分。 - 模板中的 API Key 仅作占位示例,提交前应改为本地私有配置或环境变量方式管理。