refactor(yudao-module-llm): 优化模型评估人工标注数据查询

- 提取模型评估人工标注的模型回答
-批量获取数据集问题和答案,减少数据库查询次数
- 使用 Map 进行数据缓存,提高查询效率
- 重构代码结构,提高可读性和维护性
This commit is contained in:
sunxiqing 2025-09-17 14:16:06 +08:00
parent 31983fea91
commit 319a3164e3

View File

@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manual
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.LabelInformationVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualAssessmentPageRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualEvaluationReportRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskDimensionRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskManualPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskManualRespVO;
@ -81,15 +82,28 @@ public class ManualModelAnswerServiceImpl implements ManualModelAnswerService {
PageResult<ManualModelAnswerDO> modelAnswerDOPageResult = manualModelAnswerMapper.selectPage(pageReqVO);
List<ManualAssessmentPageRespVO> res = new ArrayList<>();
if(!CollectionUtils.isAnyEmpty(modelAnswerDOPageResult.getList())){
modelAnswerDOPageResult.getList().forEach(modelAnswerDO -> {
// 提取模型评估人工标注的模型回答
List<ManualModelAnswerDO> list = modelAnswerDOPageResult.getList();
// 获取数据集问题
List<Long> collected = list.stream().map(ManualModelAnswerDO::getQuestionId).collect(Collectors.toList());
List<DatasetQuestionDO> datasetQuestionDOS = datasetQuestionMapper.selectBatchIds(collected);
Map<Long, DatasetQuestionDO> questionMap = datasetQuestionDOS.stream().collect(Collectors.toMap(DatasetQuestionDO::getId, v -> v));
// 获取数据集答案
LambdaQueryWrapper<DatasetAnswerDO> wrapper = new LambdaQueryWrapper<DatasetAnswerDO>()
.in(DatasetAnswerDO::getQuestionId, collected);
List<DatasetAnswerDO> datasetAnswerDO = datasetAnswerMapper.selectList(wrapper);
Map<Long, List<DatasetAnswerDO>> collect = datasetAnswerDO.stream().collect(Collectors.groupingBy(DatasetAnswerDO::getQuestionId));
// 封装数据
list.forEach(modelAnswerDO -> {
ManualAssessmentPageRespVO resp = BeanUtils.toBean(modelAssessTaskManual, ManualAssessmentPageRespVO.class);
DatasetQuestionDO datasetQuestionDO = datasetQuestionMapper.selectById(modelAnswerDO.getQuestionId());
DatasetQuestionDO datasetQuestionDO = questionMap.get(modelAnswerDO.getQuestionId());
if (datasetQuestionDO==null){
throw exception(QUESTION_NOT_EXISTS);
}
List<DatasetAnswerDO> datasetAnswerDOS = datasetAnswerMapper.selectList(new LambdaQueryWrapper<>(DatasetAnswerDO.class).eq(DatasetAnswerDO::getQuestionId, modelAnswerDO.getQuestionId()));
List<DatasetAnswerDO> datasetAnswerDOS = collect.get(modelAnswerDO.getQuestionId());
String question = datasetQuestionDO.getQuestion();
if (StringUtils.isBlank(question)){
throw exception(QUESTION_NOT_EXISTS);