Go to file
kennethcheng 3208efe280 v0.0.1
spring ai的基本使用
2026-04-17 14:28:21 +08:00
src/main v0.0.1 2026-04-17 14:28:21 +08:00
.gitignore v0.0.1 2026-04-17 14:28:21 +08:00
pom.xml v0.0.1 2026-04-17 14:28:21 +08:00
README.md v0.0.1 2026-04-17 14:28:21 +08:00

Spring AI Demo

🤖 一个简洁优雅的 Spring AI 对话演示项目,基于 Spring Boot 3.2.0 与 Spring AI 1.0.0-M3 构建,支持流式响应与 Markdown 渲染。

Spring Boot Spring AI JDK License

特性

  • 🌐 智能对话 - 基于 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. 访问应用

🔧 技术栈

后端

组件 技术 版本
基础框架 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 服务 - 文本向量化

👷 已知限制

  1. 暂无对话历史持久化
  2. 暂未实现请求频率限制
  3. 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