# 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** [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.14-green.svg)](https://spring.io/projects/spring-boot) [![Spring AI](https://img.shields.io/badge/Spring%20AI-1.1.6-blue.svg)](https://spring.io/projects/spring-ai) [![Spring AI Alibaba](https://img.shields.io/badge/Spring%20AI%20Alibaba-1.1.2.0-orange.svg)](https://github.com/alibaba/spring-ai-alibaba) [![Java](https://img.shields.io/badge/Java-17+-orange.svg)](https://www.oracle.com/java/) [![MyBatis-Plus](https://img.shields.io/badge/MyBatis--Plus-3.5.15-red.svg)](https://baomidou.com/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](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)