智能机票助手:使用 Spring AI Alibaba 构建
在本篇文章中,我们将探讨如何使用 Spring AI Alibaba 框架来构建一个智能机票助手。这个助手将能够帮助用户完成机票预订、解答问题、改签和取消等服务。
项目概述
智能机票助手的目标是利用 AI 技术来提升用户体验,通过自然语言处理来理解用户的需求,并提供相应的服务。本项目将展示 Spring AI Alibaba 框架在构建智能体应用方面的强大能力。
功能要求
- 自然语言理解:基于 AI 大模型与用户进行对话,理解用户的自然语言输入。
- 多轮对话支持:支持在上下文中理解用户意图,进行多轮连续对话。
- 行业知识理解:理解机票操作相关的术语与规范,如航空法规、退改签规则等。
- 工具辅助任务:在必要时调用工具或系统来辅助完成任务。
架构设计
完整架构图
AI 模型服务接入
我们将使用 Spring Boot 来开发一个 Java 应用,该应用能够持续接收用户的问题,并利用 AI 模型来理解问题并做出决策。
RAG 增强
为了确保 AI 模型能够理解并遵守机票退改签的复杂规则,我们将使用 RAG(Retrieval-Augmented Generation)模式。这将允许我们的模型检索并应用相关的领域知识。
Function Calling
AI 智能体可以做出决策,但执行这些决策(如改签或退票操作)需要应用本身来完成。我们将使用 Spring AI 框架来将决策转换为具体的函数调用。
Chat Memory
为了支持多轮对话,我们需要保留对话上下文。Spring AI Alibaba 提供了内置的 Conversation Memory 支持,以帮助维护对话状态。
核心组件
- Chat Model API:与阿里云通义模型进行交互。
- Prompt 管理:管理对话的提示信息。
- Chat Memory:支持多轮对话的聊天记忆。
- RAG 和 Vector Store:处理机票预定、改签、退票等相关规则。
ChatClient 编码
Spring AI Alibaba 提供了 ChatClient
,这是一个高阶 API 抽象,允许我们方便地将多个组件组装成一个智能体 Agent。
this.chatClient = modelBuilder
.defaultSystem("""
您是“Funnair”航空公司的客户聊天支持代理。请以友好、乐于助人且愉快的方式来回复。
您正在通过在线聊天系统与客户互动。
在提供有关预订或取消预订的信息之前,您必须始终
从用户处获取以下信息:预订号、客户姓名。
在询问用户之前,请检查消息历史记录以获取此信息。
在更改预订之前,您必须确保条款允许这样做。
如果更改需要收费,您必须在继续之前征得用户同意。
使用提供的功能获取预订详细信息、更改预订和取消预订。
如果需要,可以调用相应函数调用完成辅助动作。
请讲中文。
今天的日期是 {current_date}.
""")
.defaultAdvisors(
new PromptChatMemoryAdvisor(chatMemory), // Chat Memory
new VectorStoreChatMemoryAdvisor(vectorStore)),
new QuestionAnswerAdvisor(vectorStore, SearchRequest.defaults()), // RAG
new LoggingAdvisor())
.defaultFunctions("getBookingDetails", "changeBooking", "cancelBooking") // FUNCTION CALLING
.build();
示例运行效果
通过上述步骤,我们成功构建了一个智能机票助手,它能够理解用户的需求并提供相应的服务。这个助手不仅能够提升用户体验,还能够提高航空公司的运营效率。
源码索取
联系我索取