当前位置: 首页 > 后端技术 > Node.js

又发现一个有趣的ChatGPT玩法,分享给大家

时间:2023-04-03 14:56:40 Node.js

之前写过ChatGPT连接微信和钉钉的方法。有趣的玩法,周末抽空体会了一下,感觉还不错,分享给大家。背景事件的起因是阿芬在朋友圈看到了这么一条信息。敏感信息已被删除。意思很明显是要把OpenAI连接到知识星球上。用户可以通过星球向OpenAI提问,OpenAI会自动回答相应用户的问题并通知用户。看到这个很有趣。对于运营知识星球的博主,尤其是技术博主来说,很多简单的技术知识点都可以通过自动化来解答,不需要花费太多时间。那么有朋友会问,这和用户自己百度有什么区别呢?只要用过OpenAI的朋友深有体会,百度搜索中有很多答案和广告,往往需要花费一些时间才能在大量相似的内容中找到有用的内容。OpenAI给出的答案往往思路清晰、条理分明。虽然很多时间紧迫的问题无法给出准确的答案,但是一些技术知识点的答案还是可以很准确的。以下是阿芬看到的一些案例。你可以看看。可以写代码,答题,写提纲,分析性能,构建以上案例。看完以上案例,接下来就可以开始搭建了。这个自动智能回答功能的思路很简单。就是先获取需要回答的问题列表,然后遍历OpenAI请求该问题的接口,然后将返回的结果写回通知相应的用户。在这个过程中,我们需要通过定时任务进行轮询。处理。综上所述,我们需要准备以下东西:一个可以被询问的知识星球账号,也就是被询问的人;OpenAI账号对应的APIKEY。这一步比较麻烦,不过之前的文章有提供思路。获取不在本文讨论范围内,感兴趣的可以翻看前面的文章。在此提醒大家,由于公众号改版,建议大家给我们的公众号打上星号,这样就不容易错过好文章。调度工具或调度平台也可以是Linux系统的定时命令;实现API请求的程序或脚本;以上四点编程都是必须的,但最重要的当然是写代码。根据我们上面的思路,我们的程序需要调用三个接口来获取题目列表;请求OpenAI获取答案;将答案写回通知用户;下面我们依次看看这三个接口是如何连接的。先说明一下,为了简单起见,阿粉使用的调度平台是XXL-JOB对应的执行任务脚本,是用Nodejs写的。使用被询问人准备好的账号登录网页版知识星球。进入对应星球后,可以看到【等待我的回答】的菜单。我们打开浏览器的控制台,点击【等我回答】按钮,就可以看到请求对应的接口地址了。这是我们要请求的第一个接口地址。请记下来,然后通过请求头获取对应的接口地址。cookie信息和一些参数传过去后,我们就可以通过代码进行接口请求,得到需要回答的问题列表。varoptions={url:ZSXQ_UNANSWER_URL,headers:{'accept':'application/json,text/plain,*/*','cookie':cookie,'User-Agent':'Mozilla/5.0xxxx','x-timestamp':Math.floor(Date.now()/1000),}};request(options,callback);拿到问题列表后,我们就可以开始在callback回调方法中遍历并请求OpenAI接口获取答案了。OpenAI的接口地址是这个https://api.openai.com/v1/completions。functioncallback(error,response,body){if(!error&&response.statusCode===200){让json=JSON.parse(body);if(!json.succeeded){console.log("succeededfalse")process.exit(0)}if(json.resp_data.topics.length>0){letlength=json.resp_data.topics.length;for(leti=0;i0){letreply=body.choices[0].文本;console.log(response.request.headers.topicId+":"+reply);if(null!=reply&&reply.length>0){//回答问题并通知提问者letanswerOptions={url:ZSXQ_ANSWER_URL+"/"+response.request.headers.topicId+"/answer",headers:{'accept':'application/json,text/plain,*/*','cookie':cookie,'User-Agent':'Mozilla/5.0xxx','x-timestamp':Math.floor(Date.now()/1000),},超时:12000,正文:{"req_data":{"image_ids":[],"silenced":沉默,"text":reply}},json:true}请求。post(answerOptions,answerCallBack)}}}else{控制台。log("getanswererror")过程。exit(-1)}}//调用函数answerCallBack(error,response,body){if(response.statusCode===200&&body.succeeded){console.log(":智能应答成功");//process.exit(0)}else{console.log(":智能应答失败");//process.exit(-1)}}至此基本实现了相应的功能,还有几个细节简单说明在下次写答案的接口参数中,silent表示是否通知别人,true表示只通知提问者,false表示通知所有人,notifyeveryone表示所有人都能看到答案,否则只有提问者会看到答案,可以在刚开始调试的时候设置为true,可以设置稍后为false,因为此功能需要由计划任务触发。为了避免不必要的麻烦,大家可以自己设定一个合理的定时时间,比如半夜就不要打电话了,以后回答别人的问题不会有什么影响,而且定时频率也不要太频繁,低调地使用它。完整代码我已经放在后台了,回复关键词【zsxq】即可获取。作用是在XXL-JOB上配置一个NodeJs任务。可以看到阿粉在查询之前已经指定了对应的时间。可以看到智能答题成功,在知识星球也可以正常显示。CoolWaiWai~总结今天给大家带来了另外一个OpenAI的玩法。阿粉提供了多种玩法,大家可以自己学习研究。你可以自己玩。目的是让大家遇到新的东西。我们可以在与技术和技术打交道时保持热情。当新技术来临时,我们不能保守,但我们必须欢迎它们。