liudong
2024-08-07 5f6418349271f5960d6a0a0024ecee3e0ca5c807
src/views/dmx/knowledgeLib/test.vue
@@ -8,18 +8,18 @@
          <a-divider style="margin-top: 10px" />
          <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"  :format-tooltip="formatter" />
              <a-slider v-model="form.similarity_threshold" :step="0.01" :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.vector_similarity_weight"  :format-tooltip="formatter" />
            <a-form-item field="slider" label="关键字相似度权重" >
              <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模型" :rules="[{match:/section one/,message:'请选择'}]">
            <a-form-item field="section" label="Rerank模型" >
              <a-space direction="vertical" size="large">
                <a-select :size="'large'" :default-value="form.rerank_id" :style="{width:'100%'}" placeholder="请选择 ..." allow-clear>
                <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"
                      :key=obj.fid
                      :key="obj.fid"
                      :disabled="!obj.available"
                      :value="obj.llm_name"
                    >
@@ -29,45 +29,25 @@
                </a-select>
              </a-space>
            </a-form-item>
            <a-form-item field="slider" label="Top-K" :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
            <a-form-item field="slider" label="Top-K" v-if="form.rerank_id">
              <a-slider v-model="form.top_k" :min="1" :max="2048" />
            </a-form-item>
            <a-form-item field="section" :rules="[{match:/section one/,message:'请选择'}]">
            <a-form-item >
              <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/>
                </div>
                <div class="main-container-form-item-extra-btn">
                  <a-button type="primary" html-type="submit">测试</a-button>
                  <a-button :disabled="!form.question" type="primary" html-type="submit">测试</a-button>
                </div>
              </div>
            </a-form-item>
<!--            <a-form-item>-->
<!--              <a-space>-->
<!--                <a-button html-type="submit">Submit</a-button>-->
<!--                <a-button @click="$refs.formRef.resetFields()">Reset</a-button>-->
<!--              </a-space>-->
<!--            </a-form-item>-->
          </a-form>
        </div>
      </div>
      <div class="main-container-rt">
        <a-collapse style="width: 96%;margin-top: 1rem;margin-left: 2%">
<!--          <a-collapse-item header="Beijing Toutiao Technology Co., Ltd." key="1">-->
<!--            <template #extra>-->
<!--              <icon-copy />-->
<!--            </template>-->
<!--            <div>Beijing Toutiao Technology Co., Ltd.</div>-->
<!--            <div>Beijing Toutiao Technology Co., Ltd.</div>-->
<!--          </a-collapse-item>-->
<!--          <a-collapse-item header="Beijing Toutiao Technology Co., Ltd." :key="2">-->
<!--            <template #extra>-->
<!--              <a-button type="primary" size="mini" @click.stop="sayHello">hello</a-button>-->
<!--            </template>-->
<!--            <div>Beijing Toutiao Technology Co., Ltd.</div>-->
<!--            <div>Beijing Toutiao Technology Co., Ltd.</div>-->
<!--          </a-collapse-item>-->
          <a-collapse-item header="0/0 选定的文件" key="3">
            <template #extra>
              <a-tag size="small">命中数</a-tag>
@@ -83,67 +63,62 @@
</template>
<script lang="ts" setup>
import { onMounted ,onBeforeMount, reactive, ref } from "vue";
import { onMounted, onBeforeMount, reactive, ref, watch } from "vue";
import { Message } from '@arco-design/web-vue';
import { kbretrievalTest, queryModelList } from "@/api/kbList";
// const props = defineProps(['kbId'])
const props = defineProps({
  kbobj: {
    type: Object,
    default: () => {
      return {}
    }
  }
})
// watch(() => props.kbId, (newValue, oldValue) => {
//   console.log('kbId 变化了', newValue, oldValue);
// },{
//   deep:true,
// });
let visible = ref(false);
let loading = ref(false);
const formRef = ref(null);
const kbid = ref('');
const modelList = ref({});
let form = reactive({
  kb_id: props.kbobj.kb_id,
  page: 1,
  question: '',
  rerank_id: '',
  similarity_threshold: 20,
  similarity_threshold: 0.2,
  size: 10,
  top_k: 1024,
  vector_similarity_weight: 30,
  vector_similarity_weight: 0.7,
});
const formatter = (value) => {
  return value / 100
};
const sayHello = () => {
  Message.info('hello');
  // return String(Math.round(value / 100))
};
const handleSubmit = async ({values, errors}) => {
  // console.log(props.kbobj, 'props.kbobj');
  if (!form.question){
    return
  }
  form.similarity_threshold = form.similarity_threshold/100;
  form.vector_similarity_weight = form.vector_similarity_weight/100;
   const data = await kbretrievalTest(form);
  console.log(data);
  let formObj = {
    ...form,
    kb_id:kbid.value,
    vector_similarity_weight:(1 - form.vector_similarity_weight).toFixed(2),
  }
  if(!formObj.rerank_id){
    delete formObj.top_k;
    delete formObj.rerank_id;
  }
  try {
    const data = await kbretrievalTest(formObj);
  }catch (err){
    Message.error(err.message);
  }
}
const handleClick = () => {
  visible.value = true;
};
const handleBeforeOk = (done) => {
    formRef.value.validate().then(res => {
      console.log('form:', form)
      if (!form.name) {
        done(false)
      }else {
        console.log('请求数据');
      }
    })
};
const handleCancel = () => {
  visible.value = false;
@@ -151,21 +126,20 @@
const handleOpened =(el) => {
  Object.assign(form,{
    name: '',// 用户名
    nameJoin: '',// 昵称
    post: '',// 岗位
    txt: '',// 备注
  });
  formRef.value.resetFields();
  // console.log(props.record, 'record');
  // if(props.edit == 'edit'){
  //   Object.assign(form,props.record);
  // }
}
const changekbid = (value) => {
  console.log(value, 'kbid的value');
  kbid.value = value;
}
const queryModel = async (params) => {
  try {
    const data = await queryModelList(params);
    console.log(data.data, '大模型列表');
    // console.log(data.data, '大模型列表');
    modelList.value = {
      BAAI: [data.data.BAAI[1]],
      Jina: data.data.Jina,
@@ -177,6 +151,12 @@
  }
};
defineExpose({
  changekbid
})
onBeforeMount(()=>{
  queryModel({})
})
@@ -184,6 +164,8 @@
})
</script>
<script lang="ts">
@@ -203,8 +185,8 @@
    &-lf{
      width: 30%;
      height: 100%;
      //border: 1px solid #cccccc;
      background: #ffffff;
      //border: 1px solid var(--color-fill-3);
      background: var(--color-bg-2);
      border-radius: 10px;
      overflow: hidden;
      &-top{
@@ -250,8 +232,8 @@
      width: 69%;
      height: 100%;
      //background: #626aea;
      //border: 1px solid #cccccc;
      background: #ffffff;
      //border: 1px solid var(--color-fill-3);
      background: var(--color-bg-2);
      border-radius: 10px;
    }
  }