5.8 KiB
5.8 KiB
Spring AI Demo
🤖 一个简洁优雅的 Spring AI 对话演示项目,基于 Spring Boot 3.2.0 与 Spring AI 1.0.0-M3 构建,支持流式响应与 Markdown 渲染。
✨ 特性
- 🌐 智能对话 - 基于 OpenAI/Ollama 的自然语言交互
- 📡 流式响应 - 实时逐字输出,体验流畅
- 📝 Markdown 支持 - 完整渲染代码块、表格、列表等格式
- 👨💻 代码高亮 - Highlight.js 自动语言检测与语法着色
- 🖼️ 向量数据库 - Milvus 集成(预留 RAG 扩展能力)
- 📔 PDF 解析 - Apache PDFBox 文档处理支持
- 🎨 精美界面 - 深色主题响应式设计
🚀 快速开始
环境要求
- JDK 17+
- Maven 3.8+
- Ollama 本地服务
1. 安装 Ollama
# macOS/Linux
curl -fsSL https://ollama.ai/install.sh | sh
# 拉取模型
ollama pull gpt-oss:120b-cloud
# 启动服务 (默认端口 11434)
ollama serve
2. 启动项目
mvn spring-boot:run
3. 访问应用
- Web 界面: http://localhost:8080
- 健康检查: http://localhost:8080/api/chat/test
🔧 技术栈
后端
| 组件 | 技术 | 版本 |
|---|---|---|
| 基础框架 | Spring Boot | 3.2.0 |
| AI 框架 | Spring AI | 1.0.0-M3 |
| AI 模型 | OpenAI/Ollama | - |
| 响应式编程 | Spring WebFlux | 3.2.0 |
| 向量数据库 | Milvus Store | 1.0.0-M3 |
| 文档处理 | Apache PDFBox | 2.0.29 |
前端
| 技术 | 用途 |
|---|---|
| HTML5 + CSS3 | 页面结构与样式 |
| Marked.js | Markdown 解析渲染 |
| Highlight.js | 代码语法高亮 |
📁 项目结构
springAiDemo/
├── src/
│ └── main/
│ ├── java/com/demo/
│ │ ├── MyApplication.java # Spring Boot 启动入口
│ │ └── controller/
│ │ └── ChatController.java # AI 聊天 REST API
│ └── resources/
│ ├── application.yaml # 应用配置
│ └── static/ # 前端静态资源
│ ├── index.html # 主页面
│ ├── css/style.css # 深色主题样式
│ └── js/app.js # 流式响应逻辑
├── pom.xml
└── README.md
💬 API 文档
端点列表
| 方法 | 端点 | 描述 | 参数 |
|---|---|---|---|
| GET | /api/chat/test |
健康检查 | - |
| GET | /api/chat/ai |
同步 AI 对话 | msg |
| GET | /api/chat/ai/stream |
流式 AI 对话 | msg |
请求示例
同步对话:
curl "http://localhost:8080/api/chat/ai?msg=什么是Spring AI"
流式对话:
curl "http://localhost:8080/api/chat/ai/stream?msg=讲一个故事"
响应格式
- 同步:
text/plain- 完整回复文本 - 流式:
text/html;charset=UTF-8- Server-Sent Events 分块传输
🎨 界面预览
🧩 现代化深色主题
- 渐变标题与毛玻璃效果
- 流畅的消息气泡动画
- Markdown 代码块高亮
- 流式响应动画指示器
📝 Markdown 支持
- 代码块与行内代码
- 加粗、斜体、删除线
- 有序/无序列表
- 引用块、表格、链接
🛠️ 配置说明
模型配置 (application.yaml)
spring:
ai:
openai:
base-url: http://localhost:11434 # Ollama 服务地址
chat:
options:
model: gpt-oss:120b-cloud # 当前模型
temperature: 0.7 # 生成温度
支持模型(需在 Ollama 中预先拉取):
gpt-oss:120b-cloud- 默认模型kimi-k2.5:cloud- Kimi 模型gemma4:e2b- Google Gemma 模型
🎬 架构图
┌─────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Client │────▶│ ChatController │────▶│ ChatClient │
│ (HTTP) │ │ (Spring MVC) │ │ (Spring AI) │
└─────────────┘ └──────────────────┘ └────────┬────────┘
│
▼
┌─────────────────┐
│ Ollama/OpenAI │
│ (LLM Provider) │
└─────────────────┘
📄 预留功能
以下依赖已集成,可按需启用:
- 🔍 Milvus 向量数据库 - RAG 语义搜索
- 📔 PDF 文档解析 - 文档上传与处理
- 🗨️ Embedding 服务 - 文本向量化
👷 已知限制
- 暂无对话历史持久化
- 暂未实现请求频率限制
- JUnit 版本较旧(3.8.1),建议升级至 JUnit 5
📖 待办事项
- 添加全局异常处理
- 实现 RAG 文档问答
- 对话历史存储
- 动态模型切换 API
- Docker 部署支持
- 单元测试完善
📤 更新日志
v1.0.0 (2026-04-17)
- 🎉 初始版本发布
- 支持流式 AI 对话
- Markdown 渲染与代码高亮
- 深色主题 Web 界面
📗 License
MIT © 2026 Spring AI Demo
🚀 Made with Spring AI