springAI孵化(二)

目录

一、spring AI 目的

二、spring AI 来源

三、sprig AI 是什么?

四、spring AI中的 概念

4.1、模型(Models)

4.2、提示(Prompts)

4.3、提示模板(Prompt Templates)

4.4、令 牌(Tokens)

4.5、输出解析(Output Parsing)

4.6、链接调用(Chaining Calls)

4.7、将数据引入 AI 模型

4.8、检索增强生成

4.9、评估 AI 响应

五、spring AI应用

5.1、配置

5.1.1、OpenAI

5.1.2、Azure OpenAI

5.1.3、Ollama

5.1.4、HuggingFace


一、spring AI 目的

Spring AI 项目旨在简化包含人工智能功能的应用程序的开发,而不会产生不必要的复杂性。

二、spring AI 来源

  1. Spring AI 项目是一个实验性项目,旨在使用 Spring 框架的通用概念创建人工智能(AI)应用程序。它集成了 Azure OpenAI 和 OpenAI 作为后端,支持内容生成、代码生成、语义搜索和摘要等用例。
  2. 从历史上看,Python 曾常用于访问以 C 和 C++ 等语言编写的AI算法,但现在生成式AI(如OpenAI的ChatGPT)使得使用HTTP访问预训练模型更加容易,使Java等编程语言更容易与AI算法交互,AI 不再需要数据科学家来收集数据和训练模型。。
  3. 但是,用于 AI 解决方案(如 OpenAI 和 Azure OpenAI)的各种 Java 客户端 API 不同,这使得在这些解决方案之间切换变得更加困难
  4. Spring AI在收到Python库的启发 提供了一个抽象层,构建在Python库LangChain和LlamaIndex的客户端API之上,以简化不同Java客户端API之间的切换。它遵循Spring项目的设计价值,如模块化、可扩展性和数据源集成。
  5. Spring AI 提供多种功能,包括通用API与AI模型的集成、提示模板用于与AI模型交互、支持链接调用以解决更复杂的问题、输出分析功能以将输出转换为CSV或JSON格式、学习特定对话风格、以及测试评估答案以保持项目质量。

三、sprig AI 是什么?

该项目虽然从 LangChain 和 LlamaIndex  [ˈlɑ:mə] 等著名的 Python 项目中汲取灵感,但 Spring AI 并不是这些项目的直接移植。 该项目的成立相信,下一波生成式人工智能应用程序将不仅适用于 Python 开发人员,而是将在许多编程语言中无处不在。

Spring AI 的核心是提供抽象,这些抽象是开发 AI 应用程序的基础。 这些抽象具有多种实现,只需最少的代码更改即可轻松交换组件。 例如,Spring AI 引入了 AiClient 接口,其中包含 OpenAI 和 Azure(ˈæʒə(r) ai re(翘舌)) OpenAI 的实现。

除了这些核心抽象之外,Spring AI还旨在提供更高级别的功能来解决常见的用例,例如“对文档的问答”或“与文档聊天”。 随着用例复杂性的增加,Spring AI 项目将与 Spring 生态系统中的其他项目集成,例如 Spring Integration(ˌɪntɪˈɡreɪʃ(ə)n/)、Spring Batch(bætʃ) 和 Spring Data。

为了简化设置,Spring Boot Starters 可用于帮助设置基本的依赖项和类。 此外,还有一组示例应用程序可帮助您探索项目的功能。 最后,新的 Spring CLI 项目还使您能够快速开始使用新项目或向现有应用程序添加 AI 功能的命令。

spring boot new ai 
spring boot add ai

四、spring AI中的 概念

4.1、模型(Models)

人工智能模型是旨在处理和生成信息的算法,通常模仿人类的认知功能。 通过从大型数据集中学习模式和见解,这些模型可以进行预测、文本、图像或其他输出,从而增强跨行业的各种应用。

有许多不同类型的 AI 模型,每种模型都适合特定的用例。 虽然 ChatGPT 及其生成式 AI 功能通过文本输入和输出吸引了用户,但许多模型和公司提供多样化的输入和输出。 在 ChatGPT 出现之前,很多人都对 Midjourney 和 Stable Diffusion 等文本到图像生成模型着迷。

下表根据输入和输出类型对多个模型进行了分类。

Spring AI 最初的重点是处理语言输入并提供语言输出的模型,最初是 OpenAI + Azure OpenAI。 上表中的最后一行接受文本作为输入和输出编号,通常称为“嵌入文本”,表示 AI 模型中使用的内部数据结构。 Spring AI 支持嵌入以支持更高级的用例。

GPT 等模型的与众不同之处在于它们的预训练性质,正如 GPT 中的“P”所示——聊天生成式预训练转换器。 这种预训练功能将 AI 转变为通用的开发人员工具,不需要广泛的机器学习或模型训练背景。

4.2、提示(Prompts)

提示是指导 AI 模型生成特定输出的基于语言的输入的基础。 对于那些熟悉 ChatGPT 的人来说,提示可能看起来只是输入到发送到 API 的对话框中的文本。 然而,它包含的远不止于此。 在许多 AI 模型中,提示的文本不仅仅是一个简单的字符串。

ChatGPT 的 API 在一个提示中有多个文本输入,每个文本输入都被分配了一个角色。 例如,存在系统角色,它指示模型如何行为并设置交互的上下文。 还有用户角色,通常是来自用户的输入。

制作有效的提示既是一门艺术,也是一门科学。 ChatGPT 专为人类对话而设计。 这与使用SQL之类的东西来“提出问题”有很大的不同。 一个人必须与人工智能模型进行交流,类似于与另一个人交谈。

这种交互方式的重要性如此之大,以至于“提示工程”一词已经成为一门独立的学科。 有一系列新兴的技术可以提高提示的有效性。 花时间制作提示可以大大提高最终的输出。

分享提示已成为一种公共实践,并且正在就此主题进行积极的学术研究。 例如,与SQL相比,创建有效的提示是多么违反直觉,最近的研究论文发现,您可以使用的最有效的提示之一以短语开头,“深呼吸,逐步解决这个问题”。 这应该让你知道语言是多么重要。 我们还不完全了解如何最有效地利用这项技术的先前迭代,例如 ChatGPT 3.5,更不用说正在开发的新版本了。

  1. 提示是一种基于语言的输入,用于引导人工智能模型生成特定输出。它不仅仅是文本字符串,对于ChatGPT等模型,提示可以包含多个文本输入,并分配给不同的角色,如系统角色和用户角色。
  2. 制作有效的提示是一门艺术和科学,它需要考虑如何与人工智能模型进行交互,类似于与另一个人进行对话,而不仅仅是提出问题。这种交互方式的重要性导致了"提示工程"成为一个独立的学科。
  3. 研究表明,创建有效的提示可以大大提高最终生成的输出。目前,有许多新兴技术旨在提高提示的有效性,并正在积极研究这一主题。
  4. 分享提示已成为一种公共实践,学术界也在积极研究此领域。最近的研究发现,一个有效的提示可能以不太直观的方式开始,例如以短语"深呼吸,逐步解决这个问题"为开头,强调了语言在提示中的重要性。
  5. 尽管已经有一些迭代的模型(如ChatGPT 3.5)存在,但我们仍然没有完全理解如何最有效地利用提示技术,尤其是考虑到正在开发的新版本。

4.3、提示模板(Prompt Templates)

创建有效的提示涉及建立请求的上下文,并将请求的某些部分替换为特定于用户输入的值。

此过程利用传统的基于文本的模板引擎进行提示创建和管理。 Spring AI 为此使用了 OSS 库 StringTemplate。

例如,考虑简单的提示模板:

Tell me a {adjective} joke about {content}.
Copied!

在 Spring AI 中,提示模板可以比作 Spring MVC 架构中的“视图”。 提供模型对象(通常为 java.util.Map,用于填充模板中的占位符)。 “rendered”字符串成为提供给 AI 模型的 Prompt 的内容。

发送到模型的 Prompt 的特定数据格式存在相当大的差异。 提示最初是简单的字符串,后来发展到包含多条消息,其中每条消息中的每个字符串都表示模型的不同角色。

4.4、令 牌(Tokens)

令牌是 AI 模型工作方式的构建块。 在输入时,模型将单词转换为标记,在输出时,它们将标记转换回单词。

在英语中,一个标记大致相当于一个单词的 75%。作为参考,莎士比亚的全集总计约 900,000 字,相当于大约 1 万个代币。

也许更重要的是代币 = $。

在托管 AI 模型的上下文中,费用由使用的令牌数量决定。输入和输出都会影响总令牌计数。

此外,模型还受令牌限制的约束,这些限制限制了单个 API 调用中处理的文本量。 此阈值通常称为“上下文窗口”。模型不会处理任何超过此限制的文本。

例如,ChatGPT3 有 4K 代币限制,而 GPT4 提供不同的选项,例如 8K、16K 和 32K。 Anthopic 的 Claude AI 模型具有 100K 代币限制,Meta 最近的研究产生了 1M 代币限制模型。

要用 GPT4 总结莎士比亚的作品,您需要设计软件工程策略来切碎数据并在模型的上下文窗口限制内呈现数据。 这是 Spring AI 项目可以帮助您解决的一个领域。

4.5、输出解析(Output Parsing)

传统上,AI 模型的输出以 的形式出现,即使您要求回复采用 JSON 格式。 它可能是正确的 JSON,但它不是 JSON 数据结构。它只是一个字符串。 此外,在提示中询问“for JSON”并不是 100% 准确的。java.util.String

这种复杂性导致了一个专门领域的出现,该领域涉及创建提示以产生预期的输出,然后将生成的简单字符串解析为可用于应用程序集成的可用数据结构。

输出解析采用精心设计的提示,通常需要与模型进行多次交互才能实现所需的格式设置。

这一挑战促使 OpenAI 引入了“OpenAI 函数”,以精确地从模型中指定所需的输出格式。

4.6、链接调用(Chaining Calls)

链是一个概念,表示对 AI 模型的一系列调用。 它使用一个调用的输出作为另一个调用的输入。

通过将调用链接在一起,您可以通过组合多个链的管道来支持复杂的用例。

4.7、将数据引入 AI 模型

如何为AI模型配备未经训练的信息?

需要注意的是,GPT 3.5/4.0 数据集仅持续到 2021 年 650 月。 因此,该模型会说它不知道该日期之后需要知识的问题的答案。 一个有趣的琐事是,这个数据集大约是~<>GB。

有两种技术可用于自定义 AI 模型以合并数据:

  1. 微调:这种传统的机器学习技术涉及定制模型并更改其内部权重。 然而,对于机器学习专家来说,这是一个具有挑战性的过程,并且由于 GPT 的大小,对于像 GPT 这样的模型来说,这是一个非常耗费资源的过程。此外,某些型号可能不提供此选项。
  2. 提示填充:更实用的替代方法是将数据嵌入到提供给模型的提示中。给定模型的令牌限制,需要技术在模型的上下文窗口中显示相关数据。 这种方法通俗地称为“填充提示”。

Spring AI 库可帮助您实现基于“提示填充”技术的解决方案,否则称为检索增强生成

4.8、检索增强生成

一种称为检索增强生成 (RAG) 的技术已经出现,以解决将相关数据整合到提示中以实现准确 AI 模型响应的挑战。

该方法涉及批处理风格的编程模型,其中作业从文档中读取非结构化数据,对其进行转换,然后将其写入向量数据库。 概括地说,这是一个 ETL(提取、转换和加载)管道。 向量数据库将用于RAG技术的检索部分。

作为将非结构化数据加载到向量数据库的一部分,最重要的转换之一是将原始文档拆分为更小的部分。 将原始文档拆分为更小部分的过程有两个重要步骤。

  1. 将文档拆分为多个部分,同时保留内容的语义边界。 例如,对于包含段落和表格的文档,应避免将文档拆分在段落或表格的中间。 对于代码,请避免在方法实现的中间拆分代码。
  2. 将文档的各个部分进一步拆分为大小仅占 AI 模型令牌限制的一小部分的部分。

RAG 的下一阶段是处理用户输入。 当 AI 模型要回答用户的问题时,该问题以及所有“相似”文档片段将被放入发送到 AI 模型的提示中。 这就是使用矢量数据库的原因,它非常擅长查找“相似”的内容。

在实现 RAG 时使用了几个概念。 这些概念映射到 Spring AI 中的类。 下面简要介绍这些内容

  • DocumentReader这是一个 Java 功能接口,负责从数据源加载常见的数据源包括 PDF、Markdown 和 JSON。List<Document>
  • Document数据源的基于文本的表示形式,其中还包含用于描述内容的元数据。
  • DocumentTransformer这负责以各种方式处理数据,例如将文档拆分为更小的部分或向 .Document
  • DocumentWriter这允许您将文档持久化到数据库中,在 AI 堆栈中最常见,即矢量数据库。
  • Embedding这是您的数据表示形式,矢量数据库使用它来计算用户查询与相关文档的“相似性”。List<Double>

4.9、评估 AI 响应

根据用户请求有效评估人工智能系统的输出对于确保最终应用程序的准确性和有用性非常重要。 一些新兴技术允许将预训练模型本身用于此目的。

此评估过程涉及分析生成的响应是否与用户的意图和查询上下文一致。相关性、连贯性和事实正确性等指标用于衡量 AI 生成的响应的质量。

一种方法涉及呈现用户的请求和 AI 模型对模型的响应,查询响应是否与提供的数据一致。

此外,利用媒介数据库中存储的信息作为补充数据可以加强评估过程,有助于确定反应相关性。

Spring AI 项目目前提供了一些非常基本的示例,说明如何以提示的形式评估响应以包含在 JUnit 测试中。

五、spring AI应用

上面介绍了spring AI他是集成了 Azure OpenAI 和 OpenAI 作为后端。所以有两种api方式。

5.1、配置

5.1.1、OpenAI

首先需要在创建账户在 OpenAI Signup 创建一个帐户,并在 API Keys 中生成令牌。

Spring AI 项目定义了一个名为 的配置属性,应将其设置为从 获取的值。

spring.ai.openai.api-key API Key openai.com

导出环境变量是设置该配置属性的一种方法。

export SPRING_AI_OPENAI_API_KEY=<INSERT KEY HERE>

5.1.2、Azure OpenAI

获取 Azure OpenAI 和 Azure 门户上的“Azure OpenAI 服务”部分。endpointapi-key

Spring AI 项目定义了一个配置属性,该属性应设置为从 Azure 获取的值。 此外,还存在一个名为 configuraiton 的属性,应将其设置为在 Azure 中预配模型时获取的终结点 URL。

spring.ai.azure.openai.api-keyAPI Keyspring.ai.azure.openai.endpoint

导出环境变量是设置这些配置属性的一种方法。

export SPRING_AI_AZURE_OPENAI_API_KEY=<INSERT KEY HERE>
export SPRING_AI_AZURE_OPENAI_ENDPOINT=<INSERT ENDPOINT URL HERE>

5.1.3、Ollama

1、简介 Ollama 是一款命令行工具,可在 macOS 和 Linux 上本地运行 Llama 2、Code Llama 和其他模型 旨在帮助您在本地运行大型语言模型。使用 Llama,您可以根据需要轻松自定义和创建语言模型。 Llama 允许你在不依赖基于云的平台的情况下利用 AI 的力量。 在本地启动并运行大型语言模型。

2、下载安装 目前适用于 macOS 和 Linux  ;Windows 即将推出

3、引入架包

<dependency>  

<groupId>org.springframework.ai</groupId>  

<artifactId>spring-ai-ollama</artifactId>  

<version>0.8.0-SNAPSHOT</version>

</dependency>

5.1.4、HuggingFace

1、简介 Hugging Face是一个提供自然语言处理(NLP)模型和工具的平台,它为研究人员和开发者提供 了许多预训练的模型、数据集和相关工具。以推动自然语言处理技术为目标的平台。

2、配置 HUGGINGFACE_API_KEY=your_api_key_here 获取推理终端节点的终端节点 URL。可以在此处的推理终端节点的 UI 上找到它。 https://huggingface.co/spaces

3、引入架包

<dependency>    

<groupId>org.springframework.ai</groupId>    

<artifactId>spring-ai-huggingface</artifactId>    

<version>0.8.0-SNAPSHOT</version>

</dependency>

底层封装了Huggingface的AI客户端

docs/api.md · Gitee 极速下载/ollama - Gitee.com

ollama/docs/api.md at main · jmorganca/ollama (github.com) api

note:这是2023年10月推出的第一版,最新版本以及更新非常丰富,24年4月开始引入国内模型,后续继续整理。

aigc基础概念(一)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

你的企业“赚钱能力”,银行怎么看?聊聊税贷与票贷背后的门道

大家都听过“税贷”和“票贷”吧&#xff1f;特别是这两年&#xff0c;国家扶持中小微企业&#xff0c;这些名词更是火得不行。但你知道吗&#xff0c;税贷和票贷并不是只看税和票那么简单。今天&#xff0c;咱就来聊聊这背后的门道&#xff08;最后附上&#xff1a;企业信用贷…

ChatGPT的Mac客户端正式发布了!Mac用户有福了

ChatGPT的Mac客户端正式发布了&#xff01;Mac用户有福了 &#x1f389; 大家好&#xff0c;我是猫头虎&#xff0c;科技自媒体博主。今天我带来了一个超级重磅的消息 &#x1f4e2;&#xff0c;就是 ChatGPT 的客户端终于来了&#xff01;这对我们所有 Mac 用户&#xff0c;尤…

可穿戴式手持气象仪

TH-SQ17在快节奏的现代生活中&#xff0c;我们越来越依赖各种智能设备来辅助我们的决策和行动。其中&#xff0c;气象信息的重要性不言而喻&#xff0c;它不仅关系到我们的出行安全&#xff0c;更影响着我们的日常生活安排。如今&#xff0c;一款革命性的产品——可穿戴式手持气…

GPT-4o背后的秘密:深入了解它的运作方式

GPT-4o是OpenAI最新推出的多模态大模型&#xff0c;它在语言处理、图像识别和音频处理方面都实现了重大突破。GPT-4o的"o"代表"omni"&#xff0c;意为全能&#xff0c;能够处理文本、音频、图像和视频输入&#xff0c;是一种高度集成的神经网络。这篇文章将…

精打细算用好 LLMs :LLM 落地应用成本及响应延迟优化

前言 高成本和延迟是将大语言模型应用于生产环境中的主要障碍之一&#xff0c;二者均与提示词信息的体量&#xff08;prompt size&#xff09;紧密相连。 鉴于大语言模型&#xff08;LLM&#xff09;展现出极强的广泛适用性&#xff0c;不少人视其为解决各类问题的灵丹妙药。…

计算机网络 交换机的基本配置

一、理论知识 1.三种模式&#xff1a; ①用户模式&#xff1a;当登录路由器后&#xff0c;系统自动进入用户EXEC命令模式。 例如&#xff1a; Router> 在用户模式状态下&#xff0c;用户只能查看路由器的连接状态和基本信息&#xff0c;访问其他网络和主机&#xff0c…

模拟面试之外卖点单系统(高频面试题目mark)

今天跟大家分享一个大家简历中常见的项目-《外卖点单系统》&#xff0c;这是一个很经典的项目&#xff0c;有很多可以考察的知识点和技能点&#xff0c;但大多数同学都是学期项目&#xff0c;没有实际落地&#xff0c;对面试问题准备不充分&#xff0c;回答时抓不到重点&#x…

ChatGPT只是开胃菜,AIGC风口真的来了!

去年OpenAI发布的ChatGPT在全球疯狂刷屏成为一款现象级产品&#xff0c;并成功出圈受到IT、新闻媒体、学术研究、教育等领域的广泛好评和应用。甚至有一位美国学生用ChatGPT 写论文拿下全班最高分&#xff0c;受到了全球媒体的热议。 比尔盖茨曾在今年“Reddit AMA大会”表示&…

计算机毕业设计Thinkphp/Laravel智能道路交通管理系统4ir8r

Laravel非常的简洁并且是开源的&#xff0c;Laravel 是一个具有表现力、优雅语法的 Web 应用程序框架. Laravel 是构建现代全栈 Web 应用程序的最佳选择. 它的语法更富有表现力&#xff0c;拥有高质量的文档和丰富的扩展包&#xff0c;技术上它有Bundle扩展包、Eloquent ORM、反…

红酒献爱心:品味活动的醇香,传递爱心的力量

在繁华的都市背后&#xff0c;总有一些默默付出的力量&#xff0c;它们如涓涓细流&#xff0c;汇聚成爱的海洋。红酒&#xff0c;这一优雅的饮品&#xff0c;在追求品质与品味的同时&#xff0c;也踏上了活动之路&#xff0c;以它不同的方式传递着爱心的味道。今天&#xff0c;…

基于高度的纹理混合shader

基于高度的纹理混合shader 原文&#xff1a;基于高度的纹理混合shader - 知乎 (zhihu.com) 最近支持一个使用unity2021的项目&#xff0c;发现urp自带的Terrain/Lit shader已经自带高度混合了&#xff0c;看了下和我当初写的那个基本差不多&#xff0c;感觉稍微要比我的严谨一…

BOOT0 和BOOT1 直接接地还是经过电阻接地

STM32F103 配置BOOT0 和BOOT1 直接接地还是经过电阻接地&#xff1f; 问&#xff1a;我的STM32F103RET6 挂了&#xff0c;原因是BOOT0 和BOOT1 直接接地导致的&#xff0c;很是奇怪&#xff0c;大家有没有遇到啊&#xff1f; 答&#xff1a;STM32 的硬件设计指导也是建议BOOT0、…

Vue2中的render函数

Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中&#xff0c;你真的需要 JavaScript 的完全编程的能力。这时你可以用render渲染函数&#xff0c;它比模板更接近编译器 。 在Vue2中&#xff0c;render函数是一个可选的、用于生成虚拟DOM的特殊函数。它是Vu…

Leetcdoe-Day19-代码随想录-栈与队列-1047-150

1047. 删除字符串中的所有相邻重复项 题目链接 题解&#xff1a;简单题&#xff0c;最后需要注意反转字符串即可。 class Solution { public:string removeDuplicates(string s) {stack<char> z;for(int i0;i<s.size();i){if(!z.empty()){int topz.top();if(tops[i]…

VTable导出当前页和导出所有页数据

表格导出的是当前显示的表格&#xff0c;如果是分页表格想导出全部的数据话。有两种方法可以实现 表格先显示的全量数据&#xff0c;导出后再恢复当前页。新建一个隐藏的表格实例显示全量数据导出这个隐藏的表格实例。 下面是全量代码&#xff1a; <template><div&…

使用North自部署图床服务

图床 图床可以把图片转为链接&#xff0c;从而方便我们书写、分享博客&#xff0c;目前图床主要分为以下几类: 利用 Git 仓库存储对象存储&#xff08;OSS、COS、七牛云等&#xff09;免费公共图床&#xff08;SM.MS、聚合图床、ImgTP、Postimage等&#xff09; 但上述图床都…

2024软件设计师笔记之考点版(一考就过):11-25

软件设计师之一考就过:成绩版 考点11:防火墙、入侵检测 真题1:(专家系统、模型检测、简单匹配)属于入侵检测;而漏洞扫描不属于。 真题2:防火墙特性包括(控制进出网络的数据包和数据流向、提供流量信息的日志和审计、隐藏内部IP以及网络结构细节),但不包括提供漏洞扫…

恋爱脑?No,爱情保镖还得靠AI!

本文由 ChatMoney团队出品 你是否曾经想过&#xff0c;为什么我们会在恋爱中变得如此“上头”&#xff0c;仿佛整个世界都围绕着那个TA旋转? 恋爱脑&#xff0c;通常是指一个人在恋爱中过度投入、过度依赖对方&#xff0c;甚至无法自拔的心理状态。 你会发现自己时时刻刻都在…

屏幕翻译下载哪个软件好?好用的屏幕翻译推荐

想象一下&#xff0c;当我们在阅读外文文档或是观看外语电影时&#xff0c;如果能有一款翻译工具同步提供译文&#xff0c;那将是多么令人愉悦的体验&#xff01; 如果这种翻译服务能够在不影响其他应用的情况下进行&#xff0c;那就是double快乐了。 其实&#xff0c;现在要…

分享一套基于SSM的美食推荐管理系统(源码+文档+部署)

大家好&#xff0c;今天给大家分享一套基于SSM的美食推荐管理系统 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringSpringMvcMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 博主介绍&#xff1a; 一名Java全栈工程师&#xff0c;专注于Jav…