大佬们帮忙看看这个问题,调用的是百度的大模型平台,因为返回的的数据流前边都带 data: 无奈只能去掉前边的,然后再转换JSON,
但是发现转换JSON时会偶发报错.并不是每次回调都会报错.如图其实是有三次回答,第一次成功了,第二次就失败了.搞不懂是不是两次之间太快了?偶发
send() {
var that = this;
that.setData({
text: ''
})
var data = {
messages: [
{
'role': 'user',
'content': that.data.text0
}
],
stream: true
}
var requestTask = wx.request({
url: 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-128k?access_token=XXXXX',
data: JSON.stringify(data),
method: 'POST',
enableChunked: true,
success: function (r) {
},
fail: function (r) {
}
})
requestTask.onChunkReceived(function (resp) {
var str = textDecoder.decode(resp.data)
console.log(str)
if (str.startsWith('data:')) {
str = str.slice(5);
var str2 = JSON.parse(str)
console.log(str2)
var is_end = str2.is_end;
var result = str2.result;
var text = that.data.text;
text += result;
that.setData({
text: text
})
if (is_end) {
requestTask.offChunkReceived()
}
}
});
},
我现在就做到这里来了,这个流吐出来的文字不是整段的,一下子三段,一下子五段,根本没办法做处理,然后前面还有个data:这样json的方法也转不出来,有没有其他办法呢
这是sse格式的流,每次接收的不一定正好是个json string,要自己解析,也可以用第三方现成的库https://www.npmjs.com/package/eventsource-parser