【AI实战】基于 Spring Boot 和 Spring AI 的聊天机器人,记忆功能、向量数据检索、function call一应俱全
使用了 `VectorStore` 和 `SearchRequest`,表明项目集成了向量数据库,用于语义搜索和检索增强生成(RAG, Retrieval-Augmented Generation)。- 使用了 `ChatClient` 和 `PromptChatMemoryAdvisor` 等组件,表明项目集成了 Spring AI 框架,用于构建聊天机器人功能。- 使用了 `Flux`,表明项
今天有空整理下Java Spring AI实战项目,通过function call整合已有系统API实现已有功能的完美串接,可玩性还是很多的。Spring生态完善,AI也得跟上,下图用通义千问模型使用展示的,下面说一下技术栈:
1. **后端框架**
- **Spring Boot**:
- 使用了 `@RestController` 和 `@GetMapping` 注解,表明这是一个基于 Spring Boot 的 RESTful API 服务。
- `@CrossOrigin` 注解支持跨域请求,适合前后端分离的架构。
2. **AI 聊天相关技术**
- **Spring AI**:
- 使用了 `ChatClient` 和 `PromptChatMemoryAdvisor` 等组件,表明项目集成了 Spring AI 框架,用于构建聊天机器人功能。
- 提供了系统提示(System Prompt)、对话记忆(Chat Memory)和顾问(Advisors)等功能。
- **VectorStore**:
- 使用了 `VectorStore` 和 `SearchRequest`,表明项目集成了向量数据库,用于语义搜索和检索增强生成(RAG, Retrieval-Augmented Generation)。
- **Function Calling**:
- 定义了默认函数(如 `getBookingDetails`, `changeBooking`, `cancelBooking`),表明支持通过调用外部函数完成特定任务。
3. **响应式编程**
- **Project Reactor**:
- 使用了 `Flux`,表明项目采用了响应式编程模型,支持流式数据处理和异步操作。
4. **国际化与本地化**
- **动态日期插入**:
- 在系统提示中动态插入当前日期(`LocalDate.now()`),支持动态上下文生成。
5. **HTTP 请求与响应**
- **MediaType.TEXT_EVENT_STREAM_VALUE**:
- 使用了 Server-Sent Events (SSE) 协议,支持服务器向客户端推送实时数据流。
6. **其他依赖**
- **LoggingAdvisor**:
- 自定义的日志记录顾问,用于记录聊天交互过程中的信息。
- **PromptChatMemoryAdvisor**:
- 用于管理对话历史记录,确保聊天机器人能够记住上下文。
- **QuestionAnswerAdvisor**:
- 结合向量数据库进行问答处理,提升机器人的知识检索能力。
---
技术栈总结
- **框架**:Spring Boot、Spring AI
- **AI 功能**:ChatClient、Prompt、Advisors、Function Calling、VectorStore
- **编程模型**:响应式编程(Project Reactor)
- **协议**:RESTful API、Server-Sent Events (SSE)
- **工具**:日志记录、动态上下文生成、跨域支持
该项目是一个基于 Spring Boot 和 Spring AI 的聊天机器人应用,结合了向量数据库和函数调用功能,不仅仅适用于航空领域的客户支持场景,技术都是相通的,各行业类型需求都一样。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)