提交 29a6112f 编写于 作者: DCloud_JSON's avatar DCloud_JSON

1.0.6 修复 流式响应模式,AI回答内容在开头不涉及敏感,后续内容涉及敏感的场景 卡住会话的问题

上级 8d4574c0
## 1.0.6(2023-05-12)
- 修复 流式响应模式,AI回答内容在开头不涉及敏感,后续内容涉及敏感的场景 卡住会话的问题
## 1.0.5(2023-05-11)
- 新增代码注释
## 1.0.4(2023-05-10)
......
{
"id": "uni-ai-chat",
"name": "uni-ai-chat",
"version": "1.0.5",
"version": "1.0.6",
"description": "基于uni-ai的聊天示例项目,支持流式、支持前文总结,云端一体",
"main": "main.js",
"scripts": {
......
......@@ -382,10 +382,8 @@
// 展示最后一条消息
this.showLastMsg()
// dom加载完成后 清空文本内容
console.log(999999)
this.$nextTick(() => {
this.content = ''
console.log(101010)
})
this.send() // 发送消息
},
......@@ -461,15 +459,24 @@
sseChannel.on('end', (e) => {
// console.log('on end', e);
// 如果e存在且包含summarize或insufficientScore属性
if (e && (e.summarize || e.insufficientScore)) {
if (e) {
// 更新最后一条消息
this.updateLastMsg(lastMsg => {
// 如果e包含illegal属性
if (e.illegal) {
// 将最后一条消息的illegal属性更新为e的illegal属性
lastMsg.illegal = e.illegal
lastMsg.content = "内容涉及敏感"
// 倒数第二条(用户发问内容)也需要设置illegal的值
this.msgList[this.msgList.length - 2].illegal = e.illegal
}
// 如果e包含summarize属性
if (e.summarize) {
else if (e.summarize) {
// 将最后一条消息的summarize属性更新为e的summarize属性
lastMsg.summarize = e.summarize
// 如果e包含insufficientScore属性
} else if (e.insufficientScore) {
}
// 如果e包含insufficientScore属性
else if (e.insufficientScore) {
// 将最后一条消息的insufficientScore属性更新为e的insufficientScore属性
lastMsg.insufficientScore
}
......@@ -498,12 +505,11 @@
})
.then(res => {
// console.log(111,res);
// 更新最后一条消息的状态为100(发送成功)
this.updateLastMsg({
state: 100
})
if (res.data) {
if (!sseChannel && res.data) {
// 更新最后一条消息的状态为100(发送成功)
this.updateLastMsg({
state: 100
})
// console.log(res, res.reply);
// 判断是否要跳过本次回调,防止请求未返回时,历史对话已被清空。引起对话顺序错误 导致 对话输入框卡住
if (!skip_callback) {
......@@ -528,7 +534,9 @@
illegal
})
// 滚动窗口以显示最新的一条消息
this.showLastMsg()
this.$nextTick(()=>{
this.showLastMsg()
})
} else {
console.log('用户点击了清空按钮,跳过前一次请求的回调', res.data.reply);
}
......
......@@ -127,8 +127,12 @@ module.exports = {
console.log('_after',{error,result});
// 如果有错误
if(error){
if(error.errCode && error.errMsg) {
// 符合响应体规范的错误,直接返回
return error
}
// 如果是内容安全检测错误
if(error.errCode == "60004" || error == "uni-sec-check:illegalData" ) {
else if(error == "uni-sec-check:illegalData" ) {
// 返回一个包含敏感内容提示和标记的响应体
return {
"data": {
......@@ -137,11 +141,7 @@ module.exports = {
},
"errCode": 0
}
}else if(error.errCode && error.errMsg) {
// 如果是符合响应体规范的错误
// 符合响应体规范的错误,直接返回
return error
}
}
// 如果是积分不足错误
else if(error == 'insufficientScore'){
// 设置回复内容
......@@ -299,9 +299,20 @@ module.exports = {
})
})
// 返回错误
res.on('error', (err) => {
console.error('---error----', err)
reject(err)
res.on('error',async (error) => {
// 特殊处理 uni-ai默认服务商检测到内容涉及敏感的错误
if(error.errCode == "60004"){
await channel.write("内容涉及敏感")
// 结束sseChannel并返回 illegal:true 表示内容涉及敏感
await channel.end({
illegal: true
})
return resolve({
errCode: 0
})
}
console.error('---error----', error)
reject(error)
})
})
} else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册