SpringAI智能航空助手实战<Demo>

我们将如何将我们得传统业务进行智能化的改造
>>>1.将我们传统的航空票务系统  我们之前通过按钮的方式来完成 现在我们通过智能对话的方式完成
>

在这里插入图片描述

现在我们通过对话的方式来完成 整个智能化的改造
传统应用如何进行智能化改造
我们把我们的项目通过Spring-ai 来接入Ai大模型  然后整合我们自己的业务来完成 大模型应用的开发我们的项目架构 通过rag 会把我们业务数据----->存储在我们的向量存储中
我们会把我们的业务数据检索进入向量存储中-------->告诉大模型--->这样大模型就具备了我们垂直

在这里插入图片描述

1.promt 我们可以利用提示词来预设一些角色
2.会话记忆 大模型可以记录我的名字 整个会话过程中知道我叫xushu

在这里插入图片描述

我的这些票据信息 (我们要把我们的系统的数据喂给大模型)
##>>  当我退订成功  大模型会执行我们的API --->将状态update (x)
在这里插入代码片

在这里插入图片描述

 当我们基于spring-ai接入大模型的时候 我们和大模型的对话是这样的, 我们第一个要做的就是预设角色,因为你现在的聊天是漫无目的的,呢我希望它是一个智能航空助手来跟我对话 

在这里插入图片描述
在这里插入图片描述

当我设置完毕角色之后 再和ai 进行对话的时候效果就会好很多了##  
预设角色完成后,下一步我给他增加我们的对话记忆, 因为现在说话 他是记不住我之前所说的话的
##  比如说这样

在这里插入图片描述

  现在他就不知道我叫什么了,但是我之前已经明显告诉它了  就是因为此时他没有记录我的名字  没有对话记忆我们可以加入它的会话记忆, 此时我们的chatmemory 是记录在内存的,当然我们也可以把它记录在redis

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

divusirs 加一个拦截器
代表我可以记忆100条聊天记录  现在就已经拥有了对话记忆的功能了对话记忆的底层原理  我告诉它我叫xuru  后续它就知道我叫xushule 

在这里插入图片描述

我们springai 跟大模型进行对话 其实是根据这个Promt 提示词 当我第一次告诉它 您好 我叫xushu
它回答 欢迎你xushu   我如果配置了对话记忆 当我下次问他 我叫什么  它会把之前所有的对话记录 都一起传到我们的大模型
大模型会根据之前的所有的对话信息就能够检索到  从而就可以完成 所谓的对话记忆、、###########》此时对话有了记录 我们就可以在开发阶段做一些记录 当某些对话达不到我们想要的效果时,我们就可以分析一下整个对话中
聊天聊的是什么实现一下对话的日志记录.defaultAdvices 就是对话之间的拦截器 我们此时的对话记忆就是通过拦截器实现的

在这里插入图片描述
在这里插入图片描述

  它此时就会把对话内容发出来, 这样方便我们分析对话智能对话当中最核心的2个功能 退订和更改预定
退订的业务需求   我们只能退订临发车之前头2天的时间 然后退订成功之后 我们把状态改为 取消
我们怎么通过对话的方式让大模型调用我们的方法

在这里插入图片描述


我们怎么在对话中拿到用户提供的预定号和姓名
我们可以加入提示词 就可以让用户提供给我们 预定号和姓名
我们可以加入提示词 就可以让用户提供给我们 预定号和姓名

在这里插入图片描述

 所以 此时我们的聊天内容就变成这样了,我们可以通过引导的方式告诉用户 如果你需要退订的话 麻烦你提供预定好和姓名

在这里插入图片描述


当我们提供了预定号和姓名 之后就胡扯了  因为它此时没有调用到我们的业务方法
通过funcingCall 调用我们的业务方法 并且我们还要提取到对话当中的 这这关键参数######  我们需要写这么一个方法  第一个参数就是 我们需要从

在这里插入图片描述
在这里插入图片描述

这里 第一个代表我从大模型中需要获取的东西,
我告诉大模型 是用来处理机票退订得
这样大模型就知道了 当你业务需要处理机票退订   这样 大模型就提取预定号和姓名 然后调用业务方法  实现退订业务实现第二个参数是我要告诉大模型的
比如说航班信息是我系统内部的数据 我要怎么告诉大模型

在这里插入图片描述

>>>>>>1. 调整我们的提示词

在这里插入图片描述
在这里插入图片描述

在这里插入代码片

在这里插入图片描述

之前我们实现了退订,但是现在退订得花 还得让客户确认下机票信息,而不是我直接发给你信息后直接就给我票退了

在这里插入图片描述

其实我们只要加入提示词就可以了

在这里插入图片描述

第二个参数是我们要返回给大模型得数据

在这里插入图片描述
在这里插入图片描述

##########》》》》》。这样的话我就会吧我得航班信息告诉给大模型

在这里插入图片描述

##############>现在就可以确认了

在这里插入图片描述

##########。>>>>>>..退订实现了现在我们用rag 来增强我们的对话内容比如说我此时咨询,需要扣费么 它基础大模型肯定是不知道的。此时我们就可以通过这个问题去查询向量db(相似性检索)

在这里插入图片描述

向量数据库 做相似性检索得 当我们ask 退费需要扣费么
就可以检索到跟扣费相似得内容  但是前提我们得先往向量数据库中检入大量得需求内容
我就得要把取消退票预定 造成得一些影响 先检入到向量db中
我们的模板 ------>检入的内容

在这里插入图片描述

就是航空系统得一些条款
当用户进行不同得对话 比如说取消预定 在对话当中就会实时得告诉它这些条款
#############>>>>>>>>>>>>>>>>>>>..
配置一个向量数据库 比如说redis es
本案例中我们用内存数据库  ------------->怎么用redis 实现向量数据库

在这里插入图片描述

启动springboot得时候就会运行------>写入向量库
读取资料 不管是文件也好/文档
转换为向量数据库所需要得文档--->写入向量数据库

在这里插入图片描述

添加rag

在这里插入图片描述

向量数据库得内容能不能加到角色预设中  肯定可以得
但是我们实际过程中 我们得预设角色数据都是一些基本信息 
我们可以通过我们得业务数据--->rag 检索到向量dbzhong 
我们传统应用如何对我们智能化改造 有一个深刻得理解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918658.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows git安装步骤

1,从官网下载安装包:gitg官网 进行安装 2,配置git环境: git config --global user.name "Your Name" git config --global user.email "Your Email"3,生成 SSH Key: ssh-keygen -t r…

使用chroma和LlamaIndex做RAG增强

RAG 原理:通过 “检索(从知识库获取相关信息)→ 增强(将信息作为上下文输入模型)→ 生成(模型基于上下文回答)” 三步,解决大模型知识时效性、领域局限性问题。 接下来将完成这么一个…

2025 最应避免的摄影陷阱以及解决方案

你有没有想过,当你拍完了一个完美的场景后,却发现画面模糊、光线不足,或者更糟的是,存储卡中的文件丢失了?这些问题可能会发生在任何人身上,无论是业余爱好者、专业人士还是最好的摄影师。当珍贵的记忆变成…

python类--python011

面向对象编程中的类的概念、属性使用、继承和类的改造问题等。7.1 初识类在软件编程中,面向过程和面向对象是两种主要的编程方法。面向过程的编程强调通过函数来实现特定的功能,具有灵活性,但在复杂系统中往往导致代码重复,维护困…

Python函数篇:从零到精通

一、函数1.1 为什么有函数我们对于一个项目时,会有上千甚至上万条代码,当我们要使用到某个函数时,例如我需要计算一个求和代码,获得求和的值来服务我们的项目,那我们可能会这样#计算1~100的和 theSun 0 fo…

QT项目之记事本

本文用QT实现记事本功能。一、成品展示1.界面主要元素:1.标题为MyNoteBook;2.相应图标为:打开文件,保存,退出;3.右下角标注光标所在行列,默认编码方式为UTF-8;4.鼠标所在图标位置时会…

【软件测试】性能测试 —— 工具篇 JMeter 介绍与使用

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录1. JMeter 的介绍2. JMeter 安装、配置、搭建2.1 前置条件 —— Java环境搭建2.2 JMeter 下载2.3 JMeter 安装…

二十二、Mybatis-快速入门程序

入门程序大概步骤叙述: 步骤一:创建springboot工程并且数据库提前创建表步骤二:创建springboot工程对Mybatis相关依赖注意打勾步骤三:编写查找方法步骤四:编写测试方法项目目录结构与数据库以及代码: 项目目…

Blender模拟结构光3D Scanner(一)外参数匹配

如何使用Blender模拟FPP(Fringe Projection Profilometry) 原理的结构光3D传感器?主要包含的工作有:1)相机、投影仪定位与内外参数匹配;2)投影仪投射指定Pattern图像;3)被测物体材质属性配置等&…

LangChain是如何实现RAG多轮问答的

目录引言一、LangChain实现RAG多轮问答核心机制1. 对话历史管理(Memory)2. 问题重写(Query Rewriting)3. 检索增强生成(RAG Core)4. 链式工作流(Chain)二、关键设计特点三、完整示例…

DAY 44 预训练模型

知识点回顾: 预训练的概念常见的分类预训练模型图像预训练模型的发展史预训练的策略预训练代码实战:resnet18 一、预训练的概念 我们之前在训练中发现,准确率最开始随着epoch的增加而增加。随着循环的更新,参数在不断发生更新。 所…

Java Stream API 中常用方法复习及项目实战示例

在最近的练手项目中,对于stream流的操作愈加频繁,我也越来越感觉stream流在处理数据是的干净利落,因此写博客用来记录最近常用的方法以便于未来的复习。map() 方法map()是一个中间操作(intermediate operation)&#x…

从零开始手搓一个GPT大语言模型:从理论到实践的完整指南(一)

现在人工智能飞速发展时代,LLM绝对可以算是人工智能领域得一颗明珠,也是现在许多AI项目落地得必不可少得一个模块,可以说,不管你之前得研究领域是AI得哪个方向,现在都需要会一些LLM基础,在这个系列&#xf…

Redis ubuntu下载Redis的C++客户端

1. 安装 redis-plus-plus C 操作 Redis 的库有很多,这里选择使用 redis-plus-plus,这个库的功能强大,使用简单。 Github 地址:GitHub - sewenew/redis-plus-plus: Redis client written in C 访问不了Github 地址的可以使用Ste…

nm命令和nm -D命令参数

出现这种差异的原因在于:动态库中的符号分为两种类型: 常规符号表(regular symbol table):通常用于静态链接和调试,默认不包含在动态库中(除非显式保留)。动态符号表(dyn…

Windows下cuda的安装和配置

今天开始做一个cuda教程。由于本人主要在windows下使用visual studio进行开发,因此这里讲一下windows下的cuda开发环境。 下载cuda_toolkit 从网站https://developer.nvidia.com/cuda-toolkit中下载,先选择Download Now,然后跳转到如下页面&#xff1a…

【代码随想录day 19】 力扣 450.删除二叉搜索树中的节点

视频讲解:https://www.bilibili.com/video/BV1tP41177us/?share_sourcecopy_web&vd_sourcea935eaede74a204ec74fd041b917810c 文档讲解:https://programmercarl.com/0450.%E5%88%A0%E9%99%A4%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%A…

智慧养老丨实用科普+避坑指南:科技如何让晚年生活更安全舒适?

随着老龄化社会的到来,智慧养老产品逐渐成为改善老年人生活质量的重要工具。从智能手表到便携洗浴机,科技正为老年人的健康、安全与生活便利提供创新解决方案。我们这次主要介绍四类典型智慧养老产品,结合真实体验给出选购建议,并…

系统垃圾清理批处理脚本 (BAT)

系统垃圾清理批处理脚本 (BAT) 以下是一个Windows系统垃圾清理的批处理脚本,它可以清理常见的系统临时文件、缓存和日志等: echo off title 系统垃圾清理工具 color 0a echo. echo 正在清理系统垃圾文件,请稍候... echo.:: 清理临时文件 echo…

Terraform的零基础学习教程

一、Terraform 是什么? Terraform 是由 HashiCorp 开发的开源工具,用于自动化管理云基础设施(如 AWS、Azure、GCP 等)。 核心特点: 基础设施即代码(IaC):用代码定义和管理资源。跨…