模型回答人工标注

This commit is contained in:
limin 2025-01-02 19:06:51 +08:00
parent 043ec70a9b
commit 025fe4de99
7 changed files with 121 additions and 91 deletions

View File

@ -1,38 +1,25 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoSaveReqVO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualAssessmentPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualAssessmentPageRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskManualPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskManualRespVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnswerDO;
import cn.iocoder.yudao.module.llm.service.modelassesstaskmanual.ManualModelAnswerService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
@Tag(name = "管理后台 - 模型评估人工标注 模型回答")
@RestController
@ -44,12 +31,11 @@ public class ManualModelAnswerController {
private ManualModelAnswerService manualModelAnswerService;
@GetMapping("/getManualAssessment")
@Operation(summary = "人工评估")
@Operation(summary = "获取列表")
@PreAuthorize("@ss.hasPermission('llm:model-assess-task-manual:query')")
public CommonResult<PageResult<ModelAssessTaskManualRespVO>> getManualAssessment(@Valid ModelAssessTaskManualPageReqVO pageReqVO) {
public CommonResult<PageResult<ManualAssessmentPageRespVO>> getManualAssessment(@Valid ManualModelAnswerPageReqVO pageReqVO) {
//TODO 人工评估-人工评估标注补充
ManualAssessmentPageReqVO manualAssessment = manualModelAnswerService.getManualAssessment(pageReqVO);
return success(new PageResult<>());
return success(manualModelAnswerService.getManualAssessment(pageReqVO));
}
@PostMapping("/anno")
@Operation(summary = "人工标注")

View File

@ -1,24 +0,0 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionRespVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskDimensionDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskManualDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 人工评估标注 Request VO")
@Data
public class ManualAssessmentPageReqVO {
@Schema(description = "人工评估标注")
private PageResult<DatasetQuestionRespVO> datasetQuestionPage;
@Schema(description = "人工评估维度")
private List<ModelAssessTaskDimensionDO> modelAssessTaskDimensionDOS;
@Schema(description = "人工评估任务")
private ModelAssessTaskManualDO modelAssessTaskManualDO;
}

View File

@ -0,0 +1,78 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetAnswerRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerRespVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnswerDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskDimensionDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskManualDO;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 人工评估标注 Request VO")
@Data
public class ManualAssessmentPageRespVO {
@Schema(description = "评估任务ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16493")
@ExcelProperty("评估任务ID")
private Long id;
@Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("任务名称")
private String taskName;
@Schema(description = "任务描述")
@ExcelProperty("任务描述")
private String taskInfro;
@Schema(description = "CPU类型使用字典llm_cpu_type", example = "2")
@ExcelProperty(value = "CPU类型使用字典llm_cpu_type", converter = DictConvert.class)
@DictFormat("llm_cpu_type") // TODO 代码优化建议设置到对应的 DictTypeConstants 枚举类中
private Integer cpuType;
@Schema(description = "模型服务")
@ExcelProperty("模型服务")
private Long modelService;
@Schema(description = "数据集")
@ExcelProperty("数据集")
private Long dataset;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "人工评估列表")
private List<ModelAssessTaskDimensionRespVO> dimensions;
@Schema(description = "模型评估任务状态使用字典llm_model_assess_task_status")
private Integer status;
@Schema(description = "任务进度")
private Integer progress;
@Schema(description = "模型服务名称")
private String modelServiceName;
@Schema(description = "数据集名称")
private String datasetName;
@Schema(description = "数据集问题")
private String question;
@Schema(description = "数据集答案")
private List<DatasetAnswerRespVO> answers;
@Schema(description = "模型回答答案")
private String modelAnswer;
@Schema(description = "人工评估信息")
private List<ManualModelAnnoRespVO> manualModelAnnoRespVOS;
}

View File

@ -2,10 +2,9 @@ package cn.iocoder.yudao.module.llm.service.modelassesstaskmanual;
import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualAssessmentPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualAssessmentPageRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskManualPageReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnswerDO;
@ -57,5 +56,5 @@ public interface ManualModelAnswerService {
PageResult<ManualModelAnswerDO> getManualModelAnswerPage(ManualModelAnswerPageReqVO pageReqVO);
void annoManualModelAnswer(List<ManualModelAnswerSaveReqVO> reqRespVo);
ManualAssessmentPageReqVO getManualAssessment(ModelAssessTaskManualPageReqVO pageReqVO);
PageResult<ManualAssessmentPageRespVO> getManualAssessment(ManualModelAnswerPageReqVO pageReqVO);
}

View File

@ -1,24 +1,25 @@
package cn.iocoder.yudao.module.llm.service.modelassesstaskmanual;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetAnswerRespVO;
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.ManualModelAnnoSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualAssessmentPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ManualAssessmentPageRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskManualPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskManualRespVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetAnswerDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetQuestionDO;
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.ModelAssessTaskDimensionDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskManualDO;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetAnswerMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetQuestionMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.*;
import cn.iocoder.yudao.module.llm.service.dataset.DatasetQuestionService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springdoc.core.GenericResponseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -27,6 +28,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import java.util.ArrayList;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -53,6 +55,10 @@ public class ManualModelAnswerServiceImpl implements ManualModelAnswerService {
private ModelAssessTaskManualMapper modelAssessTaskManualMapper;
@Resource
private DatasetQuestionService datasetQuestionService;
@Resource
private DatasetQuestionMapper datasetQuestionMapper;
@Resource
private DatasetAnswerMapper datasetAnswerMapper;
/**
* 分页进行查询
@ -60,23 +66,28 @@ public class ManualModelAnswerServiceImpl implements ManualModelAnswerService {
* @return
*/
@Override
public ManualAssessmentPageReqVO getManualAssessment(ModelAssessTaskManualPageReqVO pageReqVO) {
ManualAssessmentPageReqVO reqVO = new ManualAssessmentPageReqVO();
//获取数据集问题
//TODO 人工评估标注获取信息后面需要更改
DatasetQuestionPageReqVO vo = new DatasetQuestionPageReqVO();
vo.setDatasetId(pageReqVO.getDatasetId());
/*vo.setPageSize(1);*/
PageResult<DatasetQuestionRespVO> datasetQuestionPage = datasetQuestionService.getDatasetQuestionPage(vo);
reqVO.setDatasetQuestionPage(datasetQuestionPage);
//获取模型评估标准
LambdaQueryWrapper<ModelAssessTaskDimensionDO> wrapper = new LambdaQueryWrapper<ModelAssessTaskDimensionDO>().eq(ModelAssessTaskDimensionDO::getTaskId, pageReqVO.getTaskId());
List<ModelAssessTaskDimensionDO> modelAssessTaskDimensionDOS = modelAssessTaskDimensionMapper.selectList(wrapper);
reqVO.setModelAssessTaskDimensionDOS(modelAssessTaskDimensionDOS);
LambdaQueryWrapper<ModelAssessTaskManualDO> eq = new LambdaQueryWrapper<ModelAssessTaskManualDO>().eq(ModelAssessTaskManualDO::getId, pageReqVO.getTaskId());
ModelAssessTaskManualDO modelAssessTaskManualDO = modelAssessTaskManualMapper.selectOne(eq);
reqVO.setModelAssessTaskManualDO(modelAssessTaskManualDO);
return reqVO;
public PageResult<ManualAssessmentPageRespVO> getManualAssessment(ManualModelAnswerPageReqVO pageReqVO) {
ModelAssessTaskManualRespVO modelAssessTaskManual = modelAssessTaskManualService.getModelAssessTaskManual(pageReqVO.getManalTaskId());
PageResult<ManualAssessmentPageRespVO> result = new PageResult<>();
PageResult<ManualModelAnswerDO> modelAnswerDOPageResult = manualModelAnswerMapper.selectPage(pageReqVO);
List<ManualAssessmentPageRespVO> res = new ArrayList<>();
if(!CollectionUtils.isAnyEmpty(modelAnswerDOPageResult.getList())){
modelAnswerDOPageResult.getList().forEach(modelAnswerDO -> {
ManualAssessmentPageRespVO resp = BeanUtils.toBean(modelAssessTaskManual, ManualAssessmentPageRespVO.class);
DatasetQuestionDO datasetQuestionDO = datasetQuestionMapper.selectById(modelAnswerDO.getQuestionId());
List<DatasetAnswerDO> datasetAnswerDOS = datasetAnswerMapper.selectList(new LambdaQueryWrapper<>(DatasetAnswerDO.class).eq(DatasetAnswerDO::getQuestionId, modelAnswerDO.getQuestionId()));
resp.setQuestion(datasetQuestionDO.getQuestion());
resp.setAnswers(BeanUtils.toBean(datasetAnswerDOS, DatasetAnswerRespVO.class));
resp.setModelAnswer(modelAnswerDO.getModelAnswer());
List<ManualModelAnnoDO> manualModelAnnoDOS = manualModelAnnoMapper.selectList(new LambdaQueryWrapper<>(ManualModelAnnoDO.class)
.eq(ManualModelAnnoDO::getModelAnswerId, modelAnswerDO.getId()));
resp.setManualModelAnnoRespVOS(BeanUtils.toBean(manualModelAnnoDOS, ManualModelAnnoRespVO.class));
res.add(resp);
});
}
result.setList(res);
result.setTotal(modelAnswerDOPageResult.getTotal());
return result;
}
/**

View File

@ -53,7 +53,6 @@ public interface ModelAssessTaskManualService {
PageResult<ModelAssessTaskManualRespVO> getModelAssessTaskManualPage1(ModelAssessTaskManualPageReqVO pageReqVO);
PageResult<ModelAssessTaskManualDO> getModelAssessTaskManualPage(ModelAssessTaskManualPageReqVO pageReqVO);
ManualAssessmentPageReqVO getManualAssessment(ModelAssessTaskManualPageReqVO backupReqVO);
void backupModelAssessTaskManual(ModelAssessTaskManualBackupReqVO updateReqVO);
}

View File

@ -188,25 +188,6 @@ public class ModelAssessTaskManualServiceImpl implements ModelAssessTaskManualSe
return modelAssessTaskManualMapper.selectPage(pageReqVO);
}
@Override
public ManualAssessmentPageReqVO getManualAssessment(ModelAssessTaskManualPageReqVO pageReqVO) {
ManualAssessmentPageReqVO reqVO = new ManualAssessmentPageReqVO();
//获取数据集问题
//TODO 人工评估标注获取信息后面需要更改
DatasetQuestionPageReqVO vo = new DatasetQuestionPageReqVO();
vo.setDatasetId(pageReqVO.getDatasetId());
vo.setPageSize(1);
PageResult<DatasetQuestionRespVO> datasetQuestionPage = datasetQuestionService.getDatasetQuestionPage(vo);
reqVO.setDatasetQuestionPage(datasetQuestionPage);
//获取模型评估标准
LambdaQueryWrapper<ModelAssessTaskDimensionDO> wrapper = new LambdaQueryWrapper<ModelAssessTaskDimensionDO>().eq(ModelAssessTaskDimensionDO::getTaskId, pageReqVO.getTaskId());
List<ModelAssessTaskDimensionDO> modelAssessTaskDimensionDOS = modelAssessTaskDimensionMapper.selectList(wrapper);
reqVO.setModelAssessTaskDimensionDOS(modelAssessTaskDimensionDOS);
LambdaQueryWrapper<ModelAssessTaskManualDO> eq = new LambdaQueryWrapper<ModelAssessTaskManualDO>().eq(ModelAssessTaskManualDO::getId, pageReqVO.getTaskId());
ModelAssessTaskManualDO modelAssessTaskManualDO = modelAssessTaskManualMapper.selectOne(eq);
reqVO.setModelAssessTaskManualDO(modelAssessTaskManualDO);
return reqVO;
}
@Override
public void backupModelAssessTaskManual(ModelAssessTaskManualBackupReqVO backupReqVO) {