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