src/views/dmx/knowledgeLib/test.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/sessionManager/components/updataFile.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/sessionManager/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/dmx/knowledgeLib/test.vue
@@ -1,24 +1,51 @@ <template> <div class="main-container"> <div class="main-container-lf"> <div class="main-container-lf-top">检索测试</div> <div class="main-container-lf-down"> <div style="color: #999;">最后一步! 成功后,剩下的就交给Infiniflow AI吧。</div> <div style="color: #999" >最后一步! 成功后,剩下的就交给Infiniflow AI吧。</div > <a-divider style="margin-top: 10px" /> <a-form ref="formRef" :model="form" :style="{width:'100%'}" layout="vertical" @submit="handleSubmit"> <a-form ref="formRef" :model="form" :style="{ width: '100%' }" layout="vertical" @submit="handleSubmit" > <a-form-item field="similarity_threshold" label="相似度阈值"> <a-slider v-model="form.similarity_threshold" :step="0.01" :min="0" :max="1" /> <a-slider v-model="form.similarity_threshold" :step="0.01" :min="0" :max="1" /> </a-form-item> <a-form-item field="slider" label="关键字相似度权重" > <a-slider v-model="form.vector_similarity_weight" :step="0.01" :min="0" :max="1" /> <a-slider v-model="form.vector_similarity_weight" :step="0.01" :min="0" :max="1" /> </a-form-item> <a-form-item field="section" label="Rerank模型" > <a-space direction="vertical" size="large"> <a-select :size="'large'" v-model="form.rerank_id" :style="{width:'100%'}" placeholder="请选择 ..." allow-clear> <a-optgroup :label="index" v-for="(item,index) in modelList" :key=index> <a-select :size="'large'" v-model="form.rerank_id" :style="{ width: '100%' }" placeholder="请选择 ..." allow-clear > <a-optgroup :label="index" v-for="(item, index) in modelList" :key="index" > <a-option v-for="(obj) in item" v-for="obj in item" :key="obj.fid" :disabled="!obj.available" :value="obj.llm_name" @@ -36,10 +63,25 @@ <div class="main-container-form-item-extra"> <div class="main-container-form-item-extra-top">测试文本</div> <div class="main-container-form-item-extra-down"> <a-textarea v-model="form.question" style="height: 10rem;border: 1px solid var(--color-fill-3);border-radius: 4px" placeholder="" allow-clear/> <a-textarea v-model="form.question" style=" height: 10rem; border: 1px solid var(--color-fill-3); border-radius: 4px; " placeholder="" allow-clear /> </div> <div class="main-container-form-item-extra-btn"> <a-button :disabled="!form.question" :loading="loading" type="primary" html-type="submit">测试</a-button> <a-button :disabled="!form.question" :loading="loading" type="primary" html-type="submit" >测试</a-button > </div> </div> </a-form-item> @@ -63,9 +105,9 @@ </template> <script lang="ts" setup> import { onMounted, onBeforeMount, reactive, ref, watch } from "vue"; import { onMounted, onBeforeMount, reactive, ref, watch } from 'vue'; import { Message } from '@arco-design/web-vue'; import { kbretrievalTest, queryModelList } from "@/api/kbList"; import { kbretrievalTest, queryModelList } from '@/api/kbList'; // const props = defineProps(['kbId']) // watch(() => props.kbId, (newValue, oldValue) => { @@ -73,7 +115,6 @@ // },{ // deep:true, // }); let visible = ref(false); let loading = ref(false); @@ -90,7 +131,6 @@ vector_similarity_weight: 0.7, }); const formatter = (value) => { // return String(Math.round(value / 100)) }; @@ -98,13 +138,15 @@ const handleSubmit = async ({values, errors}) => { // console.log(props.kbobj, 'props.kbobj'); if (!form.question){ return return; } let formObj = { ...form, kb_id:kbid.value, vector_similarity_weight:(1 - form.vector_similarity_weight).toFixed(2), } vector_similarity_weight: parseFloat( (1 - form.vector_similarity_weight).toFixed(2) ), }; if(!formObj.rerank_id){ delete formObj.top_k; delete formObj.rerank_id; @@ -122,27 +164,24 @@ Message.error(err.message); loading.value = false; } } }; const handleClick = () => { visible.value = true; }; const handleCancel = () => { visible.value = false; } }; const handleOpened =(el) => { Object.assign(form,{ }); Object.assign(form, {}); formRef.value.resetFields(); } }; const changekbid = (value) => { console.log(value, 'kbid的value'); kbid.value = value; } }; const queryModel = async (params) => { try { @@ -151,37 +190,28 @@ modelList.value = { BAAI: [data.data.BAAI[1]], Jina: data.data.Jina, youdao: data.data.youdao youdao: data.data.youdao, }; } catch (err) { // you can report use errorHandler or other } finally { } }; defineExpose({ changekbid }) changekbid, }); onBeforeMount(()=>{ queryModel({}) }) onMounted(()=>{ }) queryModel({}); }); onMounted(() => {}); </script> <script lang="ts"> export default { name: 'config', methods: { } methods: {}, }; </script> <style scoped lang="less"> src/views/sessionManager/components/updataFile.vue
@@ -364,11 +364,12 @@ const getParseMethodsList = async () => { let res = await getParseMethodsListApi(); parser_ids.value = res.data.map((item) => { console.log(item, item.parser_config_str, 78787); return { name: item.name, value: item.id, parser_config: '', parser_config_str: item.parser_config_str, parser_config_str: JSON.stringify(item.formats), }; }); parser_idsArr.value = res.data; src/views/sessionManager/index.vue
@@ -78,9 +78,38 @@ /> </template> <template #content> <div :class="{ chartUserText: theme === 'light' }" >{{ sessionDetail.content }} <div :class="{ chartUserText: theme === 'light' }"> {{ sessionDetail.content }} <!-- <a-input :style="{ width: '100%' }" v-model="sessionDetail.content" v-if="isEdit" /> <div v-else> {{ sessionDetail.content }} </div> --> </div> <!-- <div v-if="!isEdit"> <span class="action" v-if="index != 0" @click="copy(sessionDetail.content)" > <icon-copy /> 复制 </span> <span class="action" @click="edit()"> <icon-pen /> 编辑 </span> </div> <a-space v-else> <a-button type="outline" size="mini" @click="cancelEdit(1)" >取消</a-button > <a-button type="primary" size="mini" @click="cancelEdit(2)" >确定</a-button > </a-space> --> </template> </a-comment> <a-comment v-else-if="sessionDetail.role === 'assistant'"> @@ -99,8 +128,10 @@ backgroundColor: theme === 'light' ? '#ffffff' : '#000000', }" style="border: none;" v-for="(breakContent, breakIndex) in breakLine(sessionDetail.content)" style="border: none" v-for="(breakContent, breakIndex) in breakLine( sessionDetail.content )" > <div :class="{ chatItemAnswer: theme === 'light' }" @@ -108,15 +139,16 @@ backgroundColor: theme === 'light' ? '#ffffff' : '#000000', }" style="border: none;" v-if="isExistTip(breakContent)"> style="border: none" v-if="isExistTip(breakContent)" > <div :class="{ chatItemAnswer: theme === 'light' }" :style="{ backgroundColor: theme === 'light' ? '#ffffff' : '#000000', }" style="border: none;" style="border: none" v-for="(item, tipIndex) in tipMatch(breakContent)" > <span v-if="tipIndex == 0"> @@ -151,9 +183,7 @@ :src="tipImage" /> </a-tooltip> {{ breakContent.substring(item.index+5) }} {{ breakContent.substring(item.index + 5) }} </span> <span v-else> {{ @@ -185,7 +215,7 @@ <a-textarea readonly auto-size v-model="sessionDetail.content" :default-value="chartText(sessionDetail.content)" :class="{ chatItemAnswer: theme === 'light' }" :style="{ backgroundColor: @@ -194,6 +224,9 @@ style="border: none" > </a-textarea> <!-- <div v-html="chartText(sessionDetail.content)"> </div> --> </a-card> </template> <!-- <div>{{ sessionDetail.role === 'assistant' }}</div> --> @@ -237,6 +270,7 @@ > <icon-refresh /> 重新生成 </span> <!-- <span class="action"><icon-to-bottom />下载 </span> --> </template> </a-comment> <a-comment v-else-if="sessionDetail.role === 'last'"> @@ -502,7 +536,7 @@ import docx from '@/views/dmx/knowledgeLib/components/docx.vue'; import excel from '@/views/dmx/knowledgeLib/components/excel.vue'; import txtPdf from '@/views/dmx/knowledgeLib/components/txtPdf.vue'; import { is } from "immutable"; import { is } from 'immutable'; // const url = ref('../../assets/session/PDF.png'); @@ -589,17 +623,29 @@ const breakLine = (message: string): string[] => { //按\n分割字符串 let arr = message.split('\n'); return arr } return arr; }; const chartText = (message: string): string => { //去除所有的#和** let arr = message.replace(/\*\*|\#\#\#/g, ''); return arr; }; const tipMatch = (msg: string): any[] => { //match session.content中的##[0-9]$$的索引 let indexs: any[] = []; let preTip = 0; let matches=msg.match(/##([0-9]+)\$\$/g) let matches = msg.match(/##([0-9]+)\$\$/g); matches?.map((item) => { let i = msg.indexOf(item); indexs.push({ index: i, item: item, preIndex: preTip, len: matches.length }); indexs.push({ index: i, item: item, preIndex: preTip, len: matches.length, }); preTip = i; }); return indexs; @@ -713,6 +759,19 @@ await toClipboard(text); //参数为要复制的文本 }; const isEdit = ref(false); const edit = () => { isEdit.value = !isEdit.value; }; const cancelEdit = (val) => { if (val == 1) { isEdit.value = !isEdit.value; } else { //编辑保存 isEdit.value = !isEdit.value; } }; const DialogList = async () => { const { code, data } = await getDialogListApi(); if (code === 200) {