专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

通过ChatGPT做一个终端对话玩具(xx再也不怕我xx了)

  引导篇
  从去年12月初了解到ChatGPT,也注册了账号,但是一直没去使用(真是太懒了)。
  相信大家就算没使用过,也听闻过它的传说,简单来说就是一个解答性聊天机器人。
  最近呢,有几位朋友也一直在向我咨询一些ChatGPT的问题,想了想还是做个小应用,带各位来了解并使用上ChatGPT。
  声明一下,此篇文章真不是用ChatGPT生成的。注册篇
  已经有很多大佬来介绍这个注册方式了,我简单的说一下步骤吧。准备好科学上网的节点(香港、越南的不行);在https:smsactivate。org验证码平台上充值个1;去https:chat。openai。comauthlogin通过邮箱注册(推荐谷歌直接注册);在验证码平台上找一个openai的验证码服务(最便宜的是印尼的,有效期20分钟);输入验证码平台上的手机号进行验证;等待验证码出现,粘贴之后即可完成注册;可以直接在https:platform。openai。comaccountapikeys生成apiKey;实战篇
  本次做的小工具,是一个终端对话助手。通过用户的输入内容,让ChatGPT进行识别回答并输出。
  效果图
  准备工作
  初始化yarninity
  安装插件openai(对话功能)inquirer(处理命令行输入等操作)clispinner(Loading效果)
  准备openai的apiKey对接OpenAI
  引入openai,并且写一个调用入口函数。const{Configuration,OpenAIApi}require(openai);asyncfunctionmain(){创建openai配置constconfigurationnewConfiguration({apiKey:apiKey});初始化openaiconstopenainewOpenAIApi(configuration);const{data:{choices}}awaitopenai。createCompletion({model:textdavinci003,对话机器人模型prompt:js是什么?,问题temperature:0。5,准确性的概率,0是最精准的maxtokens:150,输出内容长度topp:1。0,避免重复和不相关的内容frequencypenalty:0。0,控制语言模型中出现的词语频率,惩罚presencepenalty:0。0,控制语言模型中出现的词语频率,惩罚})console。log(choices〔0〕。text);输出的内容}main()
  输出的结果如下图
  这一步已经将openai对接完了。
  让用户配置和提问
  我们需要让用户提问,不应该直接将问题写在文件里,缺少与用户之间的交互。
  这时候inquirer出现了,它是一个命令行交互工具,可以做很多事情,比如各种cli的一些问题及选择配置的方式,如VueCli的创建的这种多选、单选它都可以做到。
  使用方式也很简单const{prompt}awaitinquirer。prompt({type:input,可以是passwordlist等name:prompt,定义的字段名message:请输入问题,提示信息});console。log(输入的内容,prompt)
  现在可以拿到用户的输入内容了,我们就可以做很多事情了。获取用户输入的apiKey;获取用户选择的对话机器人模型;获取用户提问内容;引入定义配置constinquirerrequire(inquirer);定义一个配置configconstconfigObject。create(null);constfsrequire(fs);写入Key到文件
  让用户输入密钥,为了持久化存储,我选择直接创建文件来进行存key,以免每次都需要重新输入。判断文件是否存在constkeysIsExistfs。existsSync(openaikeys);如果不存在if(!keysIsExist){const{apiKey}awaitinquirer。prompt({type:password,name:apiKey,message:请输入OpenAI的Key,})覆盖写入fs。writeFile(openaikeys,apiKey。trim(),{flag:w},(err){if(err)console。error(err)elsemain()重新执行})}else{存在此文件直接读取赋值给config。apiKeyfs。readFile(openaikeys,(err,data){if(err){console。error(err)return}config。apiKeydata。toString();})}
  WX202303010051292x。png让用户选择机器人const{model}awaitinquirer。prompt({type:list,name:model,message:请选择对话机器人,choices:〔{name:textada001,value:textada001},{name:textcurie001,value:textcurie001},{name:textbabbage001,value:textbabbage001},{name:textdavinci003,value:textdavinci003},〕,default:textdavinci003})config。modelmodel;
  WX202303010051572x。png让用户提问const{prompt}awaitinquirer。prompt({type:input,name:prompt,message:请输入问题,});
  WX202303010052142x。png加个Loading效果
  因为openai响应有点慢,所以为了减少蕉绿,引入了clispinnerconstSpinnerrequire(clispinner)。Spinner;s会被下面的替代,是个占位符constspinnernewSpinner(Loading。。s);这里是loading字符,按照这个顺序去渲染spinner。setSpinnerString();
  在请求openai之前调用请求开始spinner。start();请求完成之后暂停spinner。stop(true);参数bool,是否需要清除输出内容全部代码
  终于完结撒花了,现在已经是凌晨一点半了。const{Configuration,OpenAIApi}require(openai);constinquirerrequire(inquirer);constfsrequire(fs);constconfigObject。create(null);constSpinnerrequire(clispinner)。Spinner;constspinnernewSpinner(Loading。。s);spinner。setSpinnerString();asyncfunctionmain(){判断文件是否存在constkeysIsExistfs。existsSync(openaikeys);if(!keysIsExist){const{apiKey}awaitinquirer。prompt({type:password,name:apiKey,message:请输入OpenAI的Key,})覆盖写入fs。writeFile(openaikeys,apiKey。trim(),{flag:w},(err){if(err)console。error(err)elsemain()})}else{fs。readFile(openaikeys,(err,data){if(err){console。error(err)return}config。apiKeydata。toString();})}const{model}awaitinquirer。prompt({type:list,name:model,message:请选择对话机器人,choices:〔{name:textada001,value:textada001},{name:textcurie001,value:textcurie001},{name:textbabbage001,value:textbabbage001},{name:textdavinci003,value:textdavinci003},〕,default:textdavinci003})config。modelmodel;const{apiKey}config;console。log(33〔42;30mLGOIN33〔40;32m登录成功33〔0m);constconfigurationnewConfiguration({apiKey});config。openainewOpenAIApi(configuration);start()}asyncfunctionstart(){const{model}config;const{prompt}awaitinquirer。prompt({type:input,name:prompt,message:请输入问题,});if(!prompt。trim()){start()returnfalse}try{spinner。start();const{data:{choices}}awaitconfig。openai。createCompletion({model,prompt,temperature:0。5,maxtokens:150,topp:1。0,frequencypenalty:0。0,presencepenalty:0。0,})constanswerchoices〔0〕?。text?。replace(g,);spinner。stop(true);console。log(33〔32mOpenAI:answer?。trim()33〔0m);start()}catch(error){spinner。stop(true);console。log(error);}}main();

保交付之年,看头部房企如何掀起交付变革文李逗编孙月充满挑战的2022年马上要结束了,但房企面临的考验却还远未结束。一场有关保交付的系列难题,仍在持续解决中。整个2022年,无论政府金融机构还是各大企业都在积极行动,不断安徽滁州富豪榜大洗牌,首富宝座易主,三位80后齐上榜素有金陵锁钥江淮保障之美誉的滁州市位于安徽省东部,地处长江中下游平原及江淮之间丘陵地带,是安徽的东大门,同时也是南京都市圈和合肥经济圈的中心城市。滁州历史悠久,自古人杰地灵,现如今全球产业链供应链深度调整右图出口商品车在山东港口烟台港集结装船(无人机照片)。唐克摄(新华社发)国际形势和疫情冲击给产业链供应链带来了重大挑战,产业安全风险日益上升为重要议题,各国都开始谋求建立独立自主安亚马逊杀手来了,美版拼多多Temu横扫北美市场最近1个月,美国版拼多多Temu的广告开始霸占了各大海外网站的广告区,让海外华人想躲都躲不开。今年9月初,拼多多推出跨境电商平台Temu正式宣告进入北美市场。根据SensorTow试驾奥迪Q5etron豪华品牌杀入纯电动车市场一个新的事实是,新能源汽车正在以肉眼可见的速度,经历着对传统燃油车的替代。在中国,今年17月,新能源乘用车渗透率已跃升至24。7,零售销量达到了273。3万辆,8月,国内每卖4辆车骁龙480就受不了?那骁龙680G怎么办?网友没有最坑只有更坑最近网上关于1599买了个荣耀畅玩30的事情火了,实话实说这个事情那个导购要承担绝大部分责任,因为荣耀畅玩30目前在官网,其顶配8128GB版本也就1399元,如果在线下的实体店里LCD党该醒醒了,2K分辨率的OLED屏不香吗?网友感谢卢伟冰出手说起手机屏幕,LCD永不为奴那句话很经典,不过形势比人强,随着OLED屏幕的不断发展进步,LCD屏在手机上面的市场只会越来越小,2022年还有些不错的LCD屏手机,那么2023年相开箱同门双雄ThinkPadP152021和P172021对比评测连载1文章介绍连载1全文4500字50张图片,中文版在httpswww。song1118。com首发,英文版将稍后在httpswww。song1118。tech发布,分为以下章节终于重型2023年高性能电视如何选?这五款都带有分区背光,最低2999元进入2023年,很多人又准备抖擞精神,再次出发。而如果这时候选择一款电视的话,很多人可能会更看重性能指标,与以往做个区隔。具体来说,不买OLED电视,不买MiniLED电视,至少要43岁萧亚轩巴黎拍美照,金发造型充满时尚,两条细腿暴露瘦小身材12月31日,43岁的萧亚轩在自己的社交平台上分享了一组照片,用来告别即将过去的2022年。在照片中,萧亚轩穿着一件金光闪闪的风衣,染着一头金色的长发,站在巴黎街头的一栋古建筑上,CBA3消息史琳杰疑歧视新疆人,杨鸣面临大罚单,范子铭遭痛批目前CBA第二阶段的比赛正在激烈进行中,随着比赛进入白热化阶段,各种争议越来越大。导致CBA各大球队发生三个备受关注的消息,接下来和各位球迷来逐一分享一下。首先第1个消息分享一下,
三亚的房子为什么比海口的贵很多?1。三亚比海口气候,更有优势海口位于海南最北端,三亚位于最南端,在中部偏南端,有五指山山脉,黎母岭山脉,雅加大岭山脉。冬季内地冷空气南下,首先经过海口及周边,再一路往南下,经过中部电动自行车如何充电会让电瓶更加的耐用?如何给电动车充电更科学电池更耐用这个方法我有经验和到科学的做法。首先新电动车卖来不用马上充。不用像手机那样。因为电动车电池都是现场安装的,那样能保证电池离出厂时间短,而新电池是带百对于普通百姓来说,如果社区团购平台都关闭了,是好事还是坏事?平台团购和实体店。两者相互并存。相互制约。才是互惠互利的。可有可无,买了几次菜失望远大于满意最好关了,社区团购食品安全触目惊心,重灾区肉类,特别是冷冻食品,看着都恶心,配送司机不专你们见过理科生复读提分最多是多少?好多理科同学高考失利后,想知道复读一年能够提高多少分,是很多同学关心的。理科生复读再高考提分因人而异,大多数人有所提高,也有不升反降的。我们见过提分最多的有超一百多分的,比原来提高怎样提高孩子背诵古文的兴趣?目前,随着大语文改革的渗透,古诗文的考查呈逐年加大的趋势,小学教材部编本古诗文占选文的30,而到了初中则占到了57,高中更是成为学习的重中之重,则且古诗文阅读已成为中考和高考的最大抑郁症三年(曾确诊),经常感到心慌,胸闷气短,有强烈窒息感(23小时发作一次),怎么办?抑郁症三年(曾确诊),经常感到心慌,胸闷气短,有强烈窒息感(23小时发作一次),怎么办?抑郁症是长期的高焦虑形成的,持续高焦虑就会出现经常感到心慌,胸闷气短,强烈的窒息感等。调整抑为什么感觉电力和银行的股价一般都比较低?电力股和银行股的股价比较低,主要是由于以下几大原因首先说说银行股股价低的原因,具体有以下几点第一,银行股盘子太大了,想要启动银行股,需要超大资金,所以常年缺乏资金炒作,这是银行股这喜欢拍摄花的网友能分享一下你们的图吗?最喜欢拍的就是花花草草,生活压力大,拍些美美的照片心情好!春有桃李争艳,夏有荷花独秀,秋有桂树菊花,东有腊梅花开。每一季都有花,还有很多叫不上名字的花花草草,随手拍来大家一起欣赏!王者荣耀白起不是应该先堆血吗?为什么有的喜欢出反甲极寒风暴呢?心怀荣耀方能成就王者,大家好,这里是指尖上的王者,白起是我们比较熟悉的英雄,自身坦度很高,控制能力很足,抗压能力也很强,在当下的射手版本中白起走上单抗压路稍稍弱势了点,不过不影响后朋友圈关闭很久了,抖音快手也没有,年轻人有几个能做到?这年头,这种情况应很少见,但不能完全排除。如有自闭症的青年可能如此,有精神障碍的青年可能如此,乞讨流浪的青年可能如此,个别亡命之徒可能如此,家庭极度贫困的青年可能如此,边远地区用不快递五年辞职一个月,不知道去干什么,感觉好迷茫,我该怎么办?你好,感谢邀请,我也在邮政干过,之后也在其他公司送过快递,实在是干够了,具体什么原因也不说了,说多了都是泪,就彻底转行了,建议你去学个专业技术,或者去考个车票,开车的活挺好找的,不
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网