龙空技术网

开发日记:千帆大模型的JAVA调用

一条鱼o_o 68

前言:

目前同学们对“java连连看”可能比较着重,我们都想要了解一些“java连连看”的相关文章。那么小编在网络上网罗了一些关于“java连连看””的相关内容,希望小伙伴们能喜欢,朋友们一起来学习一下吧!

上篇文章说到GPT3.5的调用,小编就一阵脑壳疼。

开发过程中要不断思考怎么一个开发原理。

好不容易搞明白了AI大模型调用原理,以为套个壳又可以水一遍国内的AI大模型调用的文章。

千帆大模型又给我上了一课。

尤其是开发文档,愣是让我从头脑清醒看到一篇头脑空白。

再从一片空白,到一脸懵逼。

小编只想说,太难了。

咸鱼的生活,除了暴晒就是暴雷。

说好AI大模型的调用就是模仿HTTP请求呢。

说好的就是处理请求和响应的数据呢。

工作量莫名其妙的就多起来了。

而且又是为什么。

一向乐观的小编,文风大改,牢骚漫天。

这就要请各位小伙伴跟随小编的脚步一同回到今天早上的九点十五时分。

至暗时刻:世有伯乐,然后才有千里马,千里马常有,而伯乐不常有。

距离上篇文章发文过了两天时间,小编每天过得都是那叫一个美滋滋。

放空自己大脑,想睡多久就睡多久。

但好景不长,一大早上逛了圈求职软件,不出意料,没有一个HR鸟我。

宝宝的心拔凉拔凉。

民办二本的“含妈量”已达顶峰。

当即我从床上蹦起一尺多高,啪的一声,吓得还在熟睡的室友抬头和我来了个面面相觑。

小编更是连连喊出我命由我不由天。

大楚兴,小编王。

王侯将相宁有种乎。

一阵阵的激昂胡言之后,没有一点睡意,赤脚从床上跳了下去。

在众室友一阵“神金”的夸赞下,打开了积灰的电脑,准备大干一场。

人生低落的时刻,那就要做自己拿手的事找回信心。

小编第一想到的就是套壳调用国内AI大模型。

反正调用的工作量在上篇文章已经完成的大差不差,本着套一套还能用的心态。

我直接开始Ctrl+c,Ctrl+v。

不过在这之前。

还得精心挑选一下。

一番苦心寻找下,找到了某度下的AI大模型,也就是文心一言的大产房——千帆大模型。

在玲琅满目的产品中,我一眼就相中了Yi_34_Chat这款产品。

只因两个绿色标识的免费二字,深得我心,抚慰了我那无处安放的灵魂。

清凉了我一整个盛夏。

宿舍吱吱作响的风扇,好像那么一刻不吵了。

安静的有点像女孩子。

甚至还有一点好听。

正当我打开它的开发文档,试图找到KEY和URL两个关键值调用,我惊讶的发现,KEY值被一分为二了。

摆放的位置也不是在Header中的Authorization里面,而是放到Query里面了。

也就是URL的后面,类似【URL?token=KEY】这种形式。

以及请求体Body需要携带的参数变多了,请求响应返回的数据格式也变了很多。

无形中工作量增加了不少。

特别是有个基于AK/SK认证机制,更是看的我云里雾里。

而以上变化,请允许我为新来的小伙伴解释解释,请老鸟闪过。

我的AI大模型JAVA调用实现原理是基于模仿HTTP请求。

要了解以上专业名词,就要先知道什么是HTTP请求,我又为什么要模仿HTTP请求调用AI大模型。

HTTP请求是网络发起的称呼,而网络发起遵守的协议就是HTTP协议,是一种网络发起的一种标准。

因为它遵守的是HTTP协议,就把这种网络请求叫做HTTP请求,只是一种称呼的变化,原则上可以随意叫xxx请求,本质是网络请求。

类似我们平常出门,旅游,工作,学习。

都是出门。

但是旅游的遵守了娱乐的协议,叫做为了娱乐出门,工作的遵守了生活的协议,叫做为了生活出门,本质是出门了。

HTTP请求也是如此,遵守了HTTP协议,实际就是网络请求。

网络请求就是传输数据,数据也不是乱传的。

就像出门旅游不是乱逛的。

我们可以把HTTP比作火车,分成三个部分,火车头,车厢,货厢。

火车头Header明确这辆火车的身份,因为有火车司机和各种工作人员。

车厢Query坐着各式各样的人,明确了这趟火车需要带的有哪些人。

而货厢Body则是个大杂烩,什么都放,在HTTP请求中可以存放JSON数据体,里面什么都可以放。

这就是HTTP请求中的三个重要部位,Header火车头,Query车厢,Body货厢。

URL就是车轨,通往要去的地方。

在上篇GPT3.5调用中,URL就是我们要访问GPT3.5的路径,而KEY则是放在Header中Authorization的认证信息。

有URL和KEY,我们才能访问到GPT3.5的接口,向它提问,并且获得它回答的内容。

而URL和KEY也是往往付费才能得到的。

这就呼应了上面我们为什么要了解HTTP请求是什么?为什么调用AI大模型要模仿HTTP请求。

因为AI大模型是一个接口,也叫APi。

只要网络上有URL(路径)的地方,就是调用APi。

网站的访问,,搜索引擎调用网站的APi。

好友添加,?好友=好友名称,搜索框调用后台数据的APi。

只不过在不同情境下会改个名字,叫路径,叫地址。

管他叫什么,小编正式宣布,只要有URL的都是APi。

因为都要用到HTTP请求。

这真是21世纪最伟大的发现。

哈-哈-哈哈!

当然,都是玩笑话,小编对API的解释仅限于本篇文章。

如果你跟别人这么介绍API切记不要把小编的名字说出来。

小编丢不起这个脸。

了解HTTP请求之后,我们就能够分析,相比GPT3.5的调用我工作量为什么变多了。

但本质上依旧是HTTP请求的三个部分,Header,Query,Body。

千帆大模型的调用,是添加了个加密的环节。

原本我们只要一个KEY值的现在我们要两个KEY值生成一个KEY来使用。

APi_Key和Secret_Key通过一个网络请求生成一个access_token;

那么生成的access_token就是调用Yi_34_Chat接口的密钥了。

而生成access_token的方式在开发文档有官方的快速调试生成。

和代码示例。

而小编直接Ctrl+c,Ctrl+v,嵌入到我的代码中了。

直接上参数吧。

GPT3.5调用参数

Yi_34_Chat调用参数

工作量明显上来了。

相比GPT3.5的参数,相同参数名功能是一致的,这里主要解释多出来的那七个参数。

其中多出来的可以分成三部分。

access_token的生成:AI_APi_Key,AI_Secret_Key。

不想自己生成access_token的小伙伴可以使用。

影响大模型回复结果参数:AI_Top_K,AI_Top_P,AI_Penalty_Score;

值越高作用越强,AI_Top_K取值正整数:1,2,3,10...

AI_Top_P取值[0,1.0]。

AI_Penalty_Score取值[1.0,2.0]

这三个参数涉及大模型回复生成,怕有些专业名字让读者头大,小编就不解释了。

如果有想法的小伙伴评论区留言,小编火速加肝。

基于AK/SK权限认证,在调用特定的大模型需要使用的加密认证手段:AI_AK_SK,AI_NowTime;

这是一个更加重磅级的加密算法,目前小编已经将算法用代码的形式实现。

官方目前只有一个开发文档,和在线生成工具。

小编为了大模型调用一条龙服务,使用JAVA愣是完成了Hamc认证密钥的生成。

可能解释有点复杂,但是如果只是普通调用下大模型是没有很复杂的。

只调用了AI_APi_Key,AI_Secret_Key,AI_URL,AI_CONTENT,AI_Model五个参数。

这是最基本的服务。

如果要更深层次的使用就要了解我上面介绍的那些参数了。

现在介绍一下Yi_34_Chat调用模仿的HTTP请求是怎样的。

上面是整个HTTP请求部分,包括URL,Header,Query,Body。

这里需要解释的是Query部分,它是嵌入URL中的参数列表,格式【URL?key=value】。

而Body小编依旧使用Json数据格式。

下面是字符串还没转化成Json数据格式的样子。

其中局部变量contentlist同样是个字符串。

AI_CONTENT存放我们向大模型提问的内容。

记忆模型:

将历史提问和AI回复一同封装到上面字符串,利用redis连接池实现本地暂时500秒的缓存。

其中RedisUtil是独立写好的公共实用工具,相同的还有ResultUtil返回结果处理公共实用工具,HamcUtil基于AK/SK认证机制公共实用工具。

历史提问和AI回答从Redis取出接入Body的字符串中。

将当前提问和当前的AI回答存放Redis中。

模仿HTTP请求以及实现大模型记忆功能就实现了。

说到这里,本篇文章也结束得差不多了。

最后附上一张使用记忆功能的大模型调用,以及redis数据库的缓存情况截图。

下一篇:使用JAVA完成基于AK/SK权限认证

目前jar包的开发只能调用两个AI大模型的调用接口,所以目前还不能发出来供大家调用,但是小编会抽时间完善,也感谢大家多我的支持。

标签: #java连连看