体验 ChatGPT 双端提问

810 阅读1分钟

image.png

前言

兄弟们好久不见了,这月刚回归工作,chatGPT已经处在风口浪尖了,那必须整一个plus会员玩玩(20$..肉疼)

抽空写了一个国内可直接体验并访问的chatGPT分享给大家玩玩。因为GPT-4.0的api官方还没放出属于内测阶段只能官网每小时问25次,所以我搭这个还是3.5的trube。日后开放了也会跟着更新。

分享

说实话玩这玩意其实在座掘友都是大佬级别,说白了就是调个api画个界面有啥技术可言。

那就分享一个较为有用的axios的流式调用吧。

  • 正常我们请求接口都是直接传参

res = await api.sendMessage(data.message)

  • 流式调用的关键其实就是ctx.response.write()
const res = await api.sendMessage(content, { 
 onProgress: (partialResponse => { 
         if(partialResponse && partialResponse.delta != undefined){
                ctx.response.write(partialResponse.delta);  // 关键
         } 
 })
 ctx.response.end()

他会把中间每一次的请求都立马返回给你,这样我们就可以在页面上实时渲染所返回内容(就和机器人字句回答一样) 使用时候一定记得在最后加上ctx.response.end()不然不会有最终返回,最终返回就和我们正常调取接口一样,将每一次返回的内容拼接至最终内容呈现给你。

  • 前端接收
      axios({
        url: "url",
        method: "post",
        data: params,
        responseType: "stream", 
        onDownloadProgress: function (progressEvent) {
          // 处理
        }
      })
  • 同时他也有个致命缺点:只能返回字符串类型

你可能会说,那前端直接转一下不就行了。众所周知,如果数据量过大,JSON.parse会不好使直接报错。解决方案其实最简单的就是把你所需的数据在ctx.response.end()前做一个拼接:

ctx.response.write(JSON.stringify(parentMessageId${mainId}))

然后让前端根据特定内容进行拆分处理(什么spliteincludesjoin啦),实在不行找后端要正则!!/狗头

后话

最后给JYM解释下标题,为什么是 “体验 ChatGPT 双端提问”

image.png

没啥特别的,就是H5和PC账号互通均可体验。对了,注册账号后可以免费提问20次体验,后续需要加我微信以 1:500的条数赞助(超良心的,均衡一下支出,大家理解下谢谢谢谢谢谢呜呜)

其实我下想写成“免费体验 ChatGPT 双端提问”就怕你们问完看见后面的良心赞助还要骂我就没写 /流泪

-附上地址:

www.shuaijian.top/#/chatGPT

  • 感谢各位JYM看到最后,祝大家技术节节攀升甩烂AI!!点个赞呗!!!