From 0d9ea7c3c391c9f42dbc734a7c055a357ce4f0ba Mon Sep 17 00:00:00 2001 From: sunxiqing <2240398334@qq.com> Date: Tue, 12 Aug 2025 11:17:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(llm):=20=E8=87=AA=E5=8A=A8=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=9C=AA=E4=BD=BF=E7=94=A8=E7=9A=84=E5=BE=AE=E8=B0=83?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 deleteTheModel 方法,用于删除未使用的微调模型 - 在 refreshTheModelService 方法中增加逻辑,判断模型是否未使用并进行删除 - 优化了模型信息的处理逻辑,提高了代码可读性和维护性 --- .../basemodel/BaseModelTaskService.java | 69 +++++++++++++++++-- 1 file changed, 65 insertions(+), 4 deletions(-) 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 2922dd226..28a532099 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 @@ -31,16 +31,25 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import lombok.extern.slf4j.Slf4j; +import okhttp3.HttpUrl; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.io.IOException; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Objects; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -251,14 +260,19 @@ public class BaseModelTaskService { BaseModelDO baseModelDO = new BaseModelDO(); baseModelDO.setModelName(remoteModelName); baseModelDO.setAigcModelName(remoteModelName); + // 模型类型 + // 微调状态 + boolean b = replaceActiveGroups(remoteModelName, active); + baseModelDO.setIsFinetuned(b); + LambdaQueryWrapper eq = new LambdaQueryWrapper().eq(FineTuningTaskDO::getJobModelName, remoteModelName); FineTuningTaskDO fineTuningTaskDO = fineTuningTaskService.selectName(eq); if (fineTuningTaskDO != null) { baseModelDO.setTheTuningName(fineTuningTaskDO.getTaskName()); + } else if (b){ + deleteTheModel(remoteModelName); + break; } - // 模型类型 - // 微调状态 - baseModelDO.setIsFinetuned(replaceActiveGroups(remoteModelName, active)); baseModelDOList.add(baseModelDO); } baseModelMapper.insert(baseModelDOList); @@ -268,8 +282,55 @@ public class BaseModelTaskService { } } + private void deleteTheModel(String remoteModelName) { + try { + // 创建 OkHttpClient 实例 + log.info("创建 OkHttpClient 实例,设置超时时间为 2 分钟"); + OkHttpClient client = new OkHttpClient.Builder() + .connectTimeout(2, TimeUnit.MINUTES) + .readTimeout(2, TimeUnit.MINUTES) + .writeTimeout(2, TimeUnit.MINUTES) + .build(); -// @Scheduled(cron = "0 0/1 * * * ?") + // 1. 获取删除微调任务的URL + String baseUrl =llmBackendProperties.getDeleteTheModelFull(); + log.info("获取删除微调任务的URL: {}", baseUrl); + HttpUrl url = Objects.requireNonNull(HttpUrl.parse(baseUrl)) + .newBuilder() + .addPathSegment(remoteModelName) + .build(); + // 2. 构建请求体(空请求体) + RequestBody requestBody = RequestBody.create("", MediaType.parse("application/json")); + + // 3. 构建请求 + Request request = new Request.Builder() + .url(url) + .delete(requestBody) + .addHeader("accept", "application/json") + .build(); + + // 4. 发送请求 + log.info("开始发送HTTP DELETE请求,删除微调任务,任务模型名称: {}", remoteModelName); + try (Response response = client.newCall(request).execute()) { + if (response.body()!=null) { + String body = response.body().string(); + log.info("HTTP删除请求完成,响应内容: {}", body); + } else { + log.error("HTTP请求失败: " + "响应为空"); + throw new RuntimeException("HTTP请求失败: " + "响应为空"); + } + } catch (IOException e) { + log.error("发送HTTP请求删除微调任务时发生异常,任务模型名称: {}",remoteModelName, e); + throw new RuntimeException("HTTP请求失败", e); + } + + } catch (Exception e) { + log.error("删除模型时发生异常: {}", e.getMessage(), e); + } + } + + + // @Scheduled(cron = "0 0/1 * * * ?") @Scheduled(cron = "0/15 * * * * ?") public void refreshTheModelService () { try {