- 博客(254)
- 资源 (1)
- 收藏
- 关注
原创 LangChain4j (6) :Tools 工具
LangChain4j的Tools工具(也称为 Function Calling )是其核心功能之一,允许开发者扩展大语言模型(LLM)的能力,通过调用外部工具或函数实现更复杂的交互逻辑。这里我们将利用 Tools 工具来提取用户预约的关键信息,然后将关键信息存入 MySQL数据库中。
2025-08-20 17:12:59
195
原创 LangChain4j (5) :RAG 知识库
但这就导致一个问题,例如我们的模型是在 2023 年训练完成的,那我们如果去询问模型 2024 年发生的事情,模型是无法准确回答的;纵观人类文明史,那些真正推动历史前进的人物,往往不是标准答案的复述者,而是敢于质疑、勇于创新的思想者。爱因斯坦在专利局做着小职员的工作时,没有被既定的物理定律束缚,而是让思想乘着光速的翅膀,最终颠覆了牛顿的经典物理学体系。向量模型,用于把文档分割后的片段向量化或者查询时把用户输入的内容向量化,阿里百炼平台上提供了通用文本向量模型,我们使用这个模型作为我们的向量模型。
2025-08-19 16:05:47
983
原创 LangChain4j (4) :会话记忆
大模型是不具备记忆能力,要想让大模型记住之前聊天的内容,唯一的办法就是把之前聊天的内容与新的提示词一起发给大模型。因为我们现在没有做会话隔离,所以如果我们不把后端服务重启,然后新建一个浏览器会话发起访问,之前的模型回答内容仍然在。现在的会话对象存储,如果把后端关闭后,之前的对话信息就会全部消失,我们先来看一下 LangChain4j 的会话存储源码怎么实现的,我们先进入。可以看到第二个会话并不知道我们说的这个“他”是谁,所以这里成功的进行了会话隔离。,所以只要服务一关,之前的记忆就会消失。
2025-08-19 15:43:57
847
原创 LangChain4j (3) :AiService工具类、流式调用、消息注解
否则会出现乱码的情况。这里有两种方式,一种是写一个配置类将 AI 服务接口类注册为 Bean,另一种直接使用。注解,在服务接口类上注解使用。这里我们直接使用注解方法,这种方法扩展性更强也更方便一些。的字段,这个就是流式调用的开关,下面我们就要在代码中使用这个流式调用。使用的是手动装配,则需要这样修改,用自动装配的就直接写一个。就是这个作用,我们可以给我们的大模型指定一些角色和设定。,框架会自己去装配 IOC 容器中已有的。可以看到在我们自己输入的问题前,加上了。这个配置和前一节一样,因为我们使用的。
2025-08-18 17:52:42
550
原创 LangChain4j(2):整合SpringBoot
的 API 进行交互。它支持高度灵活的配置参数,开发者可以通过这些参数调整模型的行为,例如生成文本的随机性、响应长度、超时设置等,以满足不同场景的需求。如果在普通的 Maven 项目里,我们可以以下面这种方式来进行配置与发送信息。但这样肯定不行,因为我们并没有指定使用的是什么模型,所以我们需要对。但是在 Spring 整合方法中,我们可以通过配置文件的方法来对。配置结束后,我们启动 SpringBoot服务,访问。中配置(这里使用的是上一章中使用的。框架中提供的一个类,专门用于与。
2025-08-18 17:30:04
367
原创 LangChain4j (1):Ollama本地部署与阿里百炼云端部署大模型
我们现在只是在终端与模型进行交互,这样是无法融入代码工程中去的,那么如何像调用 API 接口一样调用本地的大模型呢?进入这个网站下载即可,首次进入会让你在终端运行一个命令,就是下载了一个 2G 左右的 Ollama大模型,下载成功后就可以和这个模型在终端交互了,如下图,输入。进入官网后,我们需要先开通服务(这个我这里没法演示了,领完免费额度就没有这个操作,大家进入后平台会自动提示领取),点击顶部导航栏上的。进入,可以看到右上角有一个命令,我们在终端中执行这个命令,就会自动下载。,因为只是个实验,这里选择。
2025-08-18 17:21:14
572
原创 vue使用markdown-it
使用 highlight 选项给围栏代码块应用语法高亮功能,或者使用完全的包裹器覆盖。在div容器中添加类名markdown-body。使用gitHub风格的样式。
2025-08-14 10:25:57
147
原创 SpringAi-LLM
摘要: Spring AI是Spring生态系统推出的AI应用开发框架,旨在将Spring的设计原则(如模块化、可移植性)应用于人工智能领域。该框架提供对主流AI大模型(如OpenAI、DeepSeek等)的支持,涵盖聊天、文本生成图像/音频等功能,并集成了多种向量数据库。文章详细介绍了Spring AI的核心功能、版本发布状态,并通过DeepSeek集成案例展示了实际应用。开发者需要JDK17+和SpringBoot3.3+环境,通过简单的配置即可快速构建AI应用。目前Spring AI仍处于预览版阶段,
2025-08-07 11:13:05
466
原创 AI-硅谷小智
本文介绍了基于Java的LangChain4j框架在医疗领域的应用。主要内容包括:1)LangChain4j简介及发展历程,该框架可简化大语言模型(LLM)与Java应用的集成;2)框架核心功能,如统一API访问主流LLM、智能代理和检索增强生成(RAG)等;3)详细的项目搭建指南,包括Maven配置、SpringBoot集成和接口测试;4)具体应用场景,如医疗客服机器人、病历数据处理等。文章还提供了接入大模型的代码示例和测试方法,展示了如何快速构建基于AI的医疗应用系统。
2025-07-29 15:08:35
995
原创 SSE(Server-Send-Event)服务端数据推送
服务端与客户端建立Socket连接进行数据传输,Socket的传输方式是全双工的。WebSocket是基于 TCP 的长连接,和HTTP 协议相比,它能实现轻量级的、低延迟的数据传输,非常适合实时通信场景,主要用于交互性强的双向通信。客户端通过频繁请求向服务端请求数据,达到类似实时更新的效果。轮询的优点是实现简单,但是会给服务端和网络带来额外的压力,且延迟较高。实现效果如下:服务端不断推送数据到前端,前端可以也可以调用接口主动关闭连接。适用场景:SSE由于是服务端单向通讯,所以适合那种需要单向持久的连接。
2025-07-21 14:02:24
388
原创 Commons-lang3
常用工具类commons-lang3的学习使用-优快云博客apache提供的众多commons工具包,号称Java第二API,而common里面lang3包更是被我们使用得最多的。因此本文主要详细讲解lang3包里面几乎每个类的使用,希望以后大家使用此工具包。BeanUtils提供对Java反射和自省API的包装,其主要目的是利用反射机制对JavaBean的属性进行处理,简化JavaBean封装数据的操作。好处: BeanUtils给对象封装参数的时候会进行类型自动转换。
2025-07-17 15:44:59
591
原创 使用 Spring Boot + AbstractRoutingDataSource 实现动态切换数据源
功能说明数据源上下文管理工具支持嵌套切换线程隔离AOP + 注解实现优雅的数据源切换推荐使用的封装库。
2025-07-17 14:52:31
773
原创 深入理解Optional
Optional 是 Java 8 引入的一个容器类,用于表示一个可能为空(null)的值。通过使用 Optional,我们可以避免常见的空指针异常(NullPointerException),并且使得方法签名更加清晰,增强代码的可读性。是 Java 8 引入的强大工具,能够使得代码更加简洁和安全,避免常见的空指针异常。能够大大提升代码的可读性和可维护性,但也要避免过度使用,避免性能开销。,你可以明确表示值的缺失,并且通过链式调用,优雅地处理可能为空的值。中的值存在,则返回值,否则返回提供的默认值。
2025-07-16 09:20:02
751
原创 JAVA中的枚举类
枚举类型就是多例,一个类有多个实例,但是实例的个数不是无穷的,是有限的;枚举类中实例称为枚举项,一般一个枚举类不应该有太多的枚举项。使用enum关键字,例如注意:定义枚举类型的关键字是enum,而不是Enum,所有关键字都是小写的。其中 FRONT,BEHIND,LEFT,RIGHT 都是枚举项,它们都是本类的实例,也就是说本类只有四个对象。在定义枚举项时,多个枚举项之间用逗号隔开,最后一个用分号结尾,如果枚举类型中只有枚举项(没有构造器、方法、变量),那么可以省略分号,但是不建议省。
2025-07-15 15:37:32
423
原创 基于注解的代码生成工具MapStruct映射使用详解
在 Java 开发中,我们经常需要在不同的 Java Bean 之间进行数据映射,比如从实体类(Entity)到数据传输对象(DTO)的转换。传统的做法是手动编写大量的 setter 和 getter 方法来完成属性的赋值,这种方式不仅繁琐,而且容易出错。MapStruct 作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案。它在编译时自动生成映射代码,避免了运行时反射带来的性能开销,同时保证了类型安全。// 用户实体类@Data// 用户数据传输对象类。
2025-07-15 13:31:11
332
原创 Java陷阱之assert关键字详解
Assert.isTrue()方法用于断言条件是否为真,如果条件不满足(即为false),则会抛出IllegalArgumentException,并附带预设的错误信息。此方法常用于单元测试中确保代码行为符合预期。Assert.isTrue(express,message) 是指测试指定的条件是否为True,如果为True,则测试通过,如果表达式express为false,则才输出信息。发现,当expression为true时则通过,不发生异常,当expression为false时,则会抛出异常。
2025-07-14 10:17:37
374
原创 集成CommitLInt+ESLint+Prettier+StyleLint+LintStaged
这样就配置完毕啦,当我们使用 git commit -m “xxx” 时,lint-staged 会自动执行帮我们进行代码质量与风格的修复。配置完成之后我们对代码风格的配置只会使用prettier的配置,相当于将eslint中冲突的规则覆盖掉了。运行之后就会出现.husky文件夹,之后我们就可以配置在GItHook中执行的操作啦😀。我们还可以配置忽略文件,让 StyleLint 不对这些文件进行校验。我们还可以配置忽略文件,让 ESLint 不对这些文件进行校验。然后配置一个初始化 Hysky 的命令。
2025-07-10 17:03:15
376
原创 封装axios
router在使用过程中如果我们直接在一个文件的一个数组中配置,最后路由越来越多会导致不易管理,我们可以将一个页面的路由配置在一个数组中最后统一导入,这样就会方便很多。我们在/src/api下建立不同的文件夹代表不同类型的API,在index.ts中编写接口配置,在types.ts中编写接口所需的请求参数类型以及响应类型。使用的时候我们可以直接在组件中引用,也可将其封装在store的action中,将相关的store与接口关联起来。使用的时候我们直接在需要使用store数据的组件中引用并使用即可。
2025-07-10 16:59:20
379
原创 《Docker环境下的前后端分离部署与运维》课程脚本
先更新软件包安装Docker虚拟机运行、重启、关闭Docker虚拟机搜索镜像下载镜像查看镜像删除镜像运行容器查看容器列表停止、挂起、恢复容器查看容器信息删除容器数据卷管理网络管理避免VM虚拟机挂起恢复之后,Docker虚拟机断网文件中添加这个配置。
2025-07-10 16:53:43
322
原创 项目起步(小兔仙儿PC)
目的:使用vue-cli创建一个vue3.0项目。第一步:打开命令行窗口。第二步:执行创建项目命令行第三步:选择自定义创建第四步:选中vue-router,vuex,css Pre-processors选项第五步:选择vue3.0版本第六步:选择hash模式的路由第七步:选择less作为预处理器第八步:选择 standard 标准代码风格第九步:保存代码校验代码风格,代码提交时候校验代码风格第十步:依赖插件或者工具的配置文件分文件保存第十一步:是否记录以上操作,选择否。
2025-07-09 10:47:23
602
原创 项目介绍(小兔仙儿PC)
目的:了解下项目的基本功能。电商发展十余年,是个成熟的模式,小兔鲜儿是B2C电商平台,综合品类平台。平台理念:(品质)新鲜、(价格)亲民、(物流)快捷。总结:完成电商支付闭环。
2025-07-09 10:41:30
868
原创 MyBatis框架中Example类
Example.andIn():用于添加一个“in”条件,指定字段的值必须在给定的集合中。:用于添加一个“equal to”条件,指定字段的值必须等于给定的值。:用于添加一个“between”条件,指定字段的值必须在给定的范围之间。
2025-07-08 14:32:19
971
原创 Mybatis代码生成器Mybatis Generator (MBG)实战详解
本文我们主要实战Mybatis官方的代码生成器:Mybatis Generator(MBG),掌握它以后,可以简化大部分手写代码,我们只需要写复杂逻辑代码!创建与MySQL表对应的Java PO对象,字段一一对应;创建Mapper接口,和对应的XML映射文件(或注解)。首先是PO对象,我们往往创建与数据库表字段一一对应的PO对象;其次在Mapper里,通常都会写基本的增删改查代码。
2025-07-07 11:19:09
792
原创 Docker环境下的前后端分离部署与运维
先更新软件包安装Docker虚拟机运行、重启、关闭Docker虚拟机搜索镜像下载镜像查看镜像删除镜像运行容器查看容器列表停止、挂起、恢复容器查看容器信息删除容器数据卷管理网络管理避免VM虚拟机挂起恢复之后,Docker虚拟机断网文件中添加这个配置。
2025-07-06 14:13:16
433
原创 MQTT 客户端编程
具体步骤如下所示:1、初始化vue项目2、安装element plus3、导入课程资料中的MqttDemo.vue页面到components文件夹下4、更改App.vue页面代码如下所示。
2025-07-04 14:01:16
313
原创 【无标题】
通常情况下,认证只是验证了客户端的身份是否合法,而该客户端是否具备发布、订阅某些主题的权限,还需要由授权系统来判断。在 EMQX 中,授权是指对 MQTT 客户端的发布和订阅操作进行权限控制。授权检查器链:1、EMQX支持多种授权检查机制:基于ACL文件(默认配置)、基于内置数据库、基于MySQL进行授权、基于 MongoDB 进行授权 、基于 PostgreSQL 进行授权 、基于Redis进行授权、基于HTTP应用进行授权 …2、EMQX 支持用户通过配置多个授权检查器构成授权链。
2025-07-04 13:59:56
588
原创 MQTT进阶
QoS 0 是最低的 QoS 等级。QoS 0 消息即发即弃,不需要等待确认,不需要存储和重传,因此对于接收方来说,永远都不需要担心收到重复的消息。为了保证消息到达,QoS 1 加入了应答与重传机制,发送方只有在收到接收方的 PUBACK 报文以后,才能认为消息投递成功,在此之前,发送方需要存储该 PUBLISH 报文以便下次重传。
2025-07-04 13:43:29
577
原创 MQTT入门
EMQX,是一款实现了MQTT协议的,开源的MQTT消息代理软件。MQTT定义了消息通讯的规则和流程,而EMQX则是遵循这些规则的软件,使得设备能够依据MQTT协议进行有效通信。在新版本的EMQX中同时支持MQTT3.1.1协议和5.0协议。官网地址:https://www.emqx.com/zh其他代理软件:https://www.emqx.com/en/blog/the-ultimate-guide-to-mqtt-broker-comparison。
2025-07-04 12:43:05
898
原创 Docker部署Nacos v2.1.1
DockerDocker是一个容器化平台,允许开发者将应用程序及其依赖打包到轻量级、可移植的容器中。容器化技术:利用Linux内核的cgroups和namespaces实现资源隔离,确保应用在不同环境中运行一致性。快速部署与跨平台支持:容器镜像可在任何支持Docker的环境中运行,简化开发、测试到生产的全流程。轻量级与高效性:相比传统虚拟机,容器共享主机操作系统内核,启动更快且资源占用更低。典型应用场景包括本地开发环境搭建、持续集成/持续部署(CI/CD)及分布式应用部署。Nacos。
2025-07-03 14:43:10
819
原创 第二章:面向对象
面向对象是程序中一个非常重要的思想,它被很多同学理解成了一个比较难,比较深奥的问题,其实不然。面向对象很简单,简而言之就是程序之中所有的操作都需要通过对象来完成。一切操作都要通过对象,也就是所谓的面向对象,那么对象到底是什么呢?这就要先说到程序是什么,计算机程序的本质就是对现实事物的抽象,抽象的反义词是具体,比如:照片是对一个具体的人的抽象,汽车模型是对具体汽车的抽象等等。程序也是对事物的抽象,在程序中我们可以表示一个人、一条狗、一把枪、一颗子弹等等所有的事物。一个事物到了程序中就变成了一个对象。
2025-07-02 13:50:56
725
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人