修改评估报告查看
This commit is contained in:
parent
c3f705ee4f
commit
b077188cbf
@ -28,8 +28,8 @@ public class ModelAssessTaskAutoSaveReqVO {
|
||||
@Schema(description = "数据集")
|
||||
private Long dataset;
|
||||
|
||||
@Schema(description = "数据集类型 0 普通 1 官方",example = "1")
|
||||
private Integer type;
|
||||
@Schema(description = "是否预知模型服务(0普通 1官方)",example = "0")
|
||||
private Integer modelType;
|
||||
|
||||
@Schema(description = "评估方向,使用字典(llm_dimension_type)")
|
||||
private Integer dimension;
|
||||
|
@ -0,0 +1,14 @@
|
||||
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@Schema(description = "管理后台 - 人工评估标注信息 Request VO")
|
||||
|
||||
@Data
|
||||
public class LabelInformationVO {
|
||||
|
||||
@Schema(description = "打分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
private Long score;
|
||||
@Schema(description = "标注", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
private String label;
|
||||
}
|
@ -44,14 +44,14 @@ public class ModelAssessTaskAutoDO extends BaseDO {
|
||||
* 模型服务
|
||||
*/
|
||||
private Long modelService;
|
||||
/**
|
||||
* 是否预知模型(0普通 1官方)
|
||||
*/
|
||||
private Integer modelType;
|
||||
/**
|
||||
* 数据集
|
||||
*/
|
||||
private Long dataset;
|
||||
/**
|
||||
* 数据集类型 0 普通 1 官方
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 评估方向,使用字典(llm_dimension_type)
|
||||
*/
|
||||
|
@ -6,11 +6,13 @@ import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanualbackup.
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassessstoplist.ModelAssessStoplistDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnnoDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnswerDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessDimensionDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskDimensionDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ManualModelAnnoMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ManualModelAnswerMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ModelAssessDimensionMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ModelAssessTaskDimensionMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper;
|
||||
@ -69,6 +71,8 @@ public class ModelAssessTaskManualServiceImpl implements ModelAssessTaskManualSe
|
||||
private ModelAssessTaskManualBackupService modelAssessTaskManualBackupService;
|
||||
@Resource
|
||||
private ManualModelAnnoMapper manualModelAnnoMapper;
|
||||
@Resource
|
||||
private ManualModelAnswerMapper manualModelAnswerMapper;
|
||||
|
||||
@Override
|
||||
public Long createModelAssessTaskManual(ModelAssessTaskManualSaveReqVO createReqVO) {
|
||||
@ -210,46 +214,52 @@ public class ModelAssessTaskManualServiceImpl implements ModelAssessTaskManualSe
|
||||
|
||||
@Override
|
||||
public List<ManualEvaluationReportRespVO> gitViewTheReportDetails(Long id) {
|
||||
ModelAssessTaskManualDO modelAssessTaskManual = modelAssessTaskManualMapper.selectById(id);
|
||||
List<ManualEvaluationReportRespVO> manualEvaluationReportRespVOS = new ArrayList<>();
|
||||
LambdaQueryWrapper<ManualModelAnnoDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ManualModelAnnoDO::getManalTaskId,id);
|
||||
List<ManualModelAnnoDO> manualModelAnnoDOS = manualModelAnnoMapper.selectList(wrapper);
|
||||
LambdaQueryWrapper<ModelAssessTaskDimensionDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ModelAssessTaskDimensionDO::getTaskId,id);
|
||||
List<ModelAssessTaskDimensionDO> modelAssessTaskDimensionDOS = modelAssessTaskDimensionMapper.selectList(queryWrapper);
|
||||
// 计算平均分
|
||||
double average = manualModelAnnoDOS.stream().mapToDouble(ManualModelAnnoDO::getScore).average().getAsDouble();
|
||||
double score =average * 50.0;
|
||||
ManualEvaluationReportRespVO reportRespVO = new ManualEvaluationReportRespVO();
|
||||
double bd = new BigDecimal(average).setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
double v = new BigDecimal(score).setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
reportRespVO.setDimension("平均分");
|
||||
reportRespVO.setScore(bd);
|
||||
reportRespVO.setPercent(v);
|
||||
manualEvaluationReportRespVOS.add(reportRespVO);
|
||||
List<ModelAssessDimensionDO> modelAssessDimensionDOS = modelAssessDimensionMapper.selectList();
|
||||
Map<Long, ModelAssessDimensionDO> longModelDimesionDOMap = cn.iocoder.yudao.framework.common.util.collection.
|
||||
CollectionUtils.convertMap(modelAssessDimensionDOS, ModelAssessDimensionDO::getId);
|
||||
|
||||
for (ModelAssessTaskDimensionDO modelAssessTaskDimensionDO : modelAssessTaskDimensionDOS){
|
||||
List<ManualModelAnnoDO> collect = manualModelAnnoDOS.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getDimensionId() == modelAssessTaskDimensionDO.getDimensionId()).collect(Collectors.toList());
|
||||
ModelAssessDimensionDO modelAssessDimensionDO = longModelDimesionDOMap.get(modelAssessTaskDimensionDO.getDimensionId());
|
||||
ManualEvaluationReportRespVO reportRespVO1 = new ManualEvaluationReportRespVO();
|
||||
reportRespVO1.setDimension(modelAssessDimensionDO.getDimension());
|
||||
double average1 = collect.stream().mapToDouble(ManualModelAnnoDO::getScore).average().getAsDouble();
|
||||
reportRespVO1.setScore(average1);
|
||||
reportRespVO1.setPercent(average1 * 50.0);
|
||||
long count = collect.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getScore() == 0).count();
|
||||
double zeroPercent = count / collect.size() * 100;
|
||||
reportRespVO1.setZeroPercent(new BigDecimal(zeroPercent).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||
long count1 = collect.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getScore() == 1).count();
|
||||
long count2 = collect.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getScore() == 2).count();
|
||||
double onePercent = count1 / collect.size() * 100;
|
||||
reportRespVO1.setOnePercent(new BigDecimal(onePercent).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||
double twoPercent = count2 / collect.size() * 100;
|
||||
reportRespVO1.setTwoPercent(new BigDecimal(twoPercent).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||
manualEvaluationReportRespVOS.add(reportRespVO1);
|
||||
LambdaQueryWrapper<ManualModelAnswerDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ManualModelAnswerDO::getManalTaskId,id)
|
||||
.eq(ManualModelAnswerDO::getStatus,2)
|
||||
.isNotNull(ManualModelAnswerDO::getReqRespVos);
|
||||
List<ManualModelAnswerDO> manualModelAnswerDOS = manualModelAnswerMapper.selectList(wrapper);
|
||||
// 获取维度
|
||||
List<String> collect =new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(manualModelAnswerDOS)){
|
||||
List<LabelInformationVO> bean = BeanUtils.toBean(manualModelAnswerDOS.get(0).getReqRespVos(), LabelInformationVO.class);
|
||||
collect = bean.stream().map(LabelInformationVO::getLabel).collect(Collectors.toList());
|
||||
}
|
||||
List<LabelInformationVO> labelInformationVOS = new ArrayList<>();
|
||||
for (ManualModelAnswerDO manualModelAnswerDO : manualModelAnswerDOS){
|
||||
List<LabelInformationVO> bean = BeanUtils.toBean(manualModelAnswerDO.getReqRespVos(), LabelInformationVO.class);
|
||||
labelInformationVOS.addAll(bean);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(labelInformationVOS)){
|
||||
// 计算平均分
|
||||
double average = labelInformationVOS.stream().mapToDouble(LabelInformationVO::getScore).average().getAsDouble();
|
||||
double score = average * 50.0;
|
||||
ManualEvaluationReportRespVO reportRespVO = new ManualEvaluationReportRespVO();
|
||||
double bd = new BigDecimal(average).setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
double v = new BigDecimal(score).setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
reportRespVO.setDimension("平均分");
|
||||
reportRespVO.setScore(bd);
|
||||
reportRespVO.setPercent(v);
|
||||
manualEvaluationReportRespVOS.add(reportRespVO);
|
||||
for (String collect1 : collect){
|
||||
List<LabelInformationVO> voList = labelInformationVOS.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getLabel().equals(collect1)).collect(Collectors.toList());
|
||||
ManualEvaluationReportRespVO reportRespVO1 = new ManualEvaluationReportRespVO();
|
||||
reportRespVO1.setDimension(collect1);
|
||||
double average1 = voList.stream().mapToDouble(LabelInformationVO::getScore).average().getAsDouble();
|
||||
reportRespVO1.setScore(average1);
|
||||
reportRespVO1.setPercent(average1 * 50.0);
|
||||
long count = voList.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getScore() == 0).count();
|
||||
double zeroPercent = count / voList.size() * 100;
|
||||
reportRespVO1.setZeroPercent(new BigDecimal(zeroPercent).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||
long count1 = voList.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getScore() == 1).count();
|
||||
long count2 = voList.stream().filter(manualModelAnswerDO -> manualModelAnswerDO.getScore() == 2).count();
|
||||
double onePercent = count1 / voList.size() * 100;
|
||||
reportRespVO1.setOnePercent(new BigDecimal(onePercent).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||
double twoPercent = count2 / voList.size() * 100;
|
||||
reportRespVO1.setTwoPercent(new BigDecimal(twoPercent).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||
manualEvaluationReportRespVOS.add(reportRespVO1);
|
||||
}
|
||||
}
|
||||
return manualEvaluationReportRespVOS;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user