人工评估增加

This commit is contained in:
limin 2025-01-02 15:30:37 +08:00
parent b276a4206c
commit e416f80bc9
21 changed files with 925 additions and 0 deletions

View File

@ -72,5 +72,7 @@ public interface ErrorCodeConstants {
ErrorCode TRAINING_NOT_EXISTS = new ErrorCode(10029, "训练不存在");
ErrorCode MODEL_COMPLETIONS_ERROR = new ErrorCode(10030, "模型推理失败");
ErrorCode MANUAL_MODEL_ANSWER_NOT_EXISTS = new ErrorCode(10031, "模型评估人工评估信息不存在");
ErrorCode MANUAL_MODEL_ANNO_NOT_EXISTS = new ErrorCode(10032, "模型评估人工评估标注信息不存在");
}

View File

@ -0,0 +1,97 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnnoDO;
import cn.iocoder.yudao.module.llm.service.modelassesstaskmanual.ManualModelAnnoService;
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.constraints.*;
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
@RequestMapping("/llm/manual-model-anno")
@Validated
public class ManualModelAnnoController {
@Resource
private ManualModelAnnoService manualModelAnnoService;
@PostMapping("/create")
@Operation(summary = "创建模型评估人工评估标注")
@PreAuthorize("@ss.hasPermission('llm:manual-model-anno:create')")
public CommonResult<Long> createManualModelAnno(@Valid @RequestBody ManualModelAnnoSaveReqVO createReqVO) {
return success(manualModelAnnoService.createManualModelAnno(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新模型评估人工评估标注")
@PreAuthorize("@ss.hasPermission('llm:manual-model-anno:update')")
public CommonResult<Boolean> updateManualModelAnno(@Valid @RequestBody ManualModelAnnoSaveReqVO updateReqVO) {
manualModelAnnoService.updateManualModelAnno(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除模型评估人工评估标注")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('llm:manual-model-anno:delete')")
public CommonResult<Boolean> deleteManualModelAnno(@RequestParam("id") Long id) {
manualModelAnnoService.deleteManualModelAnno(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得模型评估人工评估标注")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('llm:manual-model-anno:query')")
public CommonResult<ManualModelAnnoRespVO> getManualModelAnno(@RequestParam("id") Long id) {
ManualModelAnnoDO manualModelAnno = manualModelAnnoService.getManualModelAnno(id);
return success(BeanUtils.toBean(manualModelAnno, ManualModelAnnoRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得模型评估人工评估标注分页")
@PreAuthorize("@ss.hasPermission('llm:manual-model-anno:query')")
public CommonResult<PageResult<ManualModelAnnoRespVO>> getManualModelAnnoPage(@Valid ManualModelAnnoPageReqVO pageReqVO) {
PageResult<ManualModelAnnoDO> pageResult = manualModelAnnoService.getManualModelAnnoPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ManualModelAnnoRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出模型评估人工评估标注 Excel")
@PreAuthorize("@ss.hasPermission('llm:manual-model-anno:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportManualModelAnnoExcel(@Valid ManualModelAnnoPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ManualModelAnnoDO> list = manualModelAnnoService.getManualModelAnnoPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "模型评估人工评估标注.xls", "数据", ManualModelAnnoRespVO.class,
BeanUtils.toBean(list, ManualModelAnnoRespVO.class));
}
}

View File

@ -0,0 +1,96 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual;
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.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
@RequestMapping("/llm/manual-model-answer")
@Validated
public class ManualModelAnswerController {
@Resource
private ManualModelAnswerService manualModelAnswerService;
@PostMapping("/create")
@Operation(summary = "创建模型评估人工标注 模型回答")
@PreAuthorize("@ss.hasPermission('llm:manual-model-answer:create')")
public CommonResult<Long> createManualModelAnswer(@Valid @RequestBody ManualModelAnswerSaveReqVO createReqVO) {
return success(manualModelAnswerService.createManualModelAnswer(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新模型评估人工标注 模型回答")
@PreAuthorize("@ss.hasPermission('llm:manual-model-answer:update')")
public CommonResult<Boolean> updateManualModelAnswer(@Valid @RequestBody ManualModelAnswerSaveReqVO updateReqVO) {
manualModelAnswerService.updateManualModelAnswer(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除模型评估人工标注 模型回答")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('llm:manual-model-answer:delete')")
public CommonResult<Boolean> deleteManualModelAnswer(@RequestParam("id") Long id) {
manualModelAnswerService.deleteManualModelAnswer(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得模型评估人工标注 模型回答")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('llm:manual-model-answer:query')")
public CommonResult<ManualModelAnswerRespVO> getManualModelAnswer(@RequestParam("id") Long id) {
ManualModelAnswerDO manualModelAnswer = manualModelAnswerService.getManualModelAnswer(id);
return success(BeanUtils.toBean(manualModelAnswer, ManualModelAnswerRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得模型评估人工标注 模型回答分页")
@PreAuthorize("@ss.hasPermission('llm:manual-model-answer:query')")
public CommonResult<PageResult<ManualModelAnswerRespVO>> getManualModelAnswerPage(@Valid ManualModelAnswerPageReqVO pageReqVO) {
PageResult<ManualModelAnswerDO> pageResult = manualModelAnswerService.getManualModelAnswerPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ManualModelAnswerRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出模型评估人工标注 模型回答 Excel")
@PreAuthorize("@ss.hasPermission('llm:manual-model-answer:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportManualModelAnswerExcel(@Valid ManualModelAnswerPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ManualModelAnswerDO> list = manualModelAnswerService.getManualModelAnswerPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "模型评估人工标注 模型回答.xls", "数据", ManualModelAnswerRespVO.class,
BeanUtils.toBean(list, ManualModelAnswerRespVO.class));
}
}

View File

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 模型评估人工评估标注分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ManualModelAnnoPageReqVO extends PageParam {
@Schema(description = "主任务id", example = "29186")
private Long manalTaskId;
@Schema(description = "模型回答id", example = "25919")
private Long modelAnswerId;
@Schema(description = "模型维度定义id", example = "20924")
private Long dimensionId;
@Schema(description = "评分")
private Integer score;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,39 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 模型评估人工评估标注 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ManualModelAnnoRespVO {
@Schema(description = "主表id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25242")
@ExcelProperty("主表id")
private Long id;
@Schema(description = "主任务id", example = "29186")
@ExcelProperty("主任务id")
private Long manalTaskId;
@Schema(description = "模型回答id", example = "25919")
@ExcelProperty("模型回答id")
private Long modelAnswerId;
@Schema(description = "模型维度定义id", example = "20924")
@ExcelProperty("模型维度定义id")
private Long dimensionId;
@Schema(description = "评分")
@ExcelProperty("评分")
private Integer score;
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 模型评估人工评估标注新增/修改 Request VO")
@Data
public class ManualModelAnnoSaveReqVO {
@Schema(description = "主表id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25242")
private Long id;
@Schema(description = "主任务id", example = "29186")
private Long manalTaskId;
@Schema(description = "模型回答id", example = "25919")
private Long modelAnswerId;
@Schema(description = "模型维度定义id", example = "20924")
private Long dimensionId;
@Schema(description = "评分")
private Integer score;
}

View File

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 模型评估人工标注 模型回答分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ManualModelAnswerPageReqVO extends PageParam {
@Schema(description = "人工标注主表id", example = "20675")
private Long manalTaskId;
@Schema(description = "数据集问题id", example = "5038")
private Long questionId;
@Schema(description = "数据集id", example = "27899")
private Long datasetId;
@Schema(description = "标注状态", example = "1")
private Integer status;
@Schema(description = "模型回答内容")
private String modelAnswer;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 模型评估人工标注 模型回答 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ManualModelAnswerRespVO {
@Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6895")
@ExcelProperty("主键id")
private Long id;
@Schema(description = "人工标注主表id", example = "20675")
@ExcelProperty("人工标注主表id")
private Long manalTaskId;
@Schema(description = "数据集问题id", example = "5038")
@ExcelProperty("数据集问题id")
private Long questionId;
@Schema(description = "数据集id", example = "27899")
@ExcelProperty("数据集id")
private Long datasetId;
@Schema(description = "标注状态", example = "1")
@ExcelProperty("标注状态")
private Integer status;
@Schema(description = "模型回答内容")
@ExcelProperty("模型回答内容")
private String modelAnswer;
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@Schema(description = "管理后台 - 模型评估人工标注 模型回答新增/修改 Request VO")
@Data
public class ManualModelAnswerSaveReqVO {
@Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6895")
private Long id;
@Schema(description = "人工标注主表id", example = "20675")
private Long manalTaskId;
@Schema(description = "数据集问题id", example = "5038")
private Long questionId;
@Schema(description = "数据集id", example = "27899")
private Long datasetId;
@Schema(description = "标注状态", example = "1")
private Integer status;
@Schema(description = "模型回答内容")
private String modelAnswer;
}

View File

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 模型评估人工评估标注 DO
*
* @author 华大大模型
*/
@TableName("llm_manual_model_anno")
@KeySequence("llm_manual_model_anno_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ManualModelAnnoDO extends BaseDO {
/**
* 主表id
*/
@TableId
private Long id;
/**
* 主任务id
*/
private Long manalTaskId;
/**
* 模型回答id
*/
private Long modelAnswerId;
/**
* 模型维度定义id
*/
private Long dimensionId;
/**
* 评分
*/
private Integer score;
}

View File

@ -0,0 +1,51 @@
package cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 模型评估人工标注 模型回答 DO
*
* @author 华大大模型
*/
@TableName("llm_manual_model_answer")
@KeySequence("llm_manual_model_answer_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ManualModelAnswerDO extends BaseDO {
/**
* 主键id
*/
@TableId
private Long id;
/**
* 人工标注主表id
*/
private Long manalTaskId;
/**
* 数据集问题id
*/
private Long questionId;
/**
* 数据集id
*/
private Long datasetId;
/**
* 标注状态
*/
private Integer status;
/**
* 模型回答内容
*/
private String modelAnswer;
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoPageReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnnoDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 模型评估人工评估标注 Mapper
*
* @author 华大大模型
*/
@Mapper
public interface ManualModelAnnoMapper extends BaseMapperX<ManualModelAnnoDO> {
default PageResult<ManualModelAnnoDO> selectPage(ManualModelAnnoPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ManualModelAnnoDO>()
.eqIfPresent(ManualModelAnnoDO::getManalTaskId, reqVO.getManalTaskId())
.eqIfPresent(ManualModelAnnoDO::getModelAnswerId, reqVO.getModelAnswerId())
.eqIfPresent(ManualModelAnnoDO::getDimensionId, reqVO.getDimensionId())
.eqIfPresent(ManualModelAnnoDO::getScore, reqVO.getScore())
.betweenIfPresent(ManualModelAnnoDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ManualModelAnnoDO::getId));
}
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerPageReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnswerDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 模型评估人工标注 模型回答 Mapper
*
* @author 华大大模型
*/
@Mapper
public interface ManualModelAnswerMapper extends BaseMapperX<ManualModelAnswerDO> {
default PageResult<ManualModelAnswerDO> selectPage(ManualModelAnswerPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ManualModelAnswerDO>()
.eqIfPresent(ManualModelAnswerDO::getManalTaskId, reqVO.getManalTaskId())
.eqIfPresent(ManualModelAnswerDO::getQuestionId, reqVO.getQuestionId())
.eqIfPresent(ManualModelAnswerDO::getDatasetId, reqVO.getDatasetId())
.eqIfPresent(ManualModelAnswerDO::getStatus, reqVO.getStatus())
.eqIfPresent(ManualModelAnswerDO::getModelAnswer, reqVO.getModelAnswer())
.betweenIfPresent(ManualModelAnswerDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ManualModelAnswerDO::getId));
}
}

View File

@ -0,0 +1,79 @@
package cn.iocoder.yudao.module.llm.service.async;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.DatasetQuestionRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.vo.ModelAssessTaskManualSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnswerDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ModelAssessTaskManualDO;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ManualModelAnswerMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ModelAssessTaskManualMapper;
import cn.iocoder.yudao.module.llm.service.conversation.ConversationService;
import cn.iocoder.yudao.module.llm.service.dataset.DatasetQuestionService;
import cn.iocoder.yudao.module.llm.service.http.ModelService;
import cn.iocoder.yudao.module.llm.service.http.vo.ModelCompletionsReqVO;
import cn.iocoder.yudao.module.llm.service.http.vo.ModelCompletionsRespVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service
public class AsyncModelAccessManualService {
private static final Logger log = LoggerFactory.getLogger(AsyncModelAccessManualService.class);
@Resource
private ModelService modelService;
@Resource
private ConversationService conversationService;
@Resource
private DatasetQuestionService datasetQuestionService;
@Resource
private ManualModelAnswerMapper manualModelAnswerMapper;
@Resource
private ModelAssessTaskManualMapper modelAssessTaskManualMapper;
@Async
public void startModelAccess(ModelAssessTaskManualDO task) {
List<DatasetQuestionRespVO> datasetQuestionList = datasetQuestionService.getDatasetQuestionList(task.getDataset());
try {
if (!CollectionUtils.isAnyEmpty(datasetQuestionList)){
datasetQuestionList.forEach(item -> {
ModelCompletionsReqVO modelCompletionsReqVO = new ModelCompletionsReqVO();
ModelCompletionsReqVO.ModelCompletionsMessage message = new ModelCompletionsReqVO.ModelCompletionsMessage();
if (item.getQuestion() != null){
message.setContent(item.getQuestion());
}
message.setRole("user");
List<ModelCompletionsReqVO.ModelCompletionsMessage> messages = new ArrayList<>();
messages.add(message);
modelCompletionsReqVO.setMessages(messages);
ModelCompletionsRespVO modelCompletionsRespVO = modelService.modelCompletions(modelCompletionsReqVO);
if (modelCompletionsRespVO != null){
ManualModelAnswerDO manualModelAnswerDO = new ManualModelAnswerDO();
manualModelAnswerDO.setCreator(task.getCreator());
manualModelAnswerDO.setUpdater(task.getCreator());
manualModelAnswerDO.setQuestionId(item.getId());
manualModelAnswerDO.setModelAnswer(modelCompletionsRespVO.getAnswer());
manualModelAnswerDO.setManalTaskId(task.getId());
manualModelAnswerDO.setDatasetId(task.getDataset());
manualModelAnswerMapper.insert(manualModelAnswerDO);
}
});
task.setStatus(1);
modelAssessTaskManualMapper.updateById(task);
}
}catch (Exception e){
log.error("Model evaluation failed manually : {}",e.getMessage());
task.setStatus(5);
modelAssessTaskManualMapper.updateById(task);
}
}
}

View File

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.llm.service.modelassesstaskmanual;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnnoDO;
/**
* 模型评估人工评估标注 Service 接口
*
* @author 华大大模型
*/
public interface ManualModelAnnoService {
/**
* 创建模型评估人工评估标注
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createManualModelAnno(@Valid ManualModelAnnoSaveReqVO createReqVO);
/**
* 更新模型评估人工评估标注
*
* @param updateReqVO 更新信息
*/
void updateManualModelAnno(@Valid ManualModelAnnoSaveReqVO updateReqVO);
/**
* 删除模型评估人工评估标注
*
* @param id 编号
*/
void deleteManualModelAnno(Long id);
/**
* 获得模型评估人工评估标注
*
* @param id 编号
* @return 模型评估人工评估标注
*/
ManualModelAnnoDO getManualModelAnno(Long id);
/**
* 获得模型评估人工评估标注分页
*
* @param pageReqVO 分页查询
* @return 模型评估人工评估标注分页
*/
PageResult<ManualModelAnnoDO> getManualModelAnnoPage(ManualModelAnnoPageReqVO pageReqVO);
}

View File

@ -0,0 +1,75 @@
package cn.iocoder.yudao.module.llm.service.modelassesstaskmanual;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnnoSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnnoDO;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ManualModelAnnoMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*;
/**
* 模型评估人工评估标注 Service 实现类
*
* @author 华大大模型
*/
@Service
@Validated
public class ManualModelAnnoServiceImpl implements ManualModelAnnoService {
@Resource
private ManualModelAnnoMapper manualModelAnnoMapper;
@Override
public Long createManualModelAnno(ManualModelAnnoSaveReqVO createReqVO) {
// 插入
ManualModelAnnoDO manualModelAnno = BeanUtils.toBean(createReqVO, ManualModelAnnoDO.class);
manualModelAnnoMapper.insert(manualModelAnno);
// 返回
return manualModelAnno.getId();
}
@Override
public void updateManualModelAnno(ManualModelAnnoSaveReqVO updateReqVO) {
// 校验存在
validateManualModelAnnoExists(updateReqVO.getId());
// 更新
ManualModelAnnoDO updateObj = BeanUtils.toBean(updateReqVO, ManualModelAnnoDO.class);
manualModelAnnoMapper.updateById(updateObj);
}
@Override
public void deleteManualModelAnno(Long id) {
// 校验存在
validateManualModelAnnoExists(id);
// 删除
manualModelAnnoMapper.deleteById(id);
}
private void validateManualModelAnnoExists(Long id) {
if (manualModelAnnoMapper.selectById(id) == null) {
throw exception(MANUAL_MODEL_ANNO_NOT_EXISTS);
}
}
@Override
public ManualModelAnnoDO getManualModelAnno(Long id) {
return manualModelAnnoMapper.selectById(id);
}
@Override
public PageResult<ManualModelAnnoDO> getManualModelAnnoPage(ManualModelAnnoPageReqVO pageReqVO) {
return manualModelAnnoMapper.selectPage(pageReqVO);
}
}

View File

@ -0,0 +1,54 @@
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.ManualModelAnswerPageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelassesstaskmanual.manualAnnoVo.ManualModelAnswerSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelassesstaskmanual.ManualModelAnswerDO;
/**
* 模型评估人工标注 模型回答 Service 接口
*
* @author 华大大模型
*/
public interface ManualModelAnswerService {
/**
* 创建模型评估人工标注 模型回答
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createManualModelAnswer(@Valid ManualModelAnswerSaveReqVO createReqVO);
/**
* 更新模型评估人工标注 模型回答
*
* @param updateReqVO 更新信息
*/
void updateManualModelAnswer(@Valid ManualModelAnswerSaveReqVO updateReqVO);
/**
* 删除模型评估人工标注 模型回答
*
* @param id 编号
*/
void deleteManualModelAnswer(Long id);
/**
* 获得模型评估人工标注 模型回答
*
* @param id 编号
* @return 模型评估人工标注 模型回答
*/
ManualModelAnswerDO getManualModelAnswer(Long id);
/**
* 获得模型评估人工标注 模型回答分页
*
* @param pageReqVO 分页查询
* @return 模型评估人工标注 模型回答分页
*/
PageResult<ManualModelAnswerDO> getManualModelAnswerPage(ManualModelAnswerPageReqVO pageReqVO);
}

View File

@ -0,0 +1,72 @@
package cn.iocoder.yudao.module.llm.service.modelassesstaskmanual;
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.dal.dataobject.modelassesstaskmanual.ManualModelAnswerDO;
import cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ManualModelAnswerMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*;
/**
* 模型评估人工标注 模型回答 Service 实现类
*
* @author 华大大模型
*/
@Service
@Validated
public class ManualModelAnswerServiceImpl implements ManualModelAnswerService {
@Resource
private ManualModelAnswerMapper manualModelAnswerMapper;
@Override
public Long createManualModelAnswer(ManualModelAnswerSaveReqVO createReqVO) {
// 插入
ManualModelAnswerDO manualModelAnswer = BeanUtils.toBean(createReqVO, ManualModelAnswerDO.class);
manualModelAnswerMapper.insert(manualModelAnswer);
// 返回
return manualModelAnswer.getId();
}
@Override
public void updateManualModelAnswer(ManualModelAnswerSaveReqVO updateReqVO) {
// 校验存在
validateManualModelAnswerExists(updateReqVO.getId());
// 更新
ManualModelAnswerDO updateObj = BeanUtils.toBean(updateReqVO, ManualModelAnswerDO.class);
manualModelAnswerMapper.updateById(updateObj);
}
@Override
public void deleteManualModelAnswer(Long id) {
// 校验存在
validateManualModelAnswerExists(id);
// 删除
manualModelAnswerMapper.deleteById(id);
}
private void validateManualModelAnswerExists(Long id) {
if (manualModelAnswerMapper.selectById(id) == null) {
throw exception(MANUAL_MODEL_ANSWER_NOT_EXISTS);
}
}
@Override
public ManualModelAnswerDO getManualModelAnswer(Long id) {
return manualModelAnswerMapper.selectById(id);
}
@Override
public PageResult<ManualModelAnswerDO> getManualModelAnswerPage(ManualModelAnswerPageReqVO pageReqVO) {
return manualModelAnswerMapper.selectPage(pageReqVO);
}
}

View File

@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetMapper;
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;
import cn.iocoder.yudao.module.llm.service.async.AsyncModelAccessManualService;
import cn.iocoder.yudao.module.llm.service.dataset.DatasetQuestionService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -56,10 +57,14 @@ public class ModelAssessTaskManualServiceImpl implements ModelAssessTaskManualSe
@Resource
private DatasetQuestionService datasetQuestionService;
@Resource
private AsyncModelAccessManualService asyncModelAccessManualService;
@Override
public Long createModelAssessTaskManual(ModelAssessTaskManualSaveReqVO createReqVO) {
// 插入
ModelAssessTaskManualDO modelAssessTaskManual = BeanUtils.toBean(createReqVO, ModelAssessTaskManualDO.class);
modelAssessTaskManual.setStatus(3);
modelAssessTaskManualMapper.insert(modelAssessTaskManual);
List<ModelAssessTaskDimensionSaveReqVO> dimensions = createReqVO.getDimensions();
if (!CollectionUtils.isEmpty(dimensions)){
@ -69,6 +74,7 @@ public class ModelAssessTaskManualServiceImpl implements ModelAssessTaskManualSe
modelAssessTaskDimensionMapper.insert(modelAssessTaskDimensionDO);
});
}
asyncModelAccessManualService.startModelAccess(modelAssessTaskManual);
// 返回
return modelAssessTaskManual.getId();
}

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ManualModelAnnoMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.llm.dal.mysql.modelassesstaskmanual.ManualModelAnswerMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>