|
@@ -88,16 +88,19 @@ import { AnswerStruct } from '@/types/chat'
|
|
|
import { isValue } from '@/utils/czr-util'
|
|
|
import { ElMessage } from 'element-plus'
|
|
|
import { chatMessage } from '@/views/chat/chat'
|
|
|
+import { appModelConfigDetail } from '@/api/modules/app/make'
|
|
|
|
|
|
const props = defineProps({
|
|
|
+ ID: { default: '' },
|
|
|
test: { default: false },
|
|
|
})
|
|
|
const state: any = reactive({
|
|
|
text: '',
|
|
|
chats: [] as Array<AnswerStruct>,
|
|
|
- chatConfig: {},
|
|
|
params: {
|
|
|
+ appId: props.ID,
|
|
|
query: '',
|
|
|
+ modelConfig: {},
|
|
|
},
|
|
|
isWaiting: false,
|
|
|
isStop: false,
|
|
@@ -106,68 +109,78 @@ const ref_text = ref()
|
|
|
const ref_chatMsg = ref()
|
|
|
const setText = (text: string, send = false) => {
|
|
|
if (send) {
|
|
|
- onSend(text)
|
|
|
+ onSend(text, true)
|
|
|
} else {
|
|
|
state.text = text
|
|
|
}
|
|
|
}
|
|
|
-const initChat = () => {
|
|
|
- state.chatConfig = {}
|
|
|
- state.chats = [
|
|
|
- {
|
|
|
+const initChat = async () => {
|
|
|
+ state.chats = []
|
|
|
+ const { data }: any = await appModelConfigDetail(props.ID, props.test ? 0 : 1)
|
|
|
+ state.params.modelConfig = data
|
|
|
+ if (state.params.modelConfig.openingStatement.trim()) {
|
|
|
+ state.chats.push({
|
|
|
type: 'answer',
|
|
|
- prologue: '您好,请不要问我问题!',
|
|
|
- prologueType: 'three',
|
|
|
- prologueQuestions: ['马什么每', '马东什么', '什么冬梅'],
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'answer',
|
|
|
- prologue: '您好,请不要问我问题!',
|
|
|
- prologueType: 'all',
|
|
|
- prologueQuestions: [
|
|
|
- '马什么每',
|
|
|
- '马东什么',
|
|
|
- '什么冬梅',
|
|
|
- '马什么每',
|
|
|
- '马东什么',
|
|
|
- '什么冬梅',
|
|
|
- '马什么每',
|
|
|
- '马东什么',
|
|
|
- '什么冬梅',
|
|
|
- '马什么每',
|
|
|
- '马东什么',
|
|
|
- '什么冬梅',
|
|
|
- ],
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'ask',
|
|
|
- text: '现在几点了?',
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'answer',
|
|
|
- text: '现在是5025年88月99日 77:55:44,星期九。',
|
|
|
- advise: [],
|
|
|
- time: 1000 * 2.7,
|
|
|
- tokens: 22,
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'answer',
|
|
|
- text: '',
|
|
|
- advise: [],
|
|
|
- loading: true,
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'ask',
|
|
|
- text: '还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?',
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'answer',
|
|
|
- text: '还有一些问题建议',
|
|
|
- advise: ['这个时间牛*不', '再问我一个时间吧'],
|
|
|
- time: 1000 * 457,
|
|
|
- tokens: 22222222,
|
|
|
- },
|
|
|
- ]
|
|
|
+ prologue: state.params.modelConfig.openingStatement,
|
|
|
+ prologueNum: state.params.modelConfig.showAll || 0,
|
|
|
+ prologueQuestions: state.params.modelConfig.suggestedQuestions || [],
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // state.chats = [
|
|
|
+ // {
|
|
|
+ // type: 'answer',
|
|
|
+ // prologue: '您好,请不要问我问题!',
|
|
|
+ // prologueNum: 'three',
|
|
|
+ // prologueQuestions: ['马什么每', '马东什么', '什么冬梅'],
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // type: 'answer',
|
|
|
+ // prologue: '您好,请不要问我问题!',
|
|
|
+ // prologueNum: 'all',
|
|
|
+ // prologueQuestions: [
|
|
|
+ // '马什么每',
|
|
|
+ // '马东什么',
|
|
|
+ // '什么冬梅',
|
|
|
+ // '马什么每',
|
|
|
+ // '马东什么',
|
|
|
+ // '什么冬梅',
|
|
|
+ // '马什么每',
|
|
|
+ // '马东什么',
|
|
|
+ // '什么冬梅',
|
|
|
+ // '马什么每',
|
|
|
+ // '马东什么',
|
|
|
+ // '什么冬梅',
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // type: 'ask',
|
|
|
+ // text: '现在几点了?',
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // type: 'answer',
|
|
|
+ // text: '现在是5025年88月99日 77:55:44,星期九。',
|
|
|
+ // advise: [],
|
|
|
+ // time: 1000 * 2.7,
|
|
|
+ // tokens: 22,
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // type: 'answer',
|
|
|
+ // text: '',
|
|
|
+ // advise: [],
|
|
|
+ // loading: true,
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // type: 'ask',
|
|
|
+ // text: '还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?还有别的问题建议吗?',
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // type: 'answer',
|
|
|
+ // text: '还有一些问题建议',
|
|
|
+ // advise: ['这个时间牛*不', '再问我一个时间吧'],
|
|
|
+ // time: 1000 * 457,
|
|
|
+ // tokens: 22222222,
|
|
|
+ // },
|
|
|
+ // ]
|
|
|
initHistory()
|
|
|
}
|
|
|
const initHistory = () => {}
|
|
@@ -203,8 +216,11 @@ const scrollToEnd = () => {
|
|
|
})
|
|
|
}, 100)
|
|
|
}
|
|
|
-const onSend = (text = '') => {
|
|
|
- if ((isValue(state.text.trim()) || text) && !state.loading) {
|
|
|
+const onSend = (text = '', isSet = false) => {
|
|
|
+ if (
|
|
|
+ (isValue(state.text.trim()) || (isSet && isValue(text))) &&
|
|
|
+ !state.loading
|
|
|
+ ) {
|
|
|
if (state.isWaiting || state.isStop) {
|
|
|
ElMessage({
|
|
|
message: '问题回复中,请稍后提问!',
|
|
@@ -213,7 +229,7 @@ const onSend = (text = '') => {
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
- if (text) {
|
|
|
+ if (isSet) {
|
|
|
state.params.query = text
|
|
|
} else {
|
|
|
state.params.query = state.text + ''
|
|
@@ -228,6 +244,7 @@ const onSend = (text = '') => {
|
|
|
type: 'answer',
|
|
|
text: '',
|
|
|
loading: true,
|
|
|
+ error: false,
|
|
|
})
|
|
|
state.chats.push(answer)
|
|
|
scrollToEnd()
|
|
@@ -246,7 +263,18 @@ const onSend = (text = '') => {
|
|
|
onMessageEnd: (data) => {
|
|
|
state.isStop = false
|
|
|
},
|
|
|
+ onError: (text, data) => {
|
|
|
+ console.error(text, data)
|
|
|
+ state.isWaiting = false
|
|
|
+ answer.loading = false
|
|
|
+ answer.text += text
|
|
|
+ answer.error = true
|
|
|
+ scrollToEnd()
|
|
|
+ state.isStop = false
|
|
|
+ },
|
|
|
})
|
|
|
+ } else {
|
|
|
+ ElMessage.warning('请输入问题!')
|
|
|
}
|
|
|
}
|
|
|
const onStop = () => {}
|