Commit 56d379cc authored by mhw's avatar mhw

版本跟新

parent ffe42966
<!-- 创建数据集 --> <!-- 创建数据集 -->
<template> <template>
<el-form label-position="left" ref="form" label-width="100px" :model="form" :size="defaultFormItemSize"> <el-form label-position="left" ref="form" label-width="100px" :rules="rules" :model="form" :size="defaultFormItemSize">
<el-row class="title">基本信息</el-row> <el-row class="title">基本信息</el-row>
<el-form-item label="数据集名称:"> <el-form-item label="数据集名称:" prop="datasetName">
<el-input v-model="form.datasetName" class="inputWidth" :size="defaultFormItemSize"></el-input> <el-input v-model="form.datasetName" class="inputWidth" :size="defaultFormItemSize"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="数据类型:"> <el-form-item label="数据类型:">
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
{{ 'V1' }} {{ 'V1' }}
</el-form-item> </el-form-item>
<el-form-item label="标注类型:"> <el-form-item label="标注类型:">
<el-radio v-for="item in LabelType.getList()" :key="item.id" v-model="form.dimensionType" :label="item.id">{{item.name}}</el-radio> <el-radio v-for="item in LabelType.getList()" :key="item.id" v-model="form.dimensionType" :label="item.id" @change="isText">{{item.name}}</el-radio>
</el-form-item> </el-form-item>
...@@ -41,8 +41,10 @@ export default { ...@@ -41,8 +41,10 @@ export default {
'deletedFlag': 0, 'deletedFlag': 0,
'dimensionType': 0, 'dimensionType': 0,
'template': 0 'template': 0
},
rules: {
datasetName: [{required: true, message: '数据集名称不能为空', trigger: 'blur'}]
} }
}; };
}, },
props: ['isEdit', 'item'], props: ['isEdit', 'item'],
...@@ -95,10 +97,15 @@ export default { ...@@ -95,10 +97,15 @@ export default {
}); });
} }
} else { } else {
reject(); // reject();
} }
}); });
}); });
},
isText (data) {
if (data !== 0) {
this.form.template = undefined
}
} }
} }
}; };
......
<!-- --> <!-- -->
<template> <template>
<el-form label-position="left" ref="form" label-width="80px" :model="form" :size="defaultFormItemSize"> <el-form label-position="left" ref="form" label-width="80px" :model="form" :size="defaultFormItemSize" :rules="rules">
<el-form-item label="数据集版本:"> <el-form-item label="数据集版本:">
V {{ form.datasetVersion }} V {{ form.datasetVersion }}
...@@ -13,11 +13,11 @@ ...@@ -13,11 +13,11 @@
<el-form-item label="继承历史版本:"> <el-form-item label="继承历史版本:">
<el-switch v-model="form.isInherit" active-color="#13ce66" inactive-color="#ff4949" :active-value="1" <el-switch v-model="form.isInherit" active-color="#13ce66" inactive-color="#ff4949" :active-value="1"
:inactive-value="0"> :inactive-value="0" @change="isInherit">
</el-switch> </el-switch>
</el-form-item> </el-form-item>
<el-form-item label="历史版本:" v-if="form.isInherit == 1"> <el-form-item label="历史版本:" v-if="form.isInherit == 1" prop="hisVersion">
<el-select v-model="form.hisVersion" placeholder="请选择"> <el-select v-model="form.hisVersion" placeholder="请选择">
<el-option v-for="item in tableData.datasetVersionList" :key="item.datasetVersion" <el-option v-for="item in tableData.datasetVersionList" :key="item.datasetVersion"
:label="'V' + item.datasetVersion" :value="item.datasetVersion"> :label="'V' + item.datasetVersion" :value="item.datasetVersion">
...@@ -25,11 +25,11 @@ ...@@ -25,11 +25,11 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<template v-else> <template v-else>
<el-form-item label="标注类型:"> <el-form-item label="标注类型:" prop="dimensionType">
<el-radio v-for="item in LabelType.getList()" :key="item.id" v-model="form.dimensionType" <el-radio v-for="item in LabelType.getList()" :key="item.id" v-model="form.dimensionType" @change="isText"
:label="item.id">{{ item.name }}</el-radio> :label="item.id">{{ item.name }}</el-radio>
</el-form-item> </el-form-item>
<el-form-item label="标注模版:" v-if="form.dimensionType === 0"> <el-form-item label="标注模版:" v-if="form.dimensionType === 0" prop="template">
<el-radio v-for="item in MarkTemplate.getList()" :key="item.id" v-model="form.template" <el-radio v-for="item in MarkTemplate.getList()" :key="item.id" v-model="form.template"
:label="item.id">{{ item.name }}</el-radio> :label="item.id">{{ item.name }}</el-radio>
</el-form-item> </el-form-item>
...@@ -48,18 +48,18 @@ export default { ...@@ -48,18 +48,18 @@ export default {
data () { data () {
return { return {
form: { form: {
'cleanStatus': 0,
'dataVolume': 0,
'datasetId': 0,
'datasetVersion': this.tableData.datasetVersionList.slice(-1)[0].datasetVersion + 1, 'datasetVersion': this.tableData.datasetVersionList.slice(-1)[0].datasetVersion + 1,
'enhanceStatus': 0, isInherit: 1,
'inputStatus': 0, hisVersion: undefined,
'markProgress': 0, dimensionType: undefined,
'outputStatus': 0, template: undefined
'releaseStatus': 0 },
rules: {
hisVersion: [{required: true, message: '历史版本不能为空', trigger: 'blur'}],
dimensionType: [{required: true, message: '标注模版不能为空', trigger: 'blur'}],
template: [{required: true, message: '标注模版', trigger: 'blur'}]
} }
}; };
}, },
props: ['isEdit', 'tableData'], props: ['isEdit', 'tableData'],
...@@ -107,10 +107,23 @@ export default { ...@@ -107,10 +107,23 @@ export default {
}); });
} }
} else { } else {
reject(); // reject();
} }
}); });
}); });
},
isInherit (data) {
if (data === 1) {
this.form.dimensionType = undefined
this.form.template = undefined
} else if (data === 0) {
this.form.hisVersion = undefined
}
},
isText (data) {
if (data !== 0) {
this.form.template = undefined
}
} }
} }
}; };
......
<!-- 基本信息 --> <!-- 基本信息 -->
<template> <template>
<el-form label-position="left" ref="form" label-width="80px" :model="form" :size="defaultFormItemSize" :rules="rules"> <el-form label-position="left" ref="form" label-width="120px" :model="form" :size="defaultFormItemSize" :rules="rules">
<el-row class="title">基本信息</el-row> <el-row class="title">基本信息</el-row>
<el-form-item label="知识库名称:" prop="knowledgeName"> <el-form-item label="知识库名称:" prop="knowledgeName">
<el-input :disabled="this.isEdit" v-model="form.knowledgeName" class="inputWidth" :size="defaultFormItemSize" ></el-input> <el-input :disabled="this.isEdit" v-model="form.knowledgeName" class="inputWidth" :size="defaultFormItemSize" ></el-input>
...@@ -28,9 +28,9 @@ export default { ...@@ -28,9 +28,9 @@ export default {
knowledgeId: undefined knowledgeId: undefined
}, },
rules: { rules: {
// taskName: [ knowledgeName: [
// { required: true, message: '请填写知识库名称', trigger: 'blur' } { required: true, message: '请填写知识库名称', trigger: 'blur' }
// ] ]
} }
}; };
}, },
...@@ -76,8 +76,8 @@ export default { ...@@ -76,8 +76,8 @@ export default {
}); });
} }
} else { } else {
this.$message.error('请完善必填信息'); // this.$message.error('请完善必填信息');
reject(); // reject();
} }
}); });
}); });
......
<!-- 创建sft模板 --> <!-- 创建sft模板 -->
<template> <template>
<el-form label-position="left" ref="form" label-width="100px" :model="form" :size="defaultFormItemSize"> <el-form label-position="left" ref="form" label-width="120px" :model="form" :size="defaultFormItemSize" :rules="rules">
<el-row class="title">基本信息</el-row> <el-row class="title">基本信息</el-row>
<el-form-item label="任务名称:"> <el-form-item label="任务名称:" prop="tuningTaskDto.taskName">
<el-input v-model="form.tuningTaskDto.taskName" :readonly="isEdit||existingTask" class="inputWidth" :size="defaultFormItemSize" v-if="!(isEdit||existingTask)" ></el-input> <el-input v-model="form.tuningTaskDto.taskName" :readonly="isEdit||existingTask" class="inputWidth" :size="defaultFormItemSize" v-if="!(isEdit||existingTask)" ></el-input>
<span v-else>{{ form.tuningTaskDto.taskName }}</span> <span v-else>{{ form.tuningTaskDto.taskName }}</span>
</el-form-item> </el-form-item>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<el-row class="title">训练配置</el-row> <el-row class="title">训练配置</el-row>
<el-row> <span class="introduce">训练任务的算法选择、参数及相关配置,训练配置参数影响训练速度及模型效果。</span></el-row> <el-row> <span class="introduce">训练任务的算法选择、参数及相关配置,训练配置参数影响训练速度及模型效果。</span></el-row>
<el-form-item label="选择基础模型版本:"> <el-form-item label="选择基础模型版本:" prop="tuningRunDto.modelVersionId">
<el-cascader v-model="form.tuningRunDto.modelVersionId" :options="modelList" <el-cascader v-model="form.tuningRunDto.modelVersionId" :options="modelList"
:props='{ label: "name", value: "id", emitPath: false }'></el-cascader> :props='{ label: "name", value: "id", emitPath: false }'></el-cascader>
</el-form-item> </el-form-item>
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<el-row class="title">数据配置</el-row> <el-row class="title">数据配置</el-row>
<el-row> <span class="introduce"> 训练任务的选择数据及相关配置,支持选择该模型可使用的数据。</span></el-row> <el-row> <span class="introduce"> 训练任务的选择数据及相关配置,支持选择该模型可使用的数据。</span></el-row>
<el-form-item label="选择数据集版本"> <el-form-item label="选择数据集版本" prop="tuningRunDto.datasetVersionId">
<el-cascader v-model="form.tuningRunDto.datasetVersionId" :options="dataList" <el-cascader v-model="form.tuningRunDto.datasetVersionId" :options="dataList"
:props='{ label: "name", value: "id", emitPath: false }'></el-cascader> :props='{ label: "name", value: "id", emitPath: false }'></el-cascader>
...@@ -74,15 +74,26 @@ export default { ...@@ -74,15 +74,26 @@ export default {
'splitRatio': 0, 'splitRatio': 0,
'taskId': undefined, 'taskId': undefined,
'trainMethod': 'full', 'trainMethod': 'full',
'trainMode': '' 'trainMode': '',
datasetVersionId: undefined,
modelVersionId: undefined
}, },
'tuningTaskDto': { 'tuningTaskDto': {
'taskDescribe': '', 'taskDescribe': '',
'taskName': '', 'taskName': '',
'taskType': 0 'taskType': 0
} }
},
rules: {
'tuningTaskDto.taskName': [
{ required: true, message: '请输入任务名称', trigger: 'blur' }
],
'tuningRunDto.modelVersionId': [{ required: true, message: '请选择基础模型版', trigger: 'blur' }],
'tuningRunDto.datasetVersionId': [{ required: true, message: '请选择数据集版本', trigger: 'blur' }]
} }
}; };
}, },
props: ['isEdit', 'item', 'existingTask'], props: ['isEdit', 'item', 'existingTask'],
...@@ -141,7 +152,7 @@ export default { ...@@ -141,7 +152,7 @@ export default {
}); });
} }
} else { } else {
reject(); // reject();
} }
}); });
}); });
......
...@@ -179,7 +179,7 @@ export default { ...@@ -179,7 +179,7 @@ export default {
component: 'el-input-number', component: 'el-input-number',
property: property:
{ {
max: 10, max: 500,
min: 0 min: 0
} }
} }
......
...@@ -119,7 +119,7 @@ export default { ...@@ -119,7 +119,7 @@ export default {
methods: { methods: {
init (run = false) { init (run = false) {
if (run || this.item.runStatus === 1 || this.item.runStatus === 2) { // 训练完成 if (run || this.item.runStatus === 1 || this.item.runStatus === 2 || this.item.runStatus === -1) { // 训练完成
TuningRun.getStatus(this, {runId: this.item.runId}).then((res) => { TuningRun.getStatus(this, {runId: this.item.runId}).then((res) => {
this.assessmentReport = JSON.parse(res.data) this.assessmentReport = JSON.parse(res.data)
let logHistory = this.assessmentReport.log_history.slice(0, -1) let logHistory = this.assessmentReport.log_history.slice(0, -1)
......
...@@ -44,7 +44,7 @@ export default { ...@@ -44,7 +44,7 @@ export default {
methods: { methods: {
init (run = false) { init (run = false) {
if (run || this.item.runStatus === 1 || this.item.runStatus === 2) { // 训练完成 if (run || this.item.runStatus === 1 || this.item.runStatus === 2 || this.item.runStatus === -1) { // 训练完成
TuningRun.getLog(this, {runId: this.item.runId}).then((res) => { TuningRun.getLog(this, {runId: this.item.runId}).then((res) => {
this.allLog = res.data this.allLog = res.data
}) })
......
<!-- 创建模型压缩 --> <!-- 创建模型压缩 -->
<template> <template>
<el-form label-position="left" ref="form" label-width="100px" :model="form" :size="defaultFormItemSize"> <el-form label-position="left" ref="form" label-width="100px" :model="form" :size="defaultFormItemSize" :rules="rules">
<el-row class="title">基本信息</el-row> <el-row class="title">基本信息</el-row>
<el-form-item label="任务名称:"> <el-form-item label="任务名称:" prop="modelCompressDto.taskName">
<el-input v-model="form.modelCompressDto.taskName" class="inputWidth" :size="defaultFormItemSize"></el-input> <el-input v-model="form.modelCompressDto.taskName" class="inputWidth" :size="defaultFormItemSize"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="任务描述:"> <el-form-item label="任务描述:">
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
</el-form-item> </el-form-item>
<el-row class="title">压缩配置</el-row> <el-row class="title">压缩配置</el-row>
<el-form-item label="选择源模型:"> <el-form-item label="选择源模型:" prop="modelCompressDto.sourceVersionId" >
<el-cascader v-model="form.modelCompressDto.sourceVersionId" :options="modelList" <el-cascader v-model="form.modelCompressDto.sourceVersionId" :options="modelList"
:props='{ label: "name", value: "id", emitPath: false }'></el-cascader> :props='{ label: "name", value: "id", emitPath: false }'></el-cascader>
...@@ -22,18 +22,17 @@ ...@@ -22,18 +22,17 @@
</el-form-item> </el-form-item>
<el-form-item label="模型创建⽅式:" class="inputWidth"> <el-form-item label="模型创建⽅式:" class="inputWidth">
<el-radio v-for="item in ModelCreationMode.getList()" :key="item.id" v-model="form.modelCompressDto.createMethod" :label="item.id">{{ item.name}}</el-radio> <el-radio v-for="item in ModelCreationMode.getList()" :key="item.id" v-model="form.modelCompressDto.createMethod" :label="item.id" @change="createMethod">{{ item.name}}</el-radio>
</el-form-item> </el-form-item>
<el-form-item label="选择已有模型:" v-if="form.modelCompressDto.createMethod===0"> <el-form-item label="选择已有模型:" v-if="form.modelCompressDto.createMethod===0" prop="modelCompressDto.targetModelId">
<el-select v-model="form.modelCompressDto.targetModelId" placeholder="请选择" class="inputWidth" > <el-select v-model="form.modelCompressDto.targetModelId" placeholder="请选择" class="inputWidth" >
<el-option v-for="item in modelList" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option v-for="item in modelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="新建模型名称:" v-else> <el-form-item label="新建模型名称:" v-else prop="modelCompressDto.targetModelName">
<el-input v-model="form.modelCompressDto.targetModelName" class="inputWidth" :size="defaultFormItemSize"></el-input> <el-input v-model="form.modelCompressDto.targetModelName" class="inputWidth" :size="defaultFormItemSize"></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item label="压缩策略:"> <!-- <el-form-item label="压缩策略:">
<el-select v-model="value" placeholder="请选择"> <el-select v-model="value" placeholder="请选择">
<el-option v-for="item in []" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option v-for="item in []" :key="item.value" :label="item.label" :value="item.value"></el-option>
...@@ -68,7 +67,8 @@ export default { ...@@ -68,7 +67,8 @@ export default {
'sourceVersionId': undefined, 'sourceVersionId': undefined,
'targetModelId': undefined, 'targetModelId': undefined,
'taskDescribe': undefined, 'taskDescribe': undefined,
'taskName': undefined 'taskName': undefined,
targetModelName: undefined
}, },
'modelTaskDto': { 'modelTaskDto': {
// 'completeTime': '', // 'completeTime': '',
...@@ -80,6 +80,15 @@ export default { ...@@ -80,6 +80,15 @@ export default {
// 'versionId': 0, // 'versionId': 0,
// 'versionName': '' // 'versionName': ''
} }
},
rules: {
'modelCompressDto.taskName': [
{ required: true, message: '请输入任务名称', trigger: 'blur' }
],
'modelCompressDto.sourceVersionId': [{ required: true, message: '请选择源模型', trigger: 'blur' }],
'modelCompressDto.targetModelId': [{ required: true, message: '请选择已有模型', trigger: 'blur' }],
'modelCompressDto.targetModelName': [{ required: true, message: '请输入新建模型名称', trigger: 'blur' }]
} }
}; };
...@@ -148,6 +157,13 @@ export default { ...@@ -148,6 +157,13 @@ export default {
}).catch(e => { }).catch(e => {
console.log(e); console.log(e);
}); });
},
createMethod (data) {
if (data === 0) {
this.form.modelCompressDto.targetModelName = undefined
} else if (data === 1) {
this.form.modelCompressDto.targetModelId = undefined
}
} }
} }
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
</vxe-column> </vxe-column>
<vxe-column field="sourceVersionId" title="源模型"> <vxe-column field="sourceVersionId" title="源模型">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.modelTask.versionName }} {{ scope.row.modelTask?.versionName }}
</template> </template>
</vxe-column> </vxe-column>
<vxe-column field="targetVersionId" title="压缩后模型"></vxe-column> <vxe-column field="targetVersionId" title="压缩后模型"></vxe-column>
......
<!-- 创建 --> <!-- 创建 -->
<template> <template>
<el-form label-position="left" ref="form" label-width="80px" :model="form" :size="defaultFormItemSize"> <el-form label-position="left" ref="form" label-width="100px" :model="form" :size="defaultFormItemSize" :rules="rules">
<el-row class="title">基本信息</el-row> <el-row class="title">基本信息</el-row>
<el-form-item label="任务名称:"> <el-form-item label="任务名称:" prop="modelEstimateDto.taskName">
<el-input v-model="form.modelEstimateDto.taskName" class="inputWidth" :size="defaultFormItemSize"></el-input> <el-input v-model="form.modelEstimateDto.taskName" class="inputWidth" :size="defaultFormItemSize" ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="描述:"> <el-form-item label="描述:">
<el-input v-model="form.modelEstimateDto.taskDescribe" type="textarea" :rows="4" class="inputWidth" <el-input v-model="form.modelEstimateDto.taskDescribe" type="textarea" :rows="4" class="inputWidth"
...@@ -15,11 +15,11 @@ ...@@ -15,11 +15,11 @@
</el-form-item> </el-form-item>
<el-row class="title">评估配置</el-row> <el-row class="title">评估配置</el-row>
<el-form-item label="待评估模型:"> <el-form-item label="待评估模型:" prop="modelEstimateDto.modelVersionId">
<el-cascader v-model="form.modelEstimateDto.modelVersionId" :options="modelList" <el-cascader v-model="form.modelEstimateDto.modelVersionId" :options="modelList"
:props='{ label: "name", value: "id", emitPath: false }'></el-cascader> :props='{ label: "name", value: "id", emitPath: false }'></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="评估数据集:"> <el-form-item label="评估数据集:" prop="modelEstimateDto.datasetVersionId">
<el-cascader v-model="form.modelEstimateDto.datasetVersionId" :options="dataList" <el-cascader v-model="form.modelEstimateDto.datasetVersionId" :options="dataList"
:props='{ label: "name", value: "id", emitPath: false }'></el-cascader> :props='{ label: "name", value: "id", emitPath: false }'></el-cascader>
<el-row> <span class="introduce">支持选择平台数据服务模块已发布的“文本对话”类型数据集。</span></el-row> <el-row> <span class="introduce">支持选择平台数据服务模块已发布的“文本对话”类型数据集。</span></el-row>
...@@ -50,6 +50,14 @@ export default { ...@@ -50,6 +50,14 @@ export default {
'datasetVersionId': undefined, 'datasetVersionId': undefined,
'configuration': undefined 'configuration': undefined
} }
},
rules: {
'modelEstimateDto.taskName': [
{ required: true, message: '请输入任务名称', trigger: 'blur' }
],
'modelEstimateDto.modelVersionId': [{ required: true, message: '请选择待评估模型', trigger: 'blur' }],
'modelEstimateDto.datasetVersionId': [{ required: true, message: '请选择评估数据集', trigger: 'blur' }]
} }
}; };
...@@ -102,7 +110,7 @@ export default { ...@@ -102,7 +110,7 @@ export default {
}); });
} }
} else { } else {
reject(); // reject();
} }
}); });
}); });
......
...@@ -48,6 +48,7 @@ export default { ...@@ -48,6 +48,7 @@ export default {
computed: {}, computed: {},
mounted () { mounted () {
console.log(this.item);
this.formInit() this.formInit()
}, },
......
<!-- 基本信息--> <!-- 基本信息-->
<template> <template>
<el-form label-position="left" ref="form" label-width="100px" :model="form" :size="defaultFormItemSize"> <el-form label-position="left" ref="form" label-width="100px" :model="form" :size="defaultFormItemSize" :rules="rules">
<el-row class="title">基本信息</el-row> <el-row class="title">基本信息</el-row>
<el-form-item label="模型名称:"> <el-form-item label="模型名称:" prop="modelManageDto.modelName">
<el-input v-model="form.modelManageDto.modelName" class="inputWidth" :size="defaultFormItemSize"></el-input> <el-input v-model="form.modelManageDto.modelName" class="inputWidth" :size="defaultFormItemSize"></el-input>
<el-row> <span class="introduce">支持中英文、数字、下划线(_),2-20个字符,不能以下划线为开头</span></el-row> <el-row> <span class="introduce">支持中英文、数字、下划线(_),2-20个字符,不能以下划线为开头</span></el-row>
</el-form-item> </el-form-item>
...@@ -28,12 +28,12 @@ ...@@ -28,12 +28,12 @@
<el-option v-for="item in ModelTrainingMode.getList()" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option v-for="item in ModelTrainingMode.getList()" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="训练任务:"> <el-form-item label="训练任务:" prop="modelVersionDto.taskId">
<el-select v-model="form.modelVersionDto.taskId" placeholder="请选择" @change="getTuningRun(form.modelVersionDto.taskId)"> <el-select v-model="form.modelVersionDto.taskId" placeholder="请选择" @change="getTuningRun(form.modelVersionDto.taskId)">
<el-option v-for="item in taskList" :key="item.id" :label="item.name" :value="item.id" ></el-option> <el-option v-for="item in taskList" :key="item.id" :label="item.name" :value="item.id" ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="运行名称:"> <el-form-item label="运行名称:" prop="modelVersionDto.runId">
<el-select v-model="form.modelVersionDto.runId" placeholder="请选择" :disabled="!form.modelVersionDto.taskId"> <el-select v-model="form.modelVersionDto.runId" placeholder="请选择" :disabled="!form.modelVersionDto.taskId">
<el-option v-for="item in runNameList" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option v-for="item in runNameList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
...@@ -63,13 +63,16 @@ export default { ...@@ -63,13 +63,16 @@ export default {
'modelName': '', 'modelName': '',
'modelType': 0, 'modelType': 0,
'versionCount': 0 'versionCount': 0
}, },
'modelVersionDto': { 'modelVersionDto': {
taskId: undefined,
runId: undefined,
'baseModel': '', 'baseModel': '',
'businessLabel': '', 'businessLabel': '',
'copyright': '', 'copyright': '',
'ioMode': '', 'ioMode': '',
'modelTrainingMethod': '', 'modelTrainingMethod': 0,
'modelUrl': '', 'modelUrl': '',
'modelVersion': 1, 'modelVersion': 1,
'protocol': '', 'protocol': '',
...@@ -79,11 +82,21 @@ export default { ...@@ -79,11 +82,21 @@ export default {
'trainingTask': '', 'trainingTask': '',
'versionDescribe': '', 'versionDescribe': '',
'versionName': '', 'versionName': '',
'versionSource': '', 'versionSource': ''
'taskId': '',
'runId': ''
} }
},
rules: {
'modelManageDto.modelName': [
{ required: true, message: '请输入模型名称', trigger: 'blur' }
],
'modelVersionDto.taskId': [
{ required: true, message: '请选择训练任务', trigger: 'blur' }
],
'modelVersionDto.runId': [
{ required: true, message: '请选择运行名称', trigger: 'blur' }
]
} }
}; };
...@@ -140,7 +153,7 @@ export default { ...@@ -140,7 +153,7 @@ export default {
}); });
} }
} else { } else {
reject(); // reject();
} }
}); });
}); });
......
<!-- 基本信息--> <!-- 基本信息-->
<template> <template>
<el-form label-position="left" ref="form" label-width="100px" :model="form" :size="defaultFormItemSize"> <el-form label-position="left" ref="form" label-width="100px" :model="form" :size="defaultFormItemSize" :rules="rules">
<el-row class="title">基本信息</el-row> <el-row class="title">基本信息</el-row>
<el-form-item label="模型名称:"> <el-form-item label="模型名称:">
<span>{{ tableItem.modelName }}</span> <span>{{ tableItem.modelName }}</span>
</el-form-item> </el-form-item>
<el-form-item label="模型类型:"> <el-form-item label="模型类型:" >
<span>{{ ModelType.getValue(tableItem.modelType) }}</span> <span>{{ ModelType.getValue(tableItem.modelType) }}</span>
</el-form-item> </el-form-item>
<el-form-item label="业务标签:"> <el-form-item label="业务标签:">
...@@ -25,14 +25,14 @@ ...@@ -25,14 +25,14 @@
<el-option v-for="item in ModelTrainingMode.getList()" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option v-for="item in ModelTrainingMode.getList()" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="训练任务:"> <el-form-item label="训练任务:" prop="modelVersionDto.taskId">
<el-select v-model="form.modelVersionDto.trainingTask" placeholder="请选择"> <el-select v-model="form.modelVersionDto.taskId" placeholder="请选择" @change="getTuningRun(form.modelVersionDto.taskId)">
<el-option v-for="item in []" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option v-for="item in taskList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="运行名称:"> <el-form-item label="运行名称:" prop="modelVersionDto.runId">
<el-select v-model="form.modelVersionDto.runName" placeholder="请选择"> <el-select v-model="form.modelVersionDto.runId" placeholder="请选择" :disabled="!form.modelVersionDto.taskId">
<el-option v-for="item in []" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option v-for="item in runNameList" :key="item.value" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -45,20 +45,33 @@ ...@@ -45,20 +45,33 @@
<script> <script>
import { ModelVersion } from '@/api/gptController.js'; import { ModelVersion, TuningTask, TuningRun } from '@/api/gptController.js';
export default { export default {
data () { data () {
return { return {
taskList: [],
runNameList: [],
form: { form: {
'modelVersionDto': { 'modelVersionDto': {
taskId: undefined,
runId: undefined,
'modelId': '', 'modelId': '',
'modelTrainingMethod': '', // 'modelTrainingMethod': 0, //
'modelVersion': '', // 'modelVersion': '', //
'runName': '', // 'runName': '', //
'trainingTask': '', // 'trainingTask': '', //
'versionDescribe': '' // 'versionDescribe': '' //
} }
},
rules: {
'modelVersionDto.taskId': [
{ required: true, message: '请选择训练任务', trigger: 'blur' }
],
'modelVersionDto.runId': [
{ required: true, message: '请选择运行名称', trigger: 'blur' }
]
} }
}; };
...@@ -72,7 +85,8 @@ export default { ...@@ -72,7 +85,8 @@ export default {
mounted () { mounted () {
this.intFrom() this.intFrom()
console.log(this.tableItem);
this.getTaskList();
}, },
methods: { methods: {
...@@ -114,6 +128,25 @@ export default { ...@@ -114,6 +128,25 @@ export default {
} }
}); });
}); });
},
getTaskList () {
TuningTask.listForTree(this, {}).then(res => {
this.taskList = res.data.map((item) => {
return { id: item.taskId, name: item.taskName }
})
}).catch(e => {
console.log(e);
});
},
getTuningRun (taskId) {
TuningRun.listForTree(this, {tuningRunDtoFilter: {taskId: taskId}}).then(res => {
// console.log(res.data);
this.runNameList = res.data.map((item) => {
return { id: item.runId, name: item.runName }
})
}).catch(e => {
console.log(e);
});
} }
} }
}; };
......
<!-- 代码预览 --> <!-- 代码预览 -->
<template> <template>
<pre :class="'hx-scroll ' + lineNumbers"> <pre :class="'hx-scroll ' + lineNumbers">
<code :class="'language-'+ type" v-html="showCode" ></code> <code :class="'language-'+ type" type v-html="showCode" ></code>
</pre> </pre>
</template> </template>
......
<!-- 右侧聊天界面 --> <!-- 右侧聊天界面 -->
<template> <template>
<div class="box"> <div class="box">
<!-- {{ this.extractContent( item.answer, '```', '```') }} -->
<div class="contentBox" ref="contentBox" v-if="myHistory.length>0"> <div class="contentBox" ref="contentBox" v-if="myHistory.length>0">
<div v-for="(item,index) in myHistory" :key="index"> <div v-for="(item,index) in myHistory" :key="index">
<div class="userBox"> <div class="userBox">
...@@ -16,7 +18,11 @@ ...@@ -16,7 +18,11 @@
GPT GPT
</div> </div>
<div class="content"> <div class="content">
{{ item.answer }} <span v-if="item.answer">{{ item.answer }}</span>
<codePreview v-if="item.code.content" :type="item.code.language" :code="getcode(item.code.content)"/>
<span v-if="item.answer2">{{ item.answer2 }}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -40,9 +46,11 @@ ...@@ -40,9 +46,11 @@
<script> <script>
import { GetStreaming } from '@/utils/getStreaming.js'; import { GetStreaming } from '@/utils/getStreaming.js';
import codePreview from '../codePreview';
export default { export default {
data () { data () {
return { return {
x: '当然可以,以下是使用JavaScript编写的“Hello World”示例代码: ```javascript console.log("Hello World"); ``` 将此代码复制并粘贴到浏览器的控制台或Node.js环境中,按下回车键,你将看到控制台输出 “Hello World”。',
inputContent: null, inputContent: null,
myHistory: [], myHistory: [],
heistoryRotate: null, // 历史轮数 heistoryRotate: null, // 历史轮数
...@@ -56,15 +64,40 @@ export default { ...@@ -56,15 +64,40 @@ export default {
}; };
}, },
props: ['chatForm'], props: ['chatForm'],
components: {}, components: {codePreview},
computed: {
computed: {}, },
mounted () { mounted () {
// this.myHistory.push({
// 'role': 'user',
// 'content': this.inputContent,
// 'answer': '',
// 'code': {
// temporary: '',
// language: undefined,
// content: ''
// },
// 'answer2': ''
// })
// let a = '当然可以,以下是使用JavaScript编写的“Hello World”示例代码: ```javascript console.log("Hello World"); ``` 将此代码复制并粘贴到浏览器的控制台或Node.js环境中,按下回车键,你将看到控制台输出 “Hello World”。'
// for (let index = 0; index < a.length; index++) {
// setTimeout(() => {
// // b += a[index]
// this.onmessage(a[index])
// }, 100 * index);
// }
}, },
methods: { methods: {
getCode (answer) {
return this.extractContent(answer, '```', '```')
},
clear () { clear () {
this.param.query = null this.param.query = null
this.param.history = [] this.param.history = []
...@@ -90,7 +123,14 @@ export default { ...@@ -90,7 +123,14 @@ export default {
this.myHistory.push({ this.myHistory.push({
'role': 'user', 'role': 'user',
'content': this.inputContent, 'content': this.inputContent,
'answer': '' 'answer': '',
'code': {
temporary: '',
language: undefined,
content: ''
},
'answer2': ''
}) })
this.inputContent = null; this.inputContent = null;
this.param.history = this.myHistory.slice(0, -1).slice(-this.heistoryRotate).map((item) => { return { role: item.role, content: item.content } }) this.param.history = this.myHistory.slice(0, -1).slice(-this.heistoryRotate).map((item) => { return { role: item.role, content: item.content } })
...@@ -100,11 +140,43 @@ export default { ...@@ -100,11 +140,43 @@ export default {
getData.initeventSource() getData.initeventSource()
}, },
onmessage (data) { onmessage (data) {
this.myHistory[this.myHistory.length - 1].answer += data let nowChat = this.myHistory[this.myHistory.length - 1]
let code = nowChat.code
let languages = ['javascript', 'php', 'java', 'css', 'python', 'html', 'c', 'c++', 'c#']
if (nowChat.answer.indexOf('```') === -1) {
nowChat.answer += data
} else {
if (code.content.indexOf('```') === -1) {
if (code.temporary.indexOf('```') === -1) {
nowChat.code.content += data
}
nowChat.code.temporary += data
if (code.temporary.split(' ').length > 1) {
if (languages.indexOf(code.temporary.split(' ', 1)[0].toLowerCase()) === -1) {
code.language = undefined
} else {
code.language = code.temporary.split(' ')[0]
}
}
console.log(code);
} else {
console.log(data);
nowChat.answer2 += data
}
}
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.contentBox.scrollTo(0, this.$refs.contentBox.scrollHeight) this.$refs.contentBox.scrollTo(0, this.$refs.contentBox.scrollHeight)
}) })
},
getcode (data) {
if (this.myHistory[this.myHistory.length - 1].code.language) {
}
return data.split(' ').slice(1).join('').replace('```', '')
} }
} }
} }
...@@ -175,6 +247,7 @@ export default { ...@@ -175,6 +247,7 @@ export default {
background-color: #f3f3f3; background-color: #f3f3f3;
padding: 10px; padding: 10px;
border-radius: 10px; border-radius: 10px;
height: fit-content;
} }
.inputBox{ .inputBox{
display: flex; display: flex;
......
...@@ -130,7 +130,6 @@ export default { ...@@ -130,7 +130,6 @@ export default {
mounted () { mounted () {
this.formInit() this.formInit()
console.log(this.myDataSetPage.tableData.impl.dataList);
} }
}; };
</script> </script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment