喜提好人卡?混元模型模块独立维护与开源发布

news/2025/4/1 5:56:19/文章来源:https://www.cnblogs.com/guoxiaoyu/p/18789057

接着我们上次向Spring AI提交的混元模型模块,我已经完成了所有关于混元的聊天对接,并提交了相应的PR描述。提交后,荣获了一张“好人卡”,如图所示:

image

今天,我们决定将之前提交给Spring AI官方的PR重新拿出来,并准备将其独立维护在一个开源仓库中。做出这一决策的原因是Spring AI官方表示将不再继续维护这么多大模型。这一决定其实也有其合理性,因为Spring AI的核心目标是通过简化Java开发智能体的过程来提升开发效率,而不是承担维护多个大型模型的责任。这种偏离了最初目标的做法,可能会导致资源和精力的过度分散,本末倒置了。

好了,废话不多说,今天我们主要的目标是将相关的代码单独提取出来,并推送到maven中央仓库中,确保它可以被广泛使用和管理。

混元

最初我们打算将这个项目命名为spring-ai-tencent,但经过一番思考后,我们发现这个名字可能会带来一些误解。为了避免这种误解,同时确保名称更加简洁明了,我们决定继续使用spring-ai-hunyuan这个名称。这个名称不仅更容易记住,而且不会引发额外的混淆,

提取代码

第一步就是将写入到Spring AI中的混元对接代码都提取出来,最后结果如图所示:

image

核心模块(core)主要负责与混元的API对接,提供基础的接口和功能。Autoconfigure模块则实现了自动依赖注入功能,使得项目中的相关依赖能够自动装配并正确运行。Starter模块则是专为其他项目提供的依赖包,通过引入Starter模块,其他项目能够快速集成并使用混元模型。

简单测试一下,看下测试用例是否都正常通过了。如图所示:

image

这个过程相对繁琐且没有太多技术含量,因此直接跳过。值得一提的是,我将项目中的所有包名都统一更改为 io.github.studiousxiaoyu,主要是出于发布到 Maven 中央仓库的考虑。由于在向 Maven 仓库提交时,包名必须遵循一定的规范,因此不可以随意命名,后续会详细解释这一点。

注册mvn账户

接下来,我们需要进行 Maven 账户的注册。可以通过以下官方链接进行注册:https://central.sonatype.com/

在注册过程中,只需根据官方页面提供的详细指引进行操作即可。由于注册步骤非常直观且有明确的指导,因此在这里就不再详细说明了。

Namespace

接着,我们就需要弄一个命名空间专门存储我们的开源代码,如图所示:

image

这里你可以有自己的域名也可以,为了方便我这里直接使用的github仓库地址,gitee也是可以的。如图所示:

image

添加后,他会给你一长串的id,就是我打马赛克的地方。

image

开源仓库

然后,你将这一长串id复制出来,去自己的github仓库创建一个公共开源的仓库即可。如图所示:

image

这里不用添加任何文件,空仓库也是没问题的。主要就是他们在验证的时候,看有没有这个仓库地址而已。如图所示:

image

最后,我们稍等一会儿,他就会验证成功了,如图所示:

image

秘钥信息

前提准备工作已经顺利完成,接下来只需确保你的本地 Maven 环境中配置好一些必要的秘钥信息,主要包括两个关键部分:GPG 密钥和 Maven 账户密码。这是官方要求的必要步骤,只有配置齐全后,才能顺利进行后续的发布或部署操作。

Gpg

先来申请复杂的gpg,本地必须安装下这个软件:https://gnupg.org/download/index.html#sec-1-2

下载的时候,如果有钱就捐,没钱就如图所示:

image

安装好 GPG 后,由于安装路径没有添加到环境变量中,因此我们需要手动找到 GPG 的安装位置。比如:E:\Program Files (x86)\GnuPG\bin。你可以根据实际安装位置进行调整。

打开cmd命令面板,我们需要生成自己的私钥和公钥:

gpg --gen-key

按照指示创建完成后,再使用命令分发生成的id即可:

gpg --keyserver keyserver.ubuntu.com --send-keys 生成的id

接着在setting.xml中写好自己写的秘钥,注意不是生成的id。

<server><id>gpg.passphrase</id><passphrase>秘钥</passphrase>
</server>

gpg.passphrase是固定的,写好后,进行deploy时会校验这个值。你不用修改成其他的id

如果你没配置这个字段值的话,每次deploy时都会提示如下弹窗让你输入。如图所示:

image

mvn账户秘钥

在进行申请之前,首先需要在我们项目的 pom.xml 依赖文件中配置好该插件的信息。在配置时,特别需要注意 publishingServerId 属性中的值是可以根据需要进行修改的。具体修改成什么值,需要确保与 Maven 中的 settings.xml 配置文件中的相关值一致。

<build><plugins><plugin><groupId>org.sonatype.central</groupId><artifactId>central-publishing-maven-plugin</artifactId><version>0.7.0</version><extensions>true</extensions><configuration><publishingServerId>central</publishingServerId></configuration></plugin></plugins>
</build>

那么mvn中的setting配置文件写的秘钥,我们也需要申请,官方地址如下:https://central.sonatype.com/account

点击如图所示,生成相关的秘钥信息。如账户和密码。

image

紧接着我们就需要在mvn中的setting配置文件添加如下信息:

<settings><servers><server><id>central</id><username><!-- your token username --></username><password><!-- your token password --></password></server></servers>
</settings>

没错的,这里的id对应的就是pom文件中的publishingServerId值。

发布

在完成所有相关信息的配置后,我们就可以执行 mvn deploy 指令来开始部署操作。此时,系统将进行一些处理,稍等片刻,当控制台显示部署成功的消息后,我们就可以前往以下网址:https://central.sonatype.com/publishing/deployments

在这个页面上查看我们刚刚推送的 Maven 依赖包是否成功上传并且已被正确发布。效果如图所示:

image

小结

在本篇文章中,我们详细介绍了将混元模型模块从Spring AI迁移并独立维护的全过程。

首先,介绍了项目命名的思考与调整,选择了更符合开源规范的spring-ai-hunyuan作为最终名称。接着,我们展示了如何提取并整理代码,包括核心模块、自动配置模块和Starter模块的构建。重点还包括了如何在Maven中央仓库上注册账户、配置GPG密钥、申请Maven账户秘钥等细节步骤,确保代码能够顺利发布和管理。

最终,我们通过执行 mvn deploy 命令完成了依赖包的上传,成功将项目推送至Maven中央仓库,为广大开发者提供了一个稳定且可扩展的开源解决方案。

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

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

相关文章

VMware Aria Automation 8.18.1 新增功能简介

VMware Aria Automation 8.18.1 新增功能简介VMware Aria Automation 8.18.1 - 多云基础架构自动化平台 Multi-Cloud Infrastructure Automation Platform 请访问原文链接:https://sysin.org/blog/vmware-aria-automation/ 查看最新版。原创作品,转载请保留出处。 作者主页:…

最小二乘及最小二乘法系统辨识

目录一般最小二乘法加权最小二乘递推最小二乘 一般最小二乘法 无需每次对整体数据进行最小二乘估计,利用上次计算的值与当前数据融合计算,获取计算结果。本质上是对老的计算结果修正的方式,节省计算步骤,降低运算量,提升计算的效率。 若辨识模型: \[z_{(k)}={h_{(k)}}^T\…

氩气保护焊接气体流量控制

该节气装置通过以下方法,为您减少30%-50%的焊接气体的用量。在整个焊接过程中,气流与焊接电流自动同步调节。 “较大电流 — 较多气体/较小电流 — 较少气体”极高速气阀即使在焊接停止时间很短的情况下,也可开闭。通过持续的气体保护以及预先“编程”,脉冲气体可进一步减小…

2025.3.29日 清华大学-郝泽旭 的模拟赛

2025.3.29日 清华大学-郝泽旭 的模拟赛原题可以转化为给定了 \(k\) 个起点,求 \(k\) 个终点,使得路径两两无公共点的所有路径之和的最大值。 注意到先上再下的路径可以拆成两部分,即从关键点开始先向上到达一个点后再向下可以看作一条从关键点向上的路径与一条从非关键点向上…

DDL转换,一键导出表结构,生成DDL语句【转载】

源代码:https://gitee.com/wsitm/RuoYi-RDBMS 一、驱动管理驱动管理功能,用户能够上传并配置各类数据库驱动包。无论是常见的MySQL、Oracle、PostgreSQL、SQL Server,还是更多小众的数据库类型,只需上传相应的驱动包,即可迅速完成配置。 这一功能不仅简化了驱动安装与更新…

库卡机器人维修KSS26045硬件错误维修

库卡机器人在使用过程中,可能会遇到常见的KSS26045硬件故障,这些机器人故障大致可以归结为以下几种类型: 先是电源故障。一旦电源系统出现问题,库卡机器人可能会面临无法启动或无法维持正常运行的困境。为了诊断电源故障,可以利用万用表等专业工具来精确测量电源的输出电压…

PHP历理 精准处理数学表达式中的小数末尾零

<?php /*** 精准处理数学表达式中的小数末尾零* @param string $expression 原始数学表达式* @return string 处理后的规范表达式*/ function formatMathExpression(string $expression): string {// 正则匹配所有小数(包含整数部分和小数部分)return preg_replace_callb…

判断 Python 代码是不是 AI写的几个简单方法

作者:Laurel W来源:Adobe作为一名数据科学和数学老师,我其实不介意我的学生使用像 ChatGPT 这样的 LLM,只要它是用来辅助他们学习,而不是取代学习过程。加州理工学院的申请文书指南启发了我为编程和机器学习课制定 AI 使用政策: 哪些是加州理工申请文书中不道德的 AI 使用…

Golang学习Ⅱ

iota,函数多返回值,init函数,import导包 常量定义方式:const a int = 10; const{ a=10 b=20 }1 const{ 2 BeiJing = iota*10 //iota为0 3 ShangHai 4 NanJing 5 } //使用const定义枚举,BeiJing为0,ShangHai为10,NanJing为20View Code

SpringBoot整合RabbitMQ--Direct和Topic模式

一.Direct模式 这几个模式使用SpringBoot的整合和前面使用源生Java整合其实是差不多的,故而步骤就不再详细赘述了,直接先导入依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId&g…

CMS和G1的区别

悲观者从机会中看到困难。乐观者从困难中看到机会。 ——温斯顿丘吉尔区别一:使用的范围不一样:CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用。 G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用区别二:STW的时间:CMS收集器以最小的停…

nfls 游记。

省流:三场模拟赛。rk1(2) rk3 rk4Day 1 3.26: 在前面的博客里面。 下午补了 noip2024 T1 。我怎么还是不会写????? Day 2 3.27: 没有模拟赛。组合数学专题。 写了一堆数学题。 中午逃离校园去吃了饭,终于有饭吃了!!!!111 晚上打了一场比赛,后三题全拼的暴力 /q…