feat: 【应用】用户对话时可以设置显示知识来源(#45)

This commit is contained in:
shaohuzhang1 2024-04-25 16:13:14 +08:00 committed by GitHub
parent 72f43cff51
commit 38f2208639
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 10 deletions

View File

@ -53,6 +53,7 @@
<img src="@/assets/icon_robot.svg" style="width: 75%" alt="" /> <img src="@/assets/icon_robot.svg" style="width: 75%" alt="" />
</AppAvatar> </AppAvatar>
</div> </div>
<div class="content"> <div class="content">
<div class="flex" v-if="!item.answer_text"> <div class="flex" v-if="!item.answer_text">
<el-card <el-card
@ -72,7 +73,9 @@
<el-card v-else shadow="always" class="dialog-card"> <el-card v-else shadow="always" class="dialog-card">
<MdRenderer :source="item.answer_text"></MdRenderer> <MdRenderer :source="item.answer_text"></MdRenderer>
<div v-if="(id && !props.appId && item.write_ed) || log"> <div
v-if="(id && item.write_ed) || (props.data?.show_source && item.write_ed) || log"
>
<el-divider> <el-text type="info">知识来源</el-text> </el-divider> <el-divider> <el-text type="info">知识来源</el-text> </el-divider>
<div class="mb-8"> <div class="mb-8">
<el-space wrap> <el-space wrap>
@ -271,7 +274,7 @@ function openParagraph(row: any, id?: string) {
} }
function quickProblemHandle(val: string) { function quickProblemHandle(val: string) {
if (!props.log && !loading.value) { if (!props.log && !loading.value && props.data?.name && props.data?.model_id) {
// inputValue.value = val // inputValue.value = val
// nextTick(() => { // nextTick(() => {
// quickInputRef.value?.focus() // quickInputRef.value?.focus()
@ -488,7 +491,7 @@ function chatMessage(chat?: any, problem?: string, re_chat?: boolean) {
} }
}) })
.then(() => { .then(() => {
return !props.appId && getSourceDetail(chat) return (id || props.data?.show_source) && getSourceDetail(chat)
}) })
.finally(() => { .finally(() => {
ChatManagement.close(chat.id) ChatManagement.close(chat.id)
@ -505,14 +508,16 @@ function regenerationChart(item: chatType) {
} }
function getSourceDetail(row: any) { function getSourceDetail(row: any) {
logApi.getRecordDetail(id, chartOpenId.value, row.record_id, loading).then((res) => { logApi
const exclude_keys = ['answer_text', 'id'] .getRecordDetail(id || props.appId, chartOpenId.value, row.record_id, loading)
Object.keys(res.data).forEach((key) => { .then((res) => {
if (!exclude_keys.includes(key)) { const exclude_keys = ['answer_text', 'id']
row[key] = res.data[key] Object.keys(res.data).forEach((key) => {
} if (!exclude_keys.includes(key)) {
row[key] = res.data[key]
}
})
}) })
})
return true return true
} }

View File

@ -1,6 +1,9 @@
<template> <template>
<el-dialog title="访问限制" v-model="dialogVisible"> <el-dialog title="访问限制" v-model="dialogVisible">
<el-form label-position="top" ref="limitFormRef" :model="form"> <el-form label-position="top" ref="limitFormRef" :model="form">
<el-form-item label="显示知识来源" @click.prevent>
<el-switch size="small" v-model="form.show_source"></el-switch>
</el-form-item>
<el-form-item label="客户端提问限制"> <el-form-item label="客户端提问限制">
<el-input-number <el-input-number
v-model="form.access_num" v-model="form.access_num"
@ -51,6 +54,7 @@ const emit = defineEmits(['refresh'])
const limitFormRef = ref() const limitFormRef = ref()
const form = ref<any>({ const form = ref<any>({
show_source: false,
access_num: 0, access_num: 0,
white_active: true, white_active: true,
white_list: '' white_list: ''
@ -62,6 +66,7 @@ const loading = ref(false)
watch(dialogVisible, (bool) => { watch(dialogVisible, (bool) => {
if (!bool) { if (!bool) {
form.value = { form.value = {
show_source: false,
access_num: 0, access_num: 0,
white_active: true, white_active: true,
white_list: '' white_list: ''
@ -70,6 +75,7 @@ watch(dialogVisible, (bool) => {
}) })
const open = (data: any) => { const open = (data: any) => {
form.value.show_source = data.show_source
form.value.access_num = data.access_num form.value.access_num = data.access_num
form.value.white_active = data.white_active form.value.white_active = data.white_active
form.value.white_list = data.white_list?.length ? data.white_list?.join('\n') : '' form.value.white_list = data.white_list?.length ? data.white_list?.join('\n') : ''
@ -81,6 +87,7 @@ const submit = async (formEl: FormInstance | undefined) => {
await formEl.validate((valid, fields) => { await formEl.validate((valid, fields) => {
if (valid) { if (valid) {
const obj = { const obj = {
show_source: form.value.show_source,
white_list: form.value.white_list ? form.value.white_list.split('\n') : [], white_list: form.value.white_list ? form.value.white_list.split('\n') : [],
white_active: form.value.white_active, white_active: form.value.white_active,
access_num: form.value.access_num access_num: form.value.access_num