今天有空整理下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 的聊天机器人应用,结合了向量数据库和函数调用功能,不仅仅适用于航空领域的客户支持场景,技术都是相通的,各行业类型需求都一样。

Logo

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

更多推荐