前言
兄弟们好久不见了,这月刚回归工作,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}))
然后让前端根据特定内容进行拆分处理(什么splite、includes、join啦),实在不行找后端要正则!!/狗头
后话
最后给JYM解释下标题,为什么是 “体验 ChatGPT 双端提问”。
没啥特别的,就是H5和PC账号互通均可体验。对了,注册账号后可以免费提问20次体验,后续需要加我微信以 1:500的条数赞助(超良心的,均衡一下支出,大家理解下谢谢谢谢谢谢呜呜)
其实我下想写成“免费体验 ChatGPT 双端提问”就怕你们问完看见后面的良心赞助还要骂我就没写 /流泪
-附上地址:
- 感谢各位JYM看到最后,祝大家技术节节攀升甩烂AI!!点个赞呗!!!