Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-ai-chat
提交
ca1b879a
U
uni-ai-chat
项目概览
DCloud
/
uni-ai-chat
通知
893
Star
11
Fork
8
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-ai-chat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
ca1b879a
编写于
5月 12, 2023
作者:
DCloud_JSON
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.0.6 修复 流式响应模式,AI回答内容在开头不涉及敏感,后续内容涉及敏感的场景 卡住会话的问题
上级
e1ed915c
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
44 addition
and
23 deletion
+44
-23
changelog.md
changelog.md
+2
-0
package.json
package.json
+1
-1
pages/chat/chat.vue
pages/chat/chat.vue
+21
-13
uniCloud-aliyun/cloudfunctions/uni-ai-chat/index.obj.js
uniCloud-aliyun/cloudfunctions/uni-ai-chat/index.obj.js
+20
-9
未找到文件。
changelog.md
浏览文件 @
ca1b879a
## 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)
...
...
package.json
浏览文件 @
ca1b879a
{
{
"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"
:
{
...
...
pages/chat/chat.vue
浏览文件 @
ca1b879a
...
@@ -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
);
}
}
...
...
uniCloud-aliyun/cloudfunctions/uni-ai-chat/index.obj.js
浏览文件 @
ca1b879a
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录