From 4e45570a60615c81ccc0023399c7657fcf97bda5 Mon Sep 17 00:00:00 2001 From: Liuyang <2746366019@qq.com> Date: Wed, 26 Feb 2025 14:08:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor(yudao-module-llm):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=BC=82=E6=AD=A5=E5=BE=AE=E8=B0=83=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 异常处理机制改进,直接抛出异常而不是打印堆栈 --- .../FineTuningTaskSyncService.java | 9 ++++-- .../http/FineTuningTaskHttpService.java | 28 +++++++++++++++++++ .../llm/service/http/TrainHttpService.java | 19 ++++--------- .../ModelServiceTaskSyncService.java | 23 ++++----------- 4 files changed, 46 insertions(+), 33 deletions(-) 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 e52960471..84b75a7c7 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 @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.llm.dal.mysql.servername.ServerNameMapper; 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.FineTuningTaskHttpService; import cn.iocoder.yudao.module.llm.service.http.TrainHttpService; import cn.iocoder.yudao.module.llm.service.http.vo.AigcFineTuningDetailRespVO; import cn.iocoder.yudao.module.llm.service.http.vo.AigcModelDeployVO; @@ -40,9 +41,13 @@ public class FineTuningTaskSyncService { @Resource FineTuningTaskMapper fineTuningTaskMapper; + @Resource ServerNameMapper serverNameMapper; + @Resource + private FineTuningTaskHttpService fineTuningTaskHttpService; + @Scheduled(cron = "0 */1 * * * ?") public void updateFineTuningTaskStatus() { Log.info("FineTuningTaskSync 定时任务启动"); @@ -57,7 +62,7 @@ public class FineTuningTaskSyncService { } String hostUrl = serverNameDO!=null ?serverNameDO.getHost():""; String queryJobs = "?filter={\"job_id\":\""+fineTuningTaskDO.getJobId()+"\"}"; - String respJobs = trainHttpService.modelTableQuery(new HashMap<>(), hostUrl,"fine_tuning_train_job",queryJobs); + String respJobs = fineTuningTaskHttpService.modelTableQuery(new HashMap<>(), hostUrl,"fine_tuning_train_job",queryJobs); AigcFineTuningDetailRespVO resp = new AigcFineTuningDetailRespVO(); try { ObjectMapper mapper = new ObjectMapper(); @@ -109,7 +114,7 @@ public class FineTuningTaskSyncService { updateObj.setStatus(2); // 获取模型id String querModels = "?filter={\"model_name\":\""+resp.getFine_tuned_model()+"\"}"; - String resModels = trainHttpService.modelTableQuery(new HashMap<>(),hostUrl, "models",querModels); + String resModels = fineTuningTaskHttpService.modelTableQuery(new HashMap<>(),hostUrl, "models",querModels); log.info("获取 aigc models 表数据 info {}",resModels); JSONArray jsonArrayModels = JSONArray.parseArray(resModels); diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/FineTuningTaskHttpService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/FineTuningTaskHttpService.java index c27d55229..215cc52bf 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/FineTuningTaskHttpService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/FineTuningTaskHttpService.java @@ -122,6 +122,34 @@ public class FineTuningTaskHttpService { return null; } + + /** + * 根据表名称查询数据 + */ + public String modelTableQuery(Map headers, String urlHost, String tableName, String query) { + // 构建完整请求 URL + String url = String.format(urlHost + llmBackendProperties.getTableDataQuery(), tableName); + url = url + query; + + try { + // 记录请求信息 + log.info("开始查询模型表数据,请求URL: {}", url); + + // 发起 HTTP GET 请求 + String response = HttpUtils.get(url, headers); + log.info("HTTP 请求完成。响应内容: {}", response); + + // 返回响应数据 + return response; + + } catch (Exception e) { + log.error("查询模型表数据时发生异常。请求URL: {}", url, e); + handleHttpException(e); + } + + return ""; + } + /** * 统一处理 HTTP 请求异常 */ 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 e4ed75049..92ce8d1d8 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 @@ -11,17 +11,23 @@ import kong.unirest.HttpResponse; import kong.unirest.Unirest; import kong.unirest.UnirestException; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.IOException; import java.io.InputStream; +import java.net.ConnectException; +import java.net.SocketTimeoutException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; + /** * 训练相关接口 */ @@ -145,19 +151,6 @@ public class TrainHttpService { return null; } - - /** - * 根据表名称查询数据 - */ - public String modelTableQuery (Map headers, String urlHost, String tableName, String query) { - String url = String.format(urlHost + llmBackendProperties.getTableDataQuery(), tableName); - url = url + query; - String res = HttpUtils.get(url, headers); - log.info(" model query info :{}", res); - return res; - - } - public AigcFineTuningDetailRespVO finetuningDetail (Map headers, String jobId) { login(headers); String finetuningDetail = llmBackendProperties.getFinetuningDetail(); diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelservice/ModelServiceTaskSyncService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelservice/ModelServiceTaskSyncService.java index c9d53bad6..d08407490 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelservice/ModelServiceTaskSyncService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/modelservice/ModelServiceTaskSyncService.java @@ -1,39 +1,26 @@ package cn.iocoder.yudao.module.llm.service.modelservice; -import cn.hutool.json.JSONObject; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; -import cn.iocoder.yudao.module.llm.controller.admin.dataset.dto.DataJsonTemplate; import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO; import cn.iocoder.yudao.module.llm.dal.dataobject.servername.ServerNameDO; import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper; import cn.iocoder.yudao.module.llm.dal.mysql.servername.ServerNameMapper; import cn.iocoder.yudao.module.llm.enums.ModelDeployConstantEnum; import cn.iocoder.yudao.module.llm.handler.AigcCustomDateTimeDeserializer; -import cn.iocoder.yudao.module.llm.service.http.TrainHttpService; +import cn.iocoder.yudao.module.llm.service.http.FineTuningTaskHttpService; import cn.iocoder.yudao.module.llm.service.http.vo.AigcModelDeployVO; -import cn.iocoder.yudao.module.llm.service.http.vo.AigcRespVO; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.esotericsoftware.kryo.serializers.TimeSerializers; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; -import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.net.URLEncoder; import java.time.LocalDateTime; -import java.time.OffsetDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -41,15 +28,15 @@ import java.util.List; @Component @Slf4j public class ModelServiceTaskSyncService { - @Resource - private TrainHttpService trainHttpService; + @Resource private ModelServiceMapper modelServiceMapper; @Resource ServerNameMapper serverNameMapper; - + @Resource + private FineTuningTaskHttpService fineTuningTaskHttpService; @Scheduled(cron = "0 */2 * * * ?") public void syncStatusModels() { @@ -70,7 +57,7 @@ public class ModelServiceTaskSyncService { String query = "?filter={\"id\":"+jobid+"}"; ServerNameDO serverNameDO = serverNameMapper.selectById(modelServiceDO.getGpuType()); String hostUrl = serverNameDO!=null ?serverNameDO.getHost():""; - String res = trainHttpService.modelTableQuery(new HashMap<>(), hostUrl,"model_deploy",query); + String res = fineTuningTaskHttpService.modelTableQuery(new HashMap<>(), hostUrl,"model_deploy",query); log.info("获取 aigc model_deploy 表数据 info {}",res); ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JavaTimeModule());