From d17d3ac3da20d054223a0b1b31909bd0d9caad4d Mon Sep 17 00:00:00 2001 From: liudong <liudong> Date: 星期一, 29 七月 2024 19:48:42 +0800 Subject: [PATCH] 知识库页面解析方法接口调用开发 --- src/views/dmx/knowledgeLib/tool.vue | 146 +++++++++++++++++++++++------------- src/views/dmx/knowledgeLib/index.vue | 35 +++++++- 2 files changed, 124 insertions(+), 57 deletions(-) diff --git a/src/views/dmx/knowledgeLib/index.vue b/src/views/dmx/knowledgeLib/index.vue index b04c3f4..8c3947b 100644 --- a/src/views/dmx/knowledgeLib/index.vue +++ b/src/views/dmx/knowledgeLib/index.vue @@ -166,6 +166,9 @@ <template #create_time="{ record }"> <span>{{parseTime(record.create_time)}}</span> </template> +<!-- <template #parser_id="{ record }">--> +<!-- <span>{{ parser_ids[record.parser_id]}}</span>--> +<!-- </template>--> <template #status="{ record }"> <a-switch v-model="record.status" checked-value="1" unchecked-value="0" @change="handleChangeStatus(record)"/> </template> @@ -210,9 +213,9 @@ </div> </template> <template #action="{ record }" > - <tool/> + <tool :kbtenantInfo="kbtenantInfo" :item="record" :kbdetail="kbdetail" /> <edit :item="record" @upTabdateItem="upTabdateItem"/> - <a-popconfirm :content="t('纭畾鍒犻櫎鍚�')" type="warning" @ok="deleteItem(record)"> + <a-popconfirm :content="'纭畾鍒犻櫎鍚�'" type="warning" @ok="deleteItem(record)"> <a-button type="text" size="small"> <template #icon> <icon-delete /> @@ -333,6 +336,20 @@ let detailsShow = ref(false) let selectedTab = ref(0) let kbobj = reactive({}) + let kbdetail = reactive({}) + let parser_ids = reactive({}) + let kbtenantInfo = reactive({ + "asr_id": "paraformer-realtime-8k-v1", + "embd_id": "BAAI/bge-large-zh-v1.5", + "img2txt_id": "qwen-vl-max", + "llm_id": "qwen-plus", + "name": "wanghao鈥榮 Kingdom", + "parser_ids": "naive:General,qa:Q&A,resume:Resume,manual:Manual,table:Table,paper:Paper,book:Book,laws:Laws,presentation:Presentation,picture:Picture,one:One", + "rerank_id": "BAAI/bge-reranker-v2-m3", + "role": "owner", + "tenant_id": "948fc6fa41ab11ef8fb80242ac120004", + parser_idObj:{} + }) let tabs = ref([]) const selectTab = (index,item) => { @@ -450,11 +467,21 @@ const data = await queryKbDocumentList(params); console.log(data, 'data'); if(data.code=='0'){ + // 璇︽儏 + // const kbtenantInfo = await queryKbtenantInfo(); + parser_ids = kbtenantInfo.parser_ids.split(',').reduce((acc, pair) => { + const [key, value] = pair.split(':'); + acc[key] = value; + return acc; + }, {}); + console.log(parser_ids, 'parser_ids'); + kbtenantInfo.parser_idObj = parser_ids; renderData.value = data.data.docs||[]; renderData.value = renderData.value.map((item) => { return { ...item, loading: false, + parser_id: parser_ids[item.parser_id], }; }); console.log(renderData.value, 'renderData.value'); @@ -462,11 +489,9 @@ pagination.current = params.page; pagination.total = data.data.total; // 鏌ヨ鐭ヨ瘑搴撹鎯� - const kbdetail = await queryKbdetail({ + kbdetail = await queryKbdetail({ kb_id:params.kb_id, }); - // 璇︽儏 - // const kbtenantInfo = await queryKbtenantInfo(); diff --git a/src/views/dmx/knowledgeLib/tool.vue b/src/views/dmx/knowledgeLib/tool.vue index 50a1a08..3ed8d18 100644 --- a/src/views/dmx/knowledgeLib/tool.vue +++ b/src/views/dmx/knowledgeLib/tool.vue @@ -10,6 +10,7 @@ title="瑙f瀽鏂规硶" @before-open="handleOpened" @cancel="handleCancel" + @opened="handleOpened" :footer="false" title-align="start" width="700px" @@ -19,56 +20,53 @@ 瑙f瀽鏂规硶: </div> <div style="margin-left: 10px"> - <a-select v-model="form.section" placeholder="璇烽�夋嫨" allow-clear> - <a-option value="section one">Section One</a-option> - <a-option value="section two">Section Two</a-option> - <a-option value="section three">Section Three</a-option> + <a-select v-model="form.parser_id" placeholder="璇烽�夋嫨" width="200px"> + <a-option v-for="item in parser_ids" :key="item.value" :label="item.name" :value="item.value"></a-option> </a-select> </div> </div> <a-form ref="formRef" :rules="rules" :model="form" auto-label-width @submit="handleSubmit" > <a-divider style="margin-top: 10px" /> - <a-form-item field="slider" label="鏈�澶oken鏁�" - :rules="[{type:'number', min:5,message:'slider is min than 5'}]"> - <a-slider v-model="form.section" :max="10" /> - <a-input-number v-model="form.section" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}" - placeholder="Please Enter" class="input-demo" :min="10" :max="1000" /> + <a-form-item field="slider" label="鍧梩oken鏁�" + :rules="[{type:'number', min:1,message:'slider is min than 1'}]"> + <a-slider v-model="form.chunk_token_num" :max="1000" /> + <a-input-number v-model="form.chunk_token_num" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}" + placeholder="璇疯緭鍏�" class="input-demo" :max="1000" /> </a-form-item> <a-divider style="margin-top: 10px" /> <a-form-item field="raptor" label="浣跨敤鍙洖澧炲己RAPTOR绛栫暐"> <a-space direction="vertical" size="large"> - <a-switch v-model="form.raptor" @change="onChangeRAPTOR" /> + <a-switch v-model="form.use_raptor" @change="onChangeRAPTOR" /> </a-space> </a-form-item> - <div v-if="form.raptor"> - <a-form-item field="section" label="鎻愮ず璇�"> + <div v-if="form.use_raptor"> + <a-form-item field="prompt" label="鎻愮ず璇�"> <a-textarea v-model="form.prompt" - style="height: 10rem;border: 1px solid var(--color-fill-3);border-radius: 4px" placeholder="" - allow-clear /> + style="height: 10rem;border: 1px solid var(--color-fill-3);border-radius: 4px" placeholder="璇峰~鍐欐彁绀鸿瘝" /> </a-form-item> <a-form-item field="slider" label="鏈�澶oken鏁�" :rules="[{type:'number', min:5,message:'slider is min than 5'}]"> - <a-slider v-model="form.score" :max="10" /> - <a-input-number v-model="form.score" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}" + <a-slider v-model="form.max_token" :min="1" :max="1000"/> + <a-input-number v-model="form.max_token" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}" placeholder="Please Enter" class="input-demo" :min="10" :max="1000" /> </a-form-item> <a-form-item field="slider" label="闃堝��" :rules="[{type:'number', min:5,message:'slider is min than 5'}]"> - <a-slider v-model="form.score" :max="10" /> - <a-input-number v-model="form.score" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}" - placeholder="Please Enter" class="input-demo" :min="10" :max="1000" /> + <a-slider v-model="form.threshold" :max="1" /> + <a-input-number v-model="form.threshold" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}" + placeholder="Please Enter" class="input-demo" :min="0" :max="1" /> </a-form-item> <a-form-item field="slider" label="鏈�澶ц仛绫绘暟" :rules="[{type:'number', min:5,message:'slider is min than 5'}]"> - <a-slider v-model="form.score" :max="10" /> - <a-input-number v-model="form.score" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}" + <a-slider v-model="form.max_cluster" :max="1000" /> + <a-input-number v-model="form.max_cluster" :style="{width:'100px',marginLeft:'2rem',borderRadius:'4px'}" placeholder="Please Enter" class="input-demo" :min="10" :max="1000" /> </a-form-item> - <a-form-item field="slider" label="闅忔満绉嶅瓙" + <a-form-item field="slider" label="闅忔満绉嶅瓙" v-model="form.random_seed" :rules="[{type:'number', min:5,message:'slider is min than 5'}]"> - <a-input-number v-model="form.score" :style="{width:'300px',marginRight:'1rem',borderRadius:'4px'}" + <a-input-number v-model="form.random_seed" :style="{width:'300px',marginRight:'1rem',borderRadius:'4px'}" placeholder="璇疯緭鍏�" class="input-demo" :min="10" :max="100" /> - <a-button type="primary" @click=""> + <a-button type="primary" @click="randomNumber"> <icon-plus /> </a-button> @@ -87,25 +85,34 @@ <script lang="ts" setup> import { onMounted ,onBeforeMount, reactive, ref } from "vue"; - +import { Message } from "@arco-design/web-vue"; +import {kbdocumentchangeparser} from "@/api/kbList"; const visible = ref(false); const loading = ref(false); + +const props = defineProps(['kbtenantInfo','item','kbdetail']) +// const emit = defineEmits(['upTabdateItem']) + +const kbtenantInfo = props.kbtenantInfo; + +let parser_ids = kbtenantInfo.parser_ids.split(',').map((item) => { + const [value1, value2] = item.split(':'); + return { + name: value2, + value: value1, + }; +}); + const form = reactive({ - size: "medium", - name: "", - age: undefined, - section: "0", - province: "haidian", - options: [], - date: "", - time: "", - radio: "radio one", - slider: 5, - score: 5, - switch: false, - multiSelect: ["section one"], - treeSelect: "", - raptor: true, + parser_id: props.item.parser_id, + doc_id: props.item.id, + max_token: 698, + threshold: 0.32, + max_cluster: 233, + random_seed: 1500, + chunk_token_num: 128, + use_raptor: false, + pages: {}, prompt: '璇锋�荤粨浠ヤ笅娈佃惤銆� 灏忓績鏁板瓧锛屼笉瑕佺紪閫犮�� 娈佃惤濡備笅锛歕n' + ' {cluster_content}\n' + '浠ヤ笂灏辨槸浣犻渶瑕佹�荤粨鐨勫唴瀹广��', @@ -113,17 +120,48 @@ const formRef = ref(null); const rules = { - name: [ + prompt: [ { required: true, - message:'鍚嶇О涓嶅厑璁镐负绌�', + message:'鎻愮ず璇嶄笉鍏佽涓虹┖', }, ], } + function randomNumber() { + // 鐢熸垚涓�涓粙浜巑in鍜宮ax涔嬮棿鐨勯殢鏈烘暣鏁帮紙鍖呭惈min鍜宮ax锛� + const min = 1; // 鏈�灏忓�� + const max = 10000; // 鏈�澶у�� + form.random_seed = Math.floor(Math.random() * (max - min + 1)) + min; + } -const handleSubmit = ({values, errors}) => { - console.log('values:', values, '\nerrors:', errors) +const handleSubmit = async ({values, errors}) => { + if(!errors){ + let data = await kbdocumentchangeparser({ + parser_id: form.parser_id, + doc_id: form.doc_id, + parser_config: { + raptor: { + use_raptor: form.use_raptor, + prompt: form.prompt, + max_token: form.max_token, + threshold: form.threshold, + max_cluster: form.max_cluster, + random_seed: form.random_seed, + }, + chunk_token_num: form.chunk_token_num, + pages: [ + + ] + } + }) + if(data.code == 0){ + Message.success('閰嶇疆鎴愬姛'); + }else{ + Message.error('閰嶇疆澶辫触'); + } + visible.value = false; + } } const handleClick = () => { @@ -145,17 +183,21 @@ } const handleOpened =(el) => { - Object.assign(form,{ - name: '',// 鐢ㄦ埛鍚� - nameJoin: '',// 鏄电О - post: '',// 宀椾綅 - txt: '',// 澶囨敞 - }); - formRef.value.resetFields(); + console.log('props',props.kbtenantInfo); + console.log('props',props.item); + console.log('props',props.kbdetail); + console.log(parser_ids, 'parser_ids'); + // Object.assign(form,{ + // name: '',// 鐢ㄦ埛鍚� + // nameJoin: '',// 鏄电О + // post: '',// 宀椾綅 + // txt: '',// 澶囨敞 + // }); + // formRef.value.resetFields(); } const onChangeRAPTOR = () => { - console.log(form.raptor); + }; onBeforeMount(()=>{ -- Gitblit v1.8.0