|
<template>
|
<a-button type="text" @click="handleClick" size="small">
|
<template #icon>
|
<icon-tool />
|
</template>
|
</a-button>
|
<a-modal
|
v-model:visible="visible"
|
title="解析方法"
|
@before-open="handleOpened"
|
@cancel="handleCancel"
|
@opened="handleOpened"
|
:footer="false"
|
title-align="start"
|
width="700px"
|
>
|
<div style="display: flex;align-items: center;">
|
<div>
|
解析方法:
|
</div>
|
<div style="margin-left: 10px">
|
<a-select v-model="form.parser_id" placeholder="请选择" >
|
<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="块token数"
|
:rules="[{type:'number', min:1,message:'slider is min than 1'}]">
|
<a-slider v-model="form.chunk_token_num" :max="1000" show-input />
|
</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.use_raptor" @change="onChangeRAPTOR" />
|
</a-space>
|
</a-form-item>
|
<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="请填写提示词" />
|
</a-form-item>
|
<a-form-item field="slider" label="最大token数"
|
:rules="[{type:'number', min:5,message:'slider is min than 5'}]">
|
<a-slider v-model="form.max_token" :min="1" :max="1000" show-input/>
|
</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.threshold" show-tooltip show-input/>
|
</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.max_cluster" :max="1000" show-input/>
|
</a-form-item>
|
<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.random_seed" :style="{width:'300px',marginRight:'1rem',borderRadius:'4px'}"
|
placeholder="请输入" class="input-demo" :min="10" :max="100" />
|
<a-button type="primary" @click="randomNumber">
|
<icon-plus />
|
</a-button>
|
|
</a-form-item>
|
|
</div>
|
<a-form-item>
|
<div style="width: 100%;text-align: right">
|
<a-button @click="visible = false">取消</a-button>
|
<a-button style="margin-left: 10px" type="primary" html-type="submit">确定</a-button>
|
</div>
|
</a-form-item>
|
</a-form>
|
</a-modal>
|
</template>
|
|
<script lang="ts" setup>
|
import { onMounted, onBeforeMount, reactive, ref, computed } 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'])
|
|
let threshold = computed(()=>{
|
return form.threshold/100;
|
})
|
|
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({
|
parser_id: props.item.parser_id,
|
doc_id: props.item.id,
|
max_token: 698,
|
threshold: 30,
|
max_cluster: 233,
|
random_seed: 1500,
|
chunk_token_num: 128,
|
use_raptor: false,
|
pages: {},
|
prompt: '请总结以下段落。 小心数字,不要编造。 段落如下:\n' +
|
' {cluster_content}\n' +
|
'以上就是你需要总结的内容。',
|
});
|
const formRef = ref(null);
|
|
const rules = {
|
prompt: [
|
{
|
required: true,
|
message:'提示词不允许为空',
|
},
|
],
|
}
|
const formatter = (value) => {
|
return value / 100
|
};
|
function randomNumber() {
|
// 生成一个介于min和max之间的随机整数(包含min和max)
|
const min = 1; // 最小值
|
const max = 10000; // 最大值
|
form.random_seed = Math.floor(Math.random() * (max - min + 1)) + min;
|
}
|
|
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 = () => {
|
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;
|
}
|
|
const handleOpened =(el) => {
|
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 = () => {
|
|
};
|
|
onBeforeMount(()=>{
|
|
})
|
onMounted(()=>{
|
|
|
})
|
</script>
|
|
<script lang="ts">
|
export default {
|
name: 'add',
|
methods: {
|
|
}
|
};
|
</script>
|