qq空间代码克隆怎么弄(qq空间代码克隆怎么用)

本公众号已接入了AI绘画工具Midjourney,可以让你轻松画出很多“大师”级的作品。同时还接入了AI聊天机器人,支持GPT、Claude以及Laf专有模型,可通过指令来随意切换模型。欢迎前来调戏

<<< 左右滑动见更多 >>>

qq空间代码克隆怎么弄(qq空间代码克隆怎么用)

?

??FBIWarning:本文纯属作者自娱自乐,数字人的观点不代表CEO本人的观点,请大家不要上当受骗!!

哪个公司的CEO不想拥有一个自己的数字克隆?

想象一下,如果CEO数字克隆上线了,那他是不是就可以一天约见100个投资人了?把他接入企业官方公众号后台作为客服,24小时不吃饭不睡觉不喝水给用户答疑解惑,想想就很刺激!感觉CEO在给我打工?

环界云的CEO做到了!先来看看效果:

怎么样,你也想拥有一个自己的数字克隆么?问题不大,跟着我操作。

首先你需要准备自己的语料,我们CEO的语料就是来自各种同性交友大会的演讲内容,如果你的语料不够多,那就得自己想办法了。

当然,本文提供的方法不仅仅适用于数字克隆,你可以基于任意专有知识库来打造一个私有领域的专家或者客服,然后再对接到公众号,它不香吗?

准备工作

已认证的微信公众号

首先你需要有一个微信公众号,而且是已经认证的公众号,因为公众号强制要求服务器每次必须在15s以内回复消息,公众号平台在发送请求到服务器后,如果5s内没收到回复,会再次发送请求等候5秒,如果还是没有收到请求,最后还会发送一次请求,所以服务器必须在15s以内完成消息的处理。如果超过15s还没有返回怎么办?那就超时了,用户将永远都收不到这条消息。

如果你想突破15s限制怎么办?

如果是已认证的公众号,可以直接使用客服消息进行回复,它的原理是通过POST一个JSON数据包来发送消息给普通用户。客服消息就厉害了,只要在48小时以内都可以回复。具体可查看微信官方文档[1]。如果是未认证的公众号,并不能完全解决15s限制的问题,但是可以优化。这里提供一个思路,你可以使用流式响应来缓解这个限制,先与OpenAI建立连接,再一个字符一个字符获取生成的文本,最后将所获取的文本列表拼接成回复文本。能缓解请求超时的关键在于:建立连接的时间一般情况下不会超过15s,所以只要在给定的时间内,成功建立连接,基本就能返回内容。虽然有可能会出现回复内容被截断的情况,但总比你回复不了强吧?

本文给出的方法是基于微信客服消息进行回复,所以需要一个已认证的公众号。如果是未认证的公众号,就需要你自己研究流式响应了,本文不做赘述。

FastGPT

其次你需要注册一个FastGPT账号。它是一个ChatGPT平台项目,目前已经集成了ChatGPT、GPT4和Claude,可以使用任意文本来训练自己的知识库。

注册链接:

知识库

注册完FastGPT后,你可以直接填写自己的APIKey进行使用,也可以在FastGPT平台充值使用。

接下来点击侧栏的数据库图标进入知识库界面,然后点击“+”号新建一个知识库。

点击「导入」,可以看到有3种方法来导入知识库。

如果你有多个文本文件,可以直接选择「文本/文件拆分」进行导入,模式建议选「QA拆分」,也可以直接分段。

导入之后,就会开始训练,训练完成后的效果:

Laf

最后你还需要一个平台来开发你的应用,那当然是Laf啦。据环界云CEO数字克隆所说,Laf是一个Serverless框架,可以用来快速开发具有AI能力的分布式应用,助你像写博客一样写代码,随时随地快速发布上线应用。真?五分钟上线CEO数字克隆!

Laf注册链接:

编写云函数

一切工作准备就绪后,开始动笔写亿点点代码。

先新建应用,直接新建免费的进行测试:

点击「+」新建云函数:

然后将下面的云函数代码直接复制粘贴到WebIDE中:

importcloudfrom'@lafjs/cloud';import*ascryptofrom'crypto';//公众号配置constappid='wxb1833715d8f0809d'constappsecret='fd76ce714a8083112100c2160b2f2c5d'constwxToken='test';//fastgpt配置constapikey="63f9a14228d2a688d8dc9e1b-xsyvfby3cui09tfcvxen3"constmodelId="642adec15f01d67d4613efdb"//创建数据库连接并获取Message集合constdb=cloud.database;const_=db.commandconstMessage=db.collection//处理接收到的微信公众号消息exportasyncfunctionmain{//constres=awaitcloud.fetch.post}`,{//button:[//{//"type":"click",//"name":"清空记录",//"key":"CLEAR"//},//]//})const{signature,timestamp,nonce,echostr}=event.query;//验证消息是否合法,若不合法则返回错误信息if){return'Invalidsignature';}//如果是首次验证,则返回echostr给微信服务器if{returnechostr;}//--------------正文开始constpayload=event.body.xml;constsessionId=payload.fromusername[0]console.log//点击了清空记录if{console.logawaitMessage.where.removeawaitreplyBykefureturn'clearrecord'}//仅做文本消息例子ifreturn'notext'constnewMessage={msgid:payload.msgid[0],question:payload.content[0].trim,username:payload.fromusername[0],sessionId,createdAt:Date.now}awaitreplyTextreturn'success'}//处理文本回复消息asyncfunctionreplyText{const{question,sessionId,msgid}=message;//重复的内容,不回复const{data:msg}=awaitMessage.where.getOneifreturnconsole.log//立即添加一条待回复记录awaitMessage.add;//回复提示awaitreplyBykefuawaitchangesStateconstreply=awaitgetFastGptReply;const{answer}=reply;awaitMessage.where.update;//returnanswer;awaitreplyBykefu}//获取微信公众号ACCESS_TOKENasyncfunctiongetAccess_token{constshared_access_token=awaitcloud.shared.getif){returnshared_access_token.access_token}//ACCESS_TOKEN不存在或者已过期//获取微信公众号ACCESS_TOKENconstmp_access_token=awaitcloud.fetch.getmp_access_token.data.access_token&&cloud.shared.set+7100*1000})returnmp_access_token.data.access_token}//公众号客服回复文本消息exportasyncfunctionreplyBykefu{//判断是否为中文字符functionisChinese{return/[\u4e00-\u9fa5]/.test//判断是否是中文字符}//拆分文本长度functionsplitText{letresult=[]letlen=text.lengthletindex=0while{letpart=''letcharCount=0while{letchar=text[index]charCount++part+=charif)charCount++//中文字符计数+1index++}result.push}returnresult}//定义休眠函数functionsleep{returnnewPromise)};constaccess_token=awaitgetAccess_tokenlettext=splitTextletlen=splitText.lengthtry{for{letpart=text[i]//获取第i段awaitsleep//回复消息constres=awaitcloud.fetch.post}}catch{console.log}}//修改公众号回复状态exportasyncfunctionchangesState{constaccess_token=awaitgetAccess_token//修改正在输入的状态constres=awaitcloud.fetch.post}//校验微信服务器发送的消息是否合法exportfunctionverifySignature{constarr=[token,timestamp,nonce].sort;conststr=arr.join;constsha1=crypto.createHash;sha1.update;returnsha1.digest===signature;}//返回组装xmlexportfunctiontoXML{consttimestamp=Date.now;const{tousername:fromUserName,fromusername:toUserName}=payload;return`${timestamp}`}//调用fastgpt回答asyncfunctiongetFastGptReply{constres=awaitdb.collection.where.get//获取最多10组上下文constlist=res.data.sliceconstprompts=list.map=>[{obj:"Human",value:item.question||''},{obj:"AI",value:item.answer||''}]).concat.flatconstconfig={method:'post',//设置请求方法为POSTurl:'',//设置请求地址headers:{//设置请求头信息apikey,'Content-Type':'application/json'},data:{//设置请求体数据modelId,isStream:false,prompts}}try{constret=awaitcloud.fetchconsole.logreturn{answer:ret.data.data||ret.data||''}}catch{console.logreturn{error:"问题太难了出错了..",}}}

整个云函数的调用流程如下:

?当收到微信公众号消息时,首先调用main函数。在main函数中,首先验证消息是否合法,如果不合法则返回错误信息。如果是首次验证,则返回echostr给微信服务器。

?接着根据消息类型进行处理。对于文本消息,调用replyText函数进行处理。

?在replyText函数中,首先检查是否为重复的内容,如果是则不回复。然后将用户发送的问题存入数据库,并回复提示信息给用户,表示机器人正在思考中。

?接下来调用getFastGptReply函数获取FastGPT的回答。在getFastGptReply函数中,首先从数据库中获取最多10组上下文信息,然后将问题和上下文信息一起发送给FastGPT。接收到FastGPT的回答后返回给replyText函数。

?回到replyText函数,将FastGPT返回的回答更新到数据库中,并通过客服接口将回答发送给用户。在发送回答之前,会调用changesState函数修改公众号回复状态为正在输入中。

?调用replyBykefu函数通过微信公众号客服接口发送文本消息给用户。在replyBykefu函数中,首先根据文本长度拆分成多段,并逐段发送给用户。

先不要改动代码中的任何内容,后面会告诉你如何修改。

点击「发布」:

最后复制已发布的函数地址:

配置微信公众号

这一步我们需要在微信公众号平台上配置开发者信息,并将服务器地址设置为部署好的云函数服务地址。步骤如下:

首先登录微信公众平台,点开左侧的「设置与开发」,点击「基本设置」,然后点击「服务器配置」,服务器配置那里点击修改配置:

将之前的云函数服务地址复制到「服务器URL」中,下边的Token与云函数代码中的token保持一致,下边的EncodingAESKey点击右侧随机生成就行,然后点击提交:

返回token校验成功即可。

获取公众号的AppID和AppSecret:

这一步的操作请务必不要忘记!!!你需要把laf.run的IP地址全部添加到IP白名单中:

laf.run域名的IP地址可通过以下命令获取:

$dig+shortlaf.run112.124.8.17120.26.163.28112.124.9.8347.97.22.68112.124.9.194114.55.179.67114.55.177.246120.27.246.172120.26.161.24847.97.5.237

把获取到的AppID和AppSecret填写到Laf云函数中,然后点击「发布」:

最后在公众号平台点击「启用」即可。

配置FastGPT

接下来开始配置FastGPT,首先新建一个APIKey:

然后新建一个应用:

然后选择需要关联的知识库:

可以根据自己的需求设置一下温度、搜索模式和系统提示词,最终点击「保存修改」。

获取应用的modelId:

将你获取的APIKey和modelId填写到Laf云函数中,修改完成后点击发布:

到公众号里测试一下:

完美

当然,接入数字CEO只是图个乐呵,演示完了就撤了。目前Laf公众号真正接入的是Laf专有模型,可以回答与Laf相关的任何问题,感兴趣的小伙伴可以去体验一下

QA

如果发送消息后无响应,可以先去Laf控制台的日志中检查是否收到用户消息,有下面的提示代表是正常的。

如果收到了消息,但是没有回复,八成是公众号没有发送客服消息权限。对应是下图的权限:

引用链接

[1]微信官方文档:

关于Laf

Laf是一款为所有开发者打造的集函数、数据库、存储为一体的云开发平台,助你像写博客一样写代码,随时随地发布上线应用!3分钟上线ChatGPT应用!

GitHub:

官网:

官网:

开发者论坛:

关注Laf公众号与我们一同成长

相关推荐