diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/LLMBackendProperties.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/LLMBackendProperties.java index d90d86a0e..49ef63db3 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/LLMBackendProperties.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/framework/backend/config/LLMBackendProperties.java @@ -123,6 +123,7 @@ public class LLMBackendProperties { private String deleteTheModel; + private String deleteTheModelFull; /** * 知识库向量嵌入 */ diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelServiceImpl.java index a7baec769..025ad1c67 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelServiceImpl.java @@ -8,7 +8,10 @@ import cn.iocoder.yudao.module.llm.controller.admin.basemodel.vo.BaseModelPageRe import cn.iocoder.yudao.module.llm.controller.admin.basemodel.vo.BaseModelSaveReqVO; import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO; import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO; +import cn.iocoder.yudao.module.llm.dal.dataobject.servername.ServerNameDO; import cn.iocoder.yudao.module.llm.dal.mysql.basemodel.BaseModelMapper; +import cn.iocoder.yudao.module.llm.dal.mysql.servername.ServerNameMapper; +import cn.iocoder.yudao.module.llm.enums.FinetuningTaskStatusEnum; import cn.iocoder.yudao.module.llm.framework.backend.config.LLMBackendProperties; import cn.iocoder.yudao.module.llm.service.application.ApplicationService; import cn.iocoder.yudao.module.llm.service.finetuningtask.FineTuningTaskService; @@ -19,14 +22,23 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; 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.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.concurrent.TimeUnit; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*; @@ -40,7 +52,8 @@ import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*; @Validated @Slf4j public class BaseModelServiceImpl implements BaseModelService { - + @Resource + private ServerNameMapper serverNameMapper; @Resource private BaseModelMapper baseModelMapper; @@ -218,13 +231,59 @@ public class BaseModelServiceImpl implements BaseModelService { @Override public void deleteTheModel(BaseModelPageReqVO pageReqVO) { try { - String resStr = HttpUtils.del(llmBackendProperties.getDeleteTheModel()+"/"+pageReqVO.getModelName(), null); - log.info(" unActive:{}", resStr); + Map map = new HashMap<>(); + map.put("model_name",pageReqVO.getModelName()); +// String resStr = HttpUtils.del(llmBackendProperties.getDeleteTheModel()+"/"+pageReqVO.getModelName(), null); + + + log.info(" ===== 删除微调任务 ===== stopFinetuning"); + + // 创建 OkHttpClient 实例 + log.info("创建 OkHttpClient 实例,设置超时时间为 2 分钟"); + OkHttpClient client = new OkHttpClient.Builder() + .connectTimeout(2, TimeUnit.MINUTES) + .readTimeout(2, TimeUnit.MINUTES) + .writeTimeout(2, TimeUnit.MINUTES) + .build(); + + // 1. 获取删除微调任务的URL + String baseUrl =llmBackendProperties.getDeleteTheModelFull(); + log.info("获取删除微调任务的URL: {}", baseUrl); + HttpUrl url = Objects.requireNonNull(HttpUrl.parse(baseUrl)) + .newBuilder() + .addQueryParameter("fine_tuned_model",pageReqVO.getModelName()) + .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请求,删除微调任务,任务模型名称: {}", pageReqVO.getModelName()); + 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请求删除微调任务时发生异常,任务模型名称: {}",pageReqVO.getModelName(), e); + throw new RuntimeException("HTTP请求失败", e); + } }catch (Exception e){ log.error("禁用基础模型状态时发生异常: {}", e.getMessage(), e); } } + /** * 校验模型使用情况 * 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 71540003f..a6970bf99 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 @@ -181,7 +181,7 @@ public class FineTuningTaskHttpService { .build(); // 1. 获取删除微调任务的URL - String baseUrl = host + llmBackendProperties.getStopFinetuning(); + String baseUrl = host + llmBackendProperties.getDeleteTheModel(); log.info("获取删除微调任务的URL: {}", baseUrl); HttpUrl url = Objects.requireNonNull(HttpUrl.parse(baseUrl)) .newBuilder() diff --git a/yudao-server/src/main/resources/application-ymx.yaml b/yudao-server/src/main/resources/application-ymx.yaml index ff3281ef3..8f0f3331d 100644 --- a/yudao-server/src/main/resources/application-ymx.yaml +++ b/yudao-server/src/main/resources/application-ymx.yaml @@ -337,8 +337,8 @@ llm: # 模型列表 get a_list_of_available_models: http://127.0.0.1:5123/llm/list #删除模型 - delete_the_model: http://127.0.0.1:5123/delete-model - + delete_the_model: /delete-model + delete_the_model_full: http://127.0.0.1:5123/delete-model #################### 30000: 大模型对话相关API。 ################### #### 大模型对话 # 模型列表 GET