From 4ddcbb344221f781f0ab0058a4f285e9cfa112c7 Mon Sep 17 00:00:00 2001 From: sunxiqing <2240398334@qq.com> Date: Thu, 2 Jan 2025 20:23:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E8=AF=84=E4=BC=B0=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ModelAssessTaskManualController.java | 16 +++++- .../vo/ManualEvaluationReportRespVO.java | 28 ++++++++++ .../ModelAssessTaskManualService.java | 2 + .../ModelAssessTaskManualServiceImpl.java | 52 +++++++++++++++++++ 4 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/modelassesstaskmanual/vo/ManualEvaluationReportRespVO.java diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/modelassesstaskmanual/ModelAssessTaskManualController.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/modelassesstaskmanual/ModelAssessTaskManualController.java index ead32f138..5c05916ed 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/modelassesstaskmanual/ModelAssessTaskManualController.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/modelassesstaskmanual/ModelAssessTaskManualController.java @@ -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> gitViewTheReportDetails(@Valid ModelAssessTaskManualPageReqVO pageReqVO) { + public CommonResult> gitViewTheReportDetails(@RequestParam("id") Long id) { //TODO 人工评估-查看报告待补充 - return success(new PageResult<>()); + List manualEvaluationReportRespVOS = modelAssessTaskManualService.gitViewTheReportDetails(id); + return success(manualEvaluationReportRespVOS); + } + + @GetMapping("/getManualAssessment") + @Operation(summary = "获取模型结果") + @PreAuthorize("@ss.hasPermission('llm:model-assess-task-manual:query')") + public CommonResult> getManualAssessment(@Valid ManualModelAnswerPageReqVO pageReqVO) { + return success(manualModelAnswerService.getManualAssessment(pageReqVO)); } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/modelassesstaskmanual/vo/ManualEvaluationReportRespVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/modelassesstaskmanual/vo/ManualEvaluationReportRespVO.java new file mode 100644 index 000000000..3a02a0d1d --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/modelassesstaskmanual/vo/ManualEvaluationReportRespVO.java @@ -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; +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskmanual/ModelAssessTaskManualService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskmanual/ModelAssessTaskManualService.java index 265ac01f7..5cd177f21 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskmanual/ModelAssessTaskManualService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskmanual/ModelAssessTaskManualService.java @@ -54,5 +54,7 @@ public interface ModelAssessTaskManualService { PageResult getModelAssessTaskManualPage(ModelAssessTaskManualPageReqVO pageReqVO); + List gitViewTheReportDetails(Long id); + void backupModelAssessTaskManual(ModelAssessTaskManualBackupReqVO updateReqVO); } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskmanual/ModelAssessTaskManualServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskmanual/ModelAssessTaskManualServiceImpl.java index 7405f713a..caa66f225 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskmanual/ModelAssessTaskManualServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelassesstaskmanual/ModelAssessTaskManualServiceImpl.java @@ -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 gitViewTheReportDetails(Long id) { + ModelAssessTaskManualDO modelAssessTaskManual = modelAssessTaskManualMapper.selectById(id); + List manualEvaluationReportRespVOS = new ArrayList<>(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ManualModelAnnoDO::getManalTaskId,id); + List manualModelAnnoDOS = manualModelAnnoMapper.selectList(wrapper); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ModelAssessTaskDimensionDO::getTaskId,id); + List 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 modelAssessDimensionDOS = modelAssessDimensionMapper.selectList(); + Map longModelDimesionDOMap = cn.iocoder.yudao.framework.common.util.collection. + CollectionUtils.convertMap(modelAssessDimensionDOS, ModelAssessDimensionDO::getId); + + for (ModelAssessTaskDimensionDO modelAssessTaskDimensionDO : modelAssessTaskDimensionDOS){ + List 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; + } + }