模型评估查看报告
This commit is contained in:
parent
a1ce3b6ce5
commit
4ddcbb3442
@ -2,9 +2,11 @@ package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionPageReqVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionRespVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerPageReqVO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskDimensionDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ModelAssessTaskDimensionMapper;
|
||||
import cn.iocoder.yudao.module.llm.service.dataset.DatasetQuestionService;
|
||||
import cn.iocoder.yudao.module.llm.service.modelassesstaskmanual.ManualModelAnswerService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
@ -45,6 +47,8 @@ public class ModelAssessTaskManualController {
|
||||
private ModelAssessTaskManualService modelAssessTaskManualService;
|
||||
@Resource
|
||||
ModelAssessTaskDimensionMapper modelAssessTaskDimensionMapper;
|
||||
@Resource
|
||||
private ManualModelAnswerService manualModelAnswerService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建模型评估任务 —— 人工评估")
|
||||
@ -103,9 +107,17 @@ public class ModelAssessTaskManualController {
|
||||
@GetMapping("/gitReport")
|
||||
@Operation(summary = "查看报告详情")
|
||||
@PreAuthorize("@ss.hasPermission('llm:model-assess-task-manual:query')")
|
||||
public CommonResult<PageResult<ModelAssessTaskManualRespVO>> gitViewTheReportDetails(@Valid ModelAssessTaskManualPageReqVO pageReqVO) {
|
||||
public CommonResult<List<ManualEvaluationReportRespVO>> gitViewTheReportDetails(@RequestParam("id") Long id) {
|
||||
//TODO 人工评估-查看报告待补充
|
||||
return success(new PageResult<>());
|
||||
List<ManualEvaluationReportRespVO> manualEvaluationReportRespVOS = modelAssessTaskManualService.gitViewTheReportDetails(id);
|
||||
return success(manualEvaluationReportRespVOS);
|
||||
}
|
||||
|
||||
@GetMapping("/getManualAssessment")
|
||||
@Operation(summary = "获取模型结果")
|
||||
@PreAuthorize("@ss.hasPermission('llm:model-assess-task-manual:query')")
|
||||
public CommonResult<PageResult<ManualAssessmentPageRespVO>> getManualAssessment(@Valid ManualModelAnswerPageReqVO pageReqVO) {
|
||||
return success(manualModelAnswerService.getManualAssessment(pageReqVO));
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,28 @@
|
||||
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 ManualEvaluationReportRespVO {
|
||||
|
||||
@Schema(description = "评估维度")
|
||||
private String dimension;
|
||||
|
||||
@Schema(description = " 平均分数")
|
||||
private Double score;
|
||||
|
||||
@Schema(description = "百分比")
|
||||
private Double percent;
|
||||
|
||||
@Schema(description = "0分占比")
|
||||
private Double zeroPercent;
|
||||
|
||||
@Schema(description = "1分占比")
|
||||
private Double onePercent;
|
||||
|
||||
@Schema(description = "2分占比")
|
||||
private Double twoPercent;
|
||||
}
|
@ -54,5 +54,7 @@ public interface ModelAssessTaskManualService {
|
||||
PageResult<ModelAssessTaskManualDO> getModelAssessTaskManualPage(ModelAssessTaskManualPageReqVO pageReqVO);
|
||||
|
||||
|
||||
List<ManualEvaluationReportRespVO> gitViewTheReportDetails(Long id);
|
||||
|
||||
void backupModelAssessTaskManual(ModelAssessTaskManualBackupReqVO updateReqVO);
|
||||
}
|
||||
|
@ -5,10 +5,12 @@ import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionRe
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanualbackup.vo.ModelAssessTaskManualBackupSaveReqVO;
|
||||
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.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.ModelAssessDimensionMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ModelAssessTaskDimensionMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper;
|
||||
@ -23,6 +25,8 @@ import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
@ -63,6 +67,8 @@ public class ModelAssessTaskManualServiceImpl implements ModelAssessTaskManualSe
|
||||
private AsyncModelAccessManualService asyncModelAccessManualService;
|
||||
@Resource
|
||||
private ModelAssessTaskManualBackupService modelAssessTaskManualBackupService;
|
||||
@Resource
|
||||
private ManualModelAnnoMapper manualModelAnnoMapper;
|
||||
|
||||
@Override
|
||||
public Long createModelAssessTaskManual(ModelAssessTaskManualSaveReqVO createReqVO) {
|
||||
@ -202,4 +208,50 @@ public class ModelAssessTaskManualServiceImpl implements ModelAssessTaskManualSe
|
||||
this.modelAssessTaskManualBackupService.createModelAssessTaskManualBackup(backupDo);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
return manualEvaluationReportRespVOS;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user