From bb2503ed5613cc39582acf1dd516fa7ac47540e7 Mon Sep 17 00:00:00 2001 From: liudong <liudong> Date: 星期六, 24 八月 2024 20:31:54 +0800 Subject: [PATCH] 知识库列表修改 --- src/views/sessionManager/index.vue | 104 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 80 insertions(+), 24 deletions(-) diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue index 96bc8bb..98e1f73 100644 --- a/src/views/sessionManager/index.vue +++ b/src/views/sessionManager/index.vue @@ -92,25 +92,40 @@ /> </template> <template #content> - <!-- <a-card :class="{ chatItemAnswer: theme === 'light' }">--> - <!-- <div--> - <!-- :class="{ light: theme === 'light' }"--> - <!-- v-html="sessionDetail.content.replace(/\n/g, '<br/>')"--> - <!-- >--> - <!-- </div>--> - <!-- </a-card>--> - <a-textarea - readonly - auto-size - v-model="sessionDetail.content" - :class="{ chatItemAnswer: theme === 'light' }" - :style="{ + <a-card v-if="isExistTip(sessionDetail.content)"> + <div :class="{ chatItemAnswer: theme === 'light' }" + :style="{backgroundColor: theme === 'light' ? '#ffffff' : '#000000'}" style="border: none;display: inline;" v-for="(item,tipIndex) in tipMatch(sessionDetail)" + > + <span v-if="tipIndex == 0"> + {{ sessionDetail.content.substring(0, item.index) }} + <a-tooltip background-color="#3491FA" :content="getTipContent( + messagenList.reference, + index + )"> + <img style="width: 20px;height: 20px" :src="tipImage" /> + </a-tooltip> + </span> + <span v-else> + {{ sessionDetail.content.substring(item.preIndex+item.item.length, item.index) }} + <a-tooltip background-color="#3491FA" :content="getTipContent( + messagenList.reference, + index + )"> + <img style="width: 20px;height: 20px" :src="tipImage" /> + </a-tooltip> + </span> + + </div> + </a-card> + <a-card v-else> + <div :class="{ chatItemAnswer: theme === 'light' }" + :style="{ backgroundColor: theme === 'light' ? '#ffffff' : '#000000', - }" - style="border: none" - > - </a-textarea> + }" style="border: none"> + {{ sessionDetail.content }} + </div> + </a-card> </template> <!-- <div>{{ sessionDetail.role === 'assistant' }}</div> --> <template #actions> @@ -407,6 +422,8 @@ import pdfImg3 from '@/assets/session/execl.png'; import pdfImg4 from '@/assets/session/icon-txt.png'; import pdfImg5 from '@/assets/session/txt.png'; + import tipImage from '@/assets/session/tip.png'; + import { number } from "@intlify/core-base"; // const url = ref('../../assets/session/PDF.png'); @@ -476,8 +493,28 @@ } }; let dataItem = []; - const getTxt = (data, role, message, index) => { + const isExistTip=(message:string):boolean=>{ if (/##[0-9]\$\$/.test(message)) { + return true; + } else { + return false; + } + } + + const tipMatch = (session: any): any[] => { + //match session.content涓殑##[0-9]$$鐨勭储寮� + let indexs: any[] = []; + let preTip=0; + session.content.match(/##([0-9]+)\$\$/g)?.map((item) => { + let i = session.content.indexOf(item); + indexs.push({ index: i, item: item, preIndex: preTip }); + preTip = i; + }); + return indexs; + } + + const getTxt = (data, role, message, index) => { + if (isExistTip(message)) { if (role == 'assistant' && index) { let i = index / 2 - 1 > 0 ? index / 2 - 1 : 0; dataItem = data[i].doc_aggs; @@ -487,6 +524,20 @@ } return dataItem; + }; + + const getTipContent = (data, index): string => { + let maxSimilarityContent = ""; + let i = index / 2 - 1 > 0 ? index / 2 - 1 : 0; + let maxSimilarity = 0; + data[i].chunks.forEach((chunk) => { + if (chunk.similarity > maxSimilarity) { + maxSimilarity = chunk.similarity; + maxSimilarityContent = chunk.content_with_weight; + } + } + ); + return maxSimilarityContent; }; const clickHref = (item) => { @@ -559,7 +610,10 @@ const selectFileCallback = (data) => { console.log(data, 'selectFileCallback'); - uploaditemList.value = data; + uploaditemList.value = [ + ...uploaditemList.value, + ...data + ]; }; let onFileSelectedLoading = ref(false); @@ -669,7 +723,6 @@ //鏂板缓浼氳瘽 // 濡傛灉鏈変細璇漣d console.log(inputMsg.value, '鏂板缓浼氳瘽鍚嶇О'); - const res = await addSessionApi({ dialog_id: '', conversation_desc: inputMsg.value, @@ -678,9 +731,13 @@ if (res.code == 200) { // console.log(res.data.conversation_id); activeSessionId.value = res.data?.conversation_id; - startChat(inputMsg.value); - inputMsg.value = ''; - // queryNewSessionDetail(res.data?.conversation_id); + const { code, data } = await getSessionDetailsApi(res.data?.conversation_id); + if (code === 200) { + console.log(data, '鏂板缓浼氳瘽璇︽儏'); + Object.assign(chatObj, data); + startChat(inputMsg.value); + inputMsg.value = ''; + } } else { Message.error('鍒涘缓浼氳瘽澶辫触锛岃閲嶈瘯'); } @@ -793,7 +850,6 @@ sessionDetailList.value = sessionDetailList.value .splice(0, sessionDetailList.value.length - 2) .concat(lastArr); - console.log(sessionDetailList.value, 'sessionDetailList2'); console.log(chatObj, 'chatObj瀵硅薄'); chatObj.message = chatObj.message.concat(lastArr); -- Gitblit v1.8.0