diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/finetuningtask/FineTuningTaskDO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/finetuningtask/FineTuningTaskDO.java index 90af82c77..d1725b3f8 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/finetuningtask/FineTuningTaskDO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/finetuningtask/FineTuningTaskDO.java @@ -142,4 +142,10 @@ public class FineTuningTaskDO extends BaseDO { private Long baseModelId; private String jobId; -} \ No newline at end of file + + //AIGC模型名称 + private String jobModelName; + + //AIGC模型列表主键id + private Long jobModelListId; +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncFineTuningTaskService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncFineTuningTaskService.java index b51765d79..2c640392e 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncFineTuningTaskService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncFineTuningTaskService.java @@ -45,6 +45,7 @@ public class AsyncFineTuningTaskService { if (resp != null) { updateObj.setJobId(resp.getJobId()); updateObj.setStatus(FinetuningTaskStatusEnum.WAITING.getStatus()); + updateObj.setJobModelName(resp.getFineTunedModel()); } else { updateObj.setStatus(FinetuningTaskStatusEnum.CANCELLED.getStatus()); } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelTaskService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelTaskService.java index 70295340a..7637e1920 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelTaskService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelTaskService.java @@ -27,7 +27,7 @@ public class BaseModelTaskService { // @Scheduled(cron ="0 0/1 * * * ?") public void updateBaseModel() { Log.info("定时任务启动"); - String resStr = trainHttpService.modelsList(); + String resStr = trainHttpService.modelsList(""); Log.info("获取aicg模型列表返回数据内容{}",resStr); JSONObject jsonObject = JSONObject.parseObject(resStr); JSONObject data = jsonObject.getJSONObject("data"); diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskSyncService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskSyncService.java index e0cb94b7c..bfa428602 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskSyncService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskSyncService.java @@ -4,8 +4,11 @@ import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskD import cn.iocoder.yudao.module.llm.dal.mysql.finetuningtask.FineTuningTaskMapper; import cn.iocoder.yudao.module.llm.enums.FineTuningTaskStatusConstants; import cn.iocoder.yudao.module.llm.enums.FinetuningTaskStatusEnum; +import cn.iocoder.yudao.module.llm.service.basemodel.vo.ModelListRes; import cn.iocoder.yudao.module.llm.service.http.TrainHttpService; import cn.iocoder.yudao.module.llm.service.http.vo.AigcFineTuningDetailRespVO; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.esotericsoftware.minlog.Log; import org.springframework.scheduling.annotation.Scheduled; @@ -33,16 +36,35 @@ public class FineTuningTaskSyncService { if(Objects.equals(fineTuningTaskDO.getStatus(), FinetuningTaskStatusEnum.TRAINING.getStatus()) || Objects.equals(fineTuningTaskDO.getStatus(), FinetuningTaskStatusEnum.WAITING.getStatus())){ AigcFineTuningDetailRespVO resp = trainHttpService.finetuningDetail(new HashMap<>(), fineTuningTaskDO.getJobId()); - String modelName = resp.getFineTunedModel(); + + FineTuningTaskDO updateObj = new FineTuningTaskDO(); Integer status = FineTuningTaskStatusConstants.getStatus(resp.getTrainStatus()); if(status != null){ - FineTuningTaskDO updateObj = new FineTuningTaskDO(); updateObj.setId(fineTuningTaskDO.getId()); updateObj.setStatus(status); updateObj.setTrainDuration(StringUtils.isNotBlank(resp.getTrainDuration())?resp.getTrainDuration():""); + } + //如果微调任务由训练中变为已完成,则取模型列表中获取该任务生成的模型id + if(fineTuningTaskDO.getStatus() == 1 && status == 2){ + String jobModelName = fineTuningTaskDO.getJobModelName(); + String resStr = trainHttpService.modelsList(""); + Log.info("获取aicg模型列表返回数据内容{}",resStr); + JSONObject jsonObject = JSONObject.parseObject(resStr); + JSONObject data = jsonObject.getJSONObject("data"); + JSONArray list = data.getJSONArray("list"); + String s = list.toJSONString(); + List modelListRess = JSONObject.parseArray(s, ModelListRes.class); + if(modelListRess != null){ + ModelListRes modelListRes = modelListRess.get(0); + updateObj.setJobModelListId(modelListRes.getId()); + }else{ + //todo 已训练完成的微调任务,没有在模型列表找对对应模型的处理方式 + } fineTuningTaskMapper.updateById(updateObj); + } } + } } } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java index 3878e5179..c0c90f409 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java @@ -89,11 +89,11 @@ public class TrainHttpService { /** * 大模型列表 GET */ - public String modelsList(){ + public String modelsList(String modelName){ Map headers = new HashMap<>(); login(headers); String modelsList = llmBackendProperties.getModelsList(); - String res = HttpUtils.get(modelsList, headers); + String res = HttpUtils.get(modelsList + "?modelName=" + modelName, headers); return res; }