# spring-ai-study
**Repository Path**: kun_gege/spring-ai-study
## Basic Information
- **Project Name**: spring-ai-study
- **Description**: 🚀 基于 Spring AI + Spring Boot 3 的多模型 AI 对话框架,支持 DeepSeek、ChatGPT、通义千问等大语言模型动态切换。采用策略模式设计,数据库配置管理,易于扩展。适用于智能客服、RAG 知识库、内容创作等场景。
关键词:Spring AI, DeepSeek, ChatGPT, LLM, 大语言模型, AI对话, 策略模式, RAG
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2026-05-09
- **Last Updated**: 2026-06-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: SpringBoot, SpringAI
## README
# Spring AI 多模型管理框架 | RAG · Agent · 智能记忆 · 动态切换
> 🚀 基于 Spring AI + Spring Boot 3 的企业级 AI 模型管理框架,支持 DeepSeek、通义千问(DashScope)、智谱AI、Gitee AI 等多种大语言模型动态切换与热插拔,内置 RAG 知识库问答、ReAct Agent 智能体、Workflow 工作流和三层融合记忆系统
简体中文 | [English](./README.en.md)
## 📑 目录
- [项目简介](#-项目简介)
- [技术栈](#️-技术栈)
- [模块结构](#-模块结构)
- [核心功能](#-核心功能)
- [快速开始](#-快速开始)
- [架构设计](#️-架构设计)
- [项目特色](#-项目特色)
- [常见问题](#-常见问题)
- [贡献指南](#-贡献指南)
---
**Spring AI** · **DeepSeek** · **通义千问** · **DashScope** · **智谱AI** · **大语言模型LLM** · **策略模式** · **动态配置** · **RAG** · **向量数据库** · **ReAct Agent**
[](https://spring.io/projects/spring-boot)
[](https://spring.io/projects/spring-ai)
[](https://github.com/alibaba/spring-ai-alibaba)
[](https://www.oracle.com/java/)
[](https://baomidou.com/)
[](LICENSE)
## 📖 项目简介
本项目是一个**企业级 AI 模型管理框架**,采用**策略模式 (Strategy Pattern)**设计,通过数据库配置动态管理多种 AI 模型(DeepSeek、阿里云通义千问 DashScope、智谱AI等),支持模型的**热插拔**和**无缝扩展**。项目基于 **Spring Boot 3.5.14** + **Spring AI 1.1.6** + **Spring AI Alibaba 1.1.2.0** 框架构建,结合 **MyBatis-Plus 3.5.15** 实现数据持久化,为开发者提供统一的 AI 能力接入方案。
**核心能力**:
- 💬 **多模型对话** - 支持 DeepSeek、通义千问、智谱AI等多种模型动态切换
- 🧠 **RAG 知识库** - 检索增强生成,支持文档向量化存储和语义搜索
- 🤖 **ReAct Agent** - 智能体框架,支持工具调用和多步推理
- 🔢 **向量 Embedding** - 文本向量化,支持语义相似度计算
- 🔄 **重排 Rerank** - 搜索结果重排序,提升检索质量
- 🎯 **Workflow 工作流** - 支持复杂任务编排和多Agent协作
- 💾 **智能记忆系统** - ✨ v1.2 三层融合记忆架构(短期滑动窗口 + LLM摘要 + 长期向量存储),支持智能合并
- 💻 **命令行问答** - 内置交互式命令行问答工具
**适用场景**: 智能客服系统、知识库问答 RAG、内容创作助手、语义搜索引擎、多语言翻译、企业 AI 中台、代码辅助、智能写作、智能 Agent 等。
---
## 🛠️ 技术栈
### 核心框架
- **Spring Boot 3.5.14** - 现代化 Java 应用框架
- **Spring AI 1.1.6** - Spring 官方 AI 集成框架
- **Spring AI Alibaba 1.1.2.0** - 阿里巴巴 Spring AI 扩展(通义千问支持)
- **MyBatis-Plus 3.5.15** - 增强版 ORM 框架
### 数据存储
- **MySQL 8.x** - 关系型数据库
- **PostgreSQL 12+** - 支持 pgvector 向量扩展
- **HikariCP** - 高性能连接池
### 开发工具
- **Lombok** - 简化 Java 代码
- **Hutool 5.8.40** - Java 工具类库
- **Maven** - 项目构建工具
- **JDK 17+** - Java 运行环境
### AI 模型支持
- **DeepSeek** - 深度求索大语言模型(已内置,支持 Chat)
- **阿里云通义千问** - DashScope Qwen 系列(已内置,支持 Chat、Embedding、Rerank)
- **智谱AI** - 智谱清言大语言模型(已内置,支持 Chat)
- **Gitee AI** - Gitee AI 平台(已内置,支持 Rerank)
- **其他兼容 OpenAI 格式的模型** - 可扩展支持
## 📦 模块结构
```
spring-ai-study/
├── spring-ai-study-main/ # 主应用模块(REST API + 前端页面)
│ ├── controller/ # AI对话、RAG、Agent、Workflow控制器
│ ├── config/ # CORS等配置类
│ └── resources/static/ # stream-chat.html, workflow-demo.html
├── spring-ai-study-model/ # 核心模型模块(策略模式实现)
│ ├── model/ # AiModel接口及各厂商实现
│ │ ├── deepseek/ # DeepSeek策略
│ │ ├── dashscope/ # 通义千问策略
│ │ ├── zhipu/ # 智谱AI策略
│ │ └── gitee/ # Gitee AI策略(含Rerank)
│ ├── agent/ # ReAct Agent智能体实现
│ ├── manus/ # Manus工作流编排
│ ├── advisor/ # SelfRefine评估建议器
│ ├── entity/ # AiModelConfig实体
│ ├── mapper/ # MyBatis Mapper
│ └── service/ # 模型配置服务
├── spring-ai-study-rag/ # RAG知识库模块
│ ├── RagService.java # RAG核心服务(支持反思优化)
│ ├── tools/RagTool.java # RAG检索工具
│ └── resources/prompts/ # 提示词模板
├── spring-ai-memory/ # 🧠 智能记忆模块(v1.2)
│ └── FusionChatMemory.java # 三层融合记忆实现
├── spring-ai-study-common/ # 通用模块
│ ├── exception/ # 业务异常类
│ ├── mybatis/ # MyBatis配置和TypeHandler
│ └── util/ResponseResult.java # 统一响应结果
├── ask-question/ # 命令行问答模块
│ └── CommandLineQuestionHandler # 交互式问答工具
└── db/ # 数据库脚本
├── mysql.sql # MySQL建表脚本
└── postgresql.sql # PostgreSQL+pgvector脚本
```
## 🎯 核心功能
### 1️⃣ 多模型统一接入
通过策略模式 `AiModel` 接口,支持扩展多种 AI 模型:
- 💬 **Chat 对话模型** - 支持智能对话交互、多轮会话、流式输出(DeepSeek、通义千问、智谱AI)
- 🔢 **Embedding 向量模型** - 支持文本向量化、语义搜索、RAG 应用(通义千问)
- 🎨 **Image 图像模型** - 支持文生图、图像编辑(可扩展)
- 🔄 **Rerank 重排模型** - 支持搜索结果重排序,提升检索质量(通义千问)
### 2️⃣ 动态配置管理
- ✅ AI 模型配置存储于数据库 `ai_model_config` 表
- ✅ 支持运行时动态调整模型参数(API Key、Base URL、超时时间等)
- ✅ 模型启用/禁用控制,支持灰度发布
- ✅ 配置热更新,无需重启服务
- ✅ 支持按类别(chat/embedding/image/rerank)查询可用模型
### 3️⃣ 统一的 AiModelClientStrategy 抽象
`AiModelClientStrategy` 提供统一的客户端构建入口,根据 modelId 自动从数据库查询配置并选择对应的策略实现,屏蔽不同模型提供商的 API 差异。支持以下方法:
- `chatClientBuilder(String modelId)` - 构建 ChatClient.Builder
- `getChatClient(String modelId)` - 获取 ChatClient 实例
- `getChatModel(String modelId)` - 获取 ChatModel 实例
- `embeddingModel(String modelId)` - 获取 EmbeddingModel 实例
- `rerankModel(String modelId)` - 获取 RerankModel 实例
- `getAvailableModelTypesByCategory(String category)` - 获取指定类别的所有可用模型类型
### 4️⃣ RAG 知识库问答(高级版)
`spring-ai-study-rag` 模块提供完整的 RAG 能力,支持反思优化机制:
- 📄 **文档解析** - 基于 Apache Tika 支持多种文档格式(PDF、Word、Excel、TXT等)
- 🔢 **向量化** - 使用 Embedding 模型将文档转换为向量
- 💾 **向量存储** - 支持 PostgreSQL pgvector 等向量数据库
- 🔍 **语义检索** - 基于向量相似度的智能搜索
- 🔄 **结果重排** - 使用 Rerank 模型对检索结果进行重排序
- 🧠 **质量评估** - 自动评估检索结果质量,触发反思优化
- 📝 **反思规划** - 根据评估结果重新规划检索策略,提升回答质量
**RAG 工作流程**:
1. 用户问题扩展为多个子问题
2. 向量化检索得到初步结果
3. 去重和重排序优化结果
4. 评估信息质量
5. 如质量不足,记录反思意见并重新规划检索
### 5️⃣ ReAct Agent 智能体(流式支持)
`spring-ai-study-model` 模块内置 ReAct Agent 框架,支持流式输出:
- 🤔 **思考 (Reasoning)** - 分析当前情况,决定下一步行动
- 🛠️ **执行 (Act)** - 调用工具执行具体操作
- 👀 **观察 (Observe)** - 观察工具执行结果,继续下一轮循环
- 🔧 **工具调用** - 支持自定义工具回调,扩展 Agent 能力
- 📝 **多步推理** - 支持设置最大步骤数,防止无限循环
- ⚡ **流式输出** - 支持 SSE 流式响应,实时展示 Agent 思考过程
### 6️⃣ 流式对话支持
项目提供完整的流式对话能力:
- 💬 **普通对话流式** - `/ai/chat/stream` 接口支持 SSE 流式输出
- 🤖 **Agent 流式** - `/agent/stream` 接口支持 Agent 思考过程实时展示
- 🌐 **前端示例** - 内置 `stream-chat.html` 提供完整的前端流式对话界面
- 🎯 **多 API 类型** - 支持切换普通对话和 Agent 模式
**流式对话优势**:
- ⚡ **实时响应** - 用户可立即看到 AI 的输出,无需等待完整响应
- 🎭 **更好的用户体验** - 类似 ChatGPT 的打字机效果
- 🔍 **透明思考** - Agent 模式下可实时查看思考和工具调用过程
### 7️⃣ Workflow 工作流编排
`spring-ai-study-model` 模块内置工作流编排能力:
- 🎯 **Manus 工作流** - 支持复杂任务的分解和执行
- 🤖 **多Agent协作** - PlanningAgent、SummaryAgent 等多角色协同
- 📋 **任务规划** - TaskPlan 和 TaskStep 实现结构化任务管理
- 🔄 **工作流编排器** - WorkflowOrchestrator 统一调度和管理
- 🌐 **REST API** - `/workflow` 接口提供工作流执行能力
- 🎨 **前端演示** - 内置 `workflow-demo.html` 提供可视化演示界面
**工作流应用场景**:
- 复杂任务分解与执行
- 多步骤数据处理流程
- 智能文档分析与总结
- 自动化业务流程编排
### 8️⃣ 命令行问答工具
`ask-question` 模块提供交互式命令行问答能力:
- 💻 **交互式问答** - 命令行界面实时与 AI 对话
- 🛠️ **AskUserQuestionTool** - 支持主动询问用户获取更多信息
- 📝 **CommandLineQuestionHandler** - 处理命令行输入和输出
- 🎯 **快速测试** - 便于开发和调试阶段快速验证功能
**使用方式**:
```bash
cd ask-question
mvn spring-boot:run
```
### 9️⃣ 🧠 智能记忆系统(v1.2)✨
`spring-ai-memory` 模块提供三层融合记忆架构,让 AI 真正记住用户:
#### 核心特性
- 💾 **短期滑动窗口** - 保留最近 N 条原始消息,保持对话细节
- 📝 **LLM 智能摘要** - 自动压缩历史对话为精炼摘要(≤300字),节省60%-80% Token
- 🔢 **长期向量存储** - 向量化存储核心事实,支持语义检索,永久保存不丢失
- ✨ **智能记忆合并** - v1.2 新增,检测到相似记忆时 LLM 智能合并,保留所有关键细节
- 🔄 **自动管理** - 无需手动干预,自动触发压缩、合并和归档
- 🎯 **语义召回** - 基于向量相似度的智能检索,精准召回相关历史
#### 记忆工作流程
```
1. 用户发送消息 → 存入短期滑动窗口
2. 当消息数超过阈值(默认10条)→ 触发 LLM 摘要压缩
3. 提取核心事实 → 检查是否与现有记忆相似
4. ✨ 如相似则智能合并 → 否则作为新记忆向量化存储
5. 读取时:长期记忆 + 摘要 + 近期消息,三层融合返回
```
#### 应用场景
- 👤 **个人助理** - 积累用户画像,记住姓名、职业、偏好等
- 🎧 **客服系统** - 完善用户信息,提升服务质量
- 📚 **教育平台** - 跟踪学习进度,个性化推荐
- 🤖 **智能 Agent** - 长期记忆支持复杂任务执行
📖 **详细文档**: [spring-ai-memory/README.md](spring-ai-memory/README.md)
---
## 🚀 快速开始
### 环境要求
- ☕ **JDK 17+** (推荐 JDK 21)
- 📦 **Maven 3.8+**
- 🗄️ **MySQL 8.x** 或 **PostgreSQL 12+**(推荐使用 PostgreSQL + pgvector 以支持向量数据库)
- 💻 **IDEA / VS Code** (推荐)
### 配置步骤
1. **创建数据库**
```sql
CREATE DATABASE spring_ai_study;
```
2. **导入表结构**
执行 `db/mysql.sql` 或 `db/postgresql.sql` 脚本创建所需的数据库表。
3. **修改数据库配置**
编辑 `spring-ai-study-main/src/main/resources/application.properties`:
```properties
# PostgreSQL 配置(推荐,支持 pgvector)
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://192.168.56.3:5432/kun?currentSchema=public
spring.datasource.username=kunadmin
spring.datasource.password=kunadmin
# 或使用 MySQL
# spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring-ai-study?serverTimezone=Asia/Shanghai
# spring.datasource.username=root
# spring.datasource.password=root
# pgvector 向量数据库配置
spring.ai.vectorstore.pgvector.dimensions=768
spring.ai.vectorstore.pgvector.table-name=kun_ai_index
spring.ai.vectorstore.pgvector.schema-name=public
spring.ai.vectorstore.pgvector.initialize-schema=true
```
**注意**:
- 项目默认使用 PostgreSQL + pgvector 作为向量数据库
- 如果使用 MySQL,需要注释掉 pgvector 相关配置
- 请根据实际环境修改数据库连接信息
4. **编译项目**
```bash
mvn clean install
```
5. **启动应用**
```bash
cd spring-ai-study-main
mvn spring-boot:run
```
6. **访问演示页面**
启动成功后,浏览器访问:
- 流式对话演示:http://localhost:8080/stream-chat.html
- 工作流演示:http://localhost:8080/workflow-demo.html
---
## 🏗️ 架构设计
### 设计模式
- **策略模式 (Strategy Pattern)** - 不同 AI 模型的实现策略(AiModel 接口)
- **工厂模式 (Factory Pattern)** - ChatClient/EmbeddingModel/RerankModel 的统一创建(AiModelClientStrategy)
- **构建者模式 (Builder Pattern)** - ReAct Agent 的灵活配置(CustomReActAgent.Builder)
### 核心类说明
#### AiModel 接口
实现此接口以添加新的 AI 模型支持:
```java
@Component
public class YourModelStrategy implements AiModel {
@Override
public String getModelType() {
return "your-model-type"; // 返回模型类型标识
}
@Override
public ChatModel createChatModel(AiModelConfig aiModelConfig) {
// 实现创建 ChatModel 的逻辑
// 从 aiModelConfig 获取 baseUrl, apiKey, defaultModel 等配置
return null;
}
@Override
public ChatClient.Builder createChatClient(AiModelConfig aiModelConfig) {
// 可选:实现创建 ChatClient.Builder 的逻辑
// 如果不支持,可以返回 null 或使用默认实现
return AiModel.super.createChatClient(aiModelConfig);
}
@Override
public EmbeddingModel createEmbeddingModel(AiModelConfig aiModelConfig) {
// 可选:实现创建 EmbeddingModel 的逻辑
// 如果不支持向量模型,可以返回 null 或使用默认实现
return AiModel.super.createEmbeddingModel(aiModelConfig);
}
@Override
public RerankModel createRerankModel(AiModelConfig aiModelConfig) {
// 可选:实现创建 RerankModel 的逻辑
return AiModel.super.createRerankModel(aiModelConfig);
}
}
```
**关键点**:
- 必须添加 `@Component` 注解,让 Spring 自动扫描注册
- `getModelType()` 返回值需与数据库中 `model_type` 字段对应
- 从 `AiModelConfig` 对象获取所有配置信息(baseUrl, apiKey, defaultModel 等)
- 支持 Chat、Embedding、Rerank 三种模型类型的实现
- `createChatModel()` 是主要方法,返回 `ChatModel` 实例
- `createChatClient()` 是可选方法,返回 `ChatClient.Builder` 实例
#### AiModelClientStrategy 策略管理器
统一管理所有模型策略,提供便捷的客户端获取方法:
```java
@RestController
@RequiredArgsConstructor
public class AiController {
private final AiModelClientStrategy aiModelClientStrategy;
@PostMapping("/ai/chat")
public ResponseResult chat(@RequestBody AiRequest aiRequest) {
// 根据 modelId 自动查询数据库配置并创建 ChatClient
ChatClient chatClient = aiModelClientStrategy.chatClientBuilder(aiRequest.getModelId())
.build();
// 配置多轮对话记忆
ChatMemory chatMemory = MessageWindowChatMemory.builder()
.chatMemoryRepository(new InMemoryChatMemoryRepository())
.maxMessages(20)
.build();
MessageChatMemoryAdvisor messageChatMemoryAdvisor = MessageChatMemoryAdvisor.builder(chatMemory).build();
// 使用 chatClient 进行对话
String content = chatClient.prompt()
.user(aiRequest.getContent())
.advisors(new SimpleLoggerAdvisor(), messageChatMemoryAdvisor)
.call()
.content();
return ResponseResult.ok(content);
}
}
```
**主要方法**:
- `chatClientBuilder(String modelId)` - 根据模型ID构建 ChatClient.Builder
- `getChatClient(String modelId)` - 直接获取 ChatClient 实例
- `getChatModel(String modelId)` - 直接获取 ChatModel 实例
- `embeddingModel(String modelId)` - 根据模型ID获取 EmbeddingModel 实例
- `rerankModel(String modelId)` - 根据模型ID获取 RerankModel 实例
- `getAvailableModelTypesByCategory(String category)` - 获取指定类别的所有可用模型类型
#### ReAct Agent 智能体
使用 ReAct Agent 实现工具调用和多步推理:
```java
// 创建 ReAct Agent
CustomReActAgent agent = CustomReActAgent.builder()
.chatClient(chatClient)
.toolCallbacks(weatherTool, searchTool) // 注册工具
.maxSteps(10) // 最大推理步骤
.systemPrompt("你是一个智能助手,可以使用工具来回答问题")
.build();
// 执行 Agent
String result = agent.execute("今天北京的天气怎么样?");
```
**工作流程**:
1. **思考 (Thinking)** - 分析问题,决定调用哪个工具
2. **执行 (Act)** - 调用工具获取结果
3. **观察 (Observe)** - 观察工具执行结果
4. **循环** - 重复上述步骤直到问题解决或达到最大步骤数
---
#### API 接口说明
项目提供以下 REST API 接口:
#### 对话接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/ai/chat` | POST | 普通对话接口 |
| `/ai/chat/stream` | GET | 流式对话接口(SSE) |
| `/agent/stream` | GET | Agent 流式接口(SSE) |
#### RAG 接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/rag/upload` | POST | 上传文档 |
| `/rag/search` | POST | 知识库检索 |
#### Workflow 接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/workflow` | POST | 执行工作流 |
---
## 📊 项目特色
| 特性 | 说明 |
|-----|------|
| 🔥 **生产就绪** | 完整的异常处理、日志记录、重试机制(RetryTemplate) |
| 🎨 **灵活扩展** | 新增模型只需实现 AiModel 接口,符合开闭原则 |
| ⚡ **高性能** | HikariCP 连接池、MyBatis-Plus 索引优化、支持异步处理 |
| 🔒 **安全可靠** | API Key 存储在数据库、支持动态更新 |
| 📱 **RESTful API** | 标准的 REST 接口设计,统一响应格式 |
| 💾 **双数据库支持** | 同时支持 MySQL 和 PostgreSQL(推荐 PostgreSQL + pgvector) |
| 🧠 **智能记忆系统** | ✨ v1.2 三层融合记忆架构,短期滑动窗口 + LLM摘要 + 长期向量存储,支持智能合并,节省60%-80% Token |
| 📚 **RAG 支持** | 内置文档解析、向量化、存储、检索和质量评估能力,支持反思优化 |
| 🤖 **Agent 能力** | 内置 ReAct Agent 框架,支持工具调用、多步推理和流式输出 |
| 🔢 **多模型类型** | 支持 Chat、Embedding、Image、Rerank 四种模型类型 |
| 🔄 **模型热切换** | 运行时动态切换模型,无需重启应用 |
| ⚡ **流式响应** | 支持 SSE 流式输出,提供实时对话体验 |
| 🎯 **工作流编排** | 内置 Manus 工作流、多Agent协作和任务规划能力 |
| 💻 **命令行工具** | 内置交互式问答工具,便于快速测试和调试 |
---
## 📝 常见问题
### Q: 如何添加新的 AI 模型?
A: 实现 `AiModel` 接口,添加 `@Component` 注解,在数据库 `ai_model_config` 表中配置模型信息即可,无需修改现有代码。参考 `DeepSeekAiModel`、`DashscopeAiModel` 或 `ZhiPuAiModel` 的实现。
### Q: 支持哪些 AI 模型?
A: 理论上支持所有提供 HTTP API 的 AI 模型。目前已内置 **DeepSeek**(对话模型)、**阿里云通义千问 DashScope**(对话模型 + 向量模型 + 重排模型)、**智谱AI**(对话模型)、**Gitee AI**(重排模型)支持,可轻松扩展其他主流大语言模型。
### Q: 适合什么场景使用?
A: 适合需要对接多个 AI 模型提供商的企业应用、智能客服系统、知识库问答 RAG、内容创作、代码辅助、智能写作、多语言翻译、企业 AI 中台、智能 Agent 等场景。
### Q: 性能如何?
A: 采用 HikariCP 连接池、MyBatis-Plus 索引优化、RetryTemplate 重试机制,单实例可支持数百 QPS,支持水平扩展。
### Q: 支持哪些数据库?
A: 同时支持 MySQL 8.x 和 PostgreSQL 12+,提供了相应的建表脚本(db/mysql.sql 和 db/postgresql.sql)。推荐使用 PostgreSQL + pgvector 以支持向量数据库功能。
### Q: 如何实现多轮对话?
A: 项目已内置 `MessageWindowChatMemory`,在 `AiController` 中自动配置了最多 20 条消息的记忆窗口,支持上下文关联的多轮对话。
### Q: 如何使用 RAG 功能?
A: `spring-ai-study-rag` 模块提供了 `RagService` 服务,支持文档解析、向量化、存储、检索和质量评估。需要配置 VectorStore(如 PostgreSQL pgvector)并使用 Embedding 模型进行向量化。RAG 服务支持反思优化机制,当检索质量不足时会自动重新规划检索策略。
### Q: 如何使用 ReAct Agent?
A: 使用 `CustomReActAgent.builder()` 构建 Agent,注册工具回调(ToolCallback),设置最大步骤数和系统提示词,然后调用 `execute()` 方法执行。参考 `CustomReActAgentTest.java` 测试用例。Agent 支持流式输出,可通过 `/agent/stream` 接口实时查看思考过程。
### Q: 如何使用流式对话?
A: 项目提供两个流式接口:`/ai/chat/stream`(普通对话)和 `/agent/stream`(Agent 智能体)。前端可使用 EventSource 或 Fetch API 接收 SSE 流式数据。项目内置了 `stream-chat.html` 提供完整的前端示例,支持切换普通对话和 Agent 模式。
### Q: 如何使用 Workflow 工作流?
A: `spring-ai-study-model` 模块提供了 Manus 工作流编排能力,包括 TaskPlan、TaskStep 和 WorkflowOrchestrator。可通过 `/workflow` REST API 调用工作流,或使用 `workflow-demo.html` 前端页面进行可视化演示。支持多Agent协作和复杂任务分解。
### Q: 如何使用命令行问答工具?
A: 进入 `ask-question` 模块目录,运行 `mvn spring-boot:run` 即可启动交互式命令行问答工具。该工具支持实时与 AI 对话,并内置 AskUserQuestionTool 可以主动询问用户获取更多信息,适合快速测试和开发调试。
### Q: 如何使用智能记忆系统?
A: `spring-ai-memory` 模块提供了 `FusionChatMemory` 实现,采用三层融合记忆架构(短期滑动窗口 + LLM摘要 + 长期向量存储)。只需注入 `FusionChatMemory` Bean,调用 `add()` 添加消息,`get()` 获取融合上下文即可。v1.2 版本支持智能记忆合并功能,检测到相似记忆时会自动使用 LLM 合并而非简单跳过。详细文档请参考 [spring-ai-memory/README.md](spring-ai-memory/README.md)。
## 🤝 贡献指南
欢迎提交 Issue 和 Pull Request 来完善这个项目!
1. Fork 本仓库
2. 创建你的特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交你的改动 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启一个 Pull Request
## 📄 许可证
本项目仅供学习交流使用。
## 🌟 支持项目
如果这个项目对你有帮助,请给个 Star ⭐ 支持一下!
### 👥 贡献者
感谢所有为这个项目做出贡献的开发者!
---
**Made with ❤️ by Spring AI Community**
[⭐ Star](https://gitee.com/your-repo/stargazers) | [🍴 Fork](https://gitee.com/your-repo/forks) | [📋 Issues](https://gitee.com/your-repo/issues)