refactor(llm): 重构模型删除功能并添加完整 URL 配置

- 修改了 BaseModelServiceImpl 中的 deleteTheModel 方法,使用 OkHttpClient 发送 HTTP DELETE 请求
- 在 LLMBackendProperties 中添加了 deleteTheModelFull 字段,用于配置完整的删除模型 URL
- 更新了 FineTuningTaskHttpService 中的删除模型逻辑,使用新的完整 URL 配置
- 修改了 Docker Compose 配置,增加了8123 和 5123 端口的映射
- 更新了 application-ymx.yaml 配置,修改了删除模型的 API 路径
This commit is contained in:
sunxiqing 2025-03-14 19:45:43 +08:00
parent b426e158d0
commit ba26af27cc
4 changed files with 66 additions and 6 deletions

View File

@ -123,6 +123,7 @@ public class LLMBackendProperties {
private String deleteTheModel;
private String deleteTheModelFull;
/**
* 知识库向量嵌入
*/

View File

@ -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<String,String> 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);
}
}
/**
* 校验模型使用情况
*

View File

@ -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()

View File

@ -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