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