From 9685fb9745918fb47dcb313149f1b792d2d53107 Mon Sep 17 00:00:00 2001 From: ire <931903008@qq.com> Date: Tue, 31 Dec 2024 10:19:48 +0800 Subject: [PATCH 01/11] bug --- .../llm/service/basemodel/BaseModelServiceImpl.java | 2 +- .../admin/user/vo/user/UserStudentExcelVO.java | 10 ++++++++-- .../admin/user/vo/user/UserTeacherExcelVO.java | 10 ++++++++-- 3 files changed, 17 insertions(+), 5 deletions(-) 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 a98823cc5..d01540860 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 @@ -75,7 +75,7 @@ public class BaseModelServiceImpl implements BaseModelService { @Override public List getBaseModelList() { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(BaseModelDO::getIsActive,0); + queryWrapper.eq(BaseModelDO::getIsActive,1); List baseModelDOS = baseModelMapper.selectList(queryWrapper); return baseModelDOS; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserStudentExcelVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserStudentExcelVO.java index bd8f24b05..807500c9a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserStudentExcelVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserStudentExcelVO.java @@ -1,11 +1,17 @@ package cn.iocoder.yudao.module.system.controller.admin.user.vo.user; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; @Data -@ExcelIgnoreUnannotated +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 public class UserStudentExcelVO { @ExcelProperty("登录账号") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserTeacherExcelVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserTeacherExcelVO.java index 4a3986fb1..7f3d2ef11 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserTeacherExcelVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserTeacherExcelVO.java @@ -1,11 +1,17 @@ package cn.iocoder.yudao.module.system.controller.admin.user.vo.user; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; @Data -@ExcelIgnoreUnannotated +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题 public class UserTeacherExcelVO { @ExcelProperty("登录账号") From 23bc3d31901fb5633f1da79d737507200f9a4c91 Mon Sep 17 00:00:00 2001 From: ire <931903008@qq.com> Date: Tue, 31 Dec 2024 10:43:26 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=20=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/knowledgebase/KnowledgeBaseController.java | 8 ++++++++ .../llm/service/knowledgebase/KnowledgeBaseService.java | 2 ++ .../service/knowledgebase/KnowledgeBaseServiceImpl.java | 6 ++++++ 3 files changed, 16 insertions(+) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/knowledgebase/KnowledgeBaseController.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/knowledgebase/KnowledgeBaseController.java index 670b99494..f899e3cdb 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/knowledgebase/KnowledgeBaseController.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/knowledgebase/KnowledgeBaseController.java @@ -77,6 +77,14 @@ public class KnowledgeBaseController { return success(BeanUtils.toBean(pageResult, KnowledgeBaseRespVO.class)); } + @GetMapping("/list") + @Operation(summary = "获得知识库分页") + @PreAuthorize("@ss.hasPermission('llm:knowledge-base:query')") + public CommonResult> getKnowledgeBaseList() { + List list = knowledgeBaseService.getKnowledgeBaseList(); + return success(BeanUtils.toBean(list, KnowledgeBaseRespVO.class)); + } + @GetMapping("/export-excel") @Operation(summary = "导出知识库 Excel") @PreAuthorize("@ss.hasPermission('llm:knowledge-base:export')") diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/knowledgebase/KnowledgeBaseService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/knowledgebase/KnowledgeBaseService.java index 9ca89f434..fc42f4bd5 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/knowledgebase/KnowledgeBaseService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/knowledgebase/KnowledgeBaseService.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.llm.controller.admin.knowledgebase.vo.KnowledgeBa import cn.iocoder.yudao.module.llm.dal.dataobject.knowledgebase.KnowledgeBaseDO; import javax.validation.Valid; +import java.util.List; /** * 知识库 Service 接口 @@ -52,4 +53,5 @@ public interface KnowledgeBaseService { */ PageResult getKnowledgeBasePage(KnowledgeBasePageReqVO pageReqVO); + List getKnowledgeBaseList(); } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/knowledgebase/KnowledgeBaseServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/knowledgebase/KnowledgeBaseServiceImpl.java index 2b630103e..c2d7e0a45 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/knowledgebase/KnowledgeBaseServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/knowledgebase/KnowledgeBaseServiceImpl.java @@ -13,6 +13,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.KNOWLEDGE_BASE_NOT_EXISTS; import javax.annotation.Resource; +import java.util.List; /** * 知识库 Service 实现类 @@ -68,4 +69,9 @@ public class KnowledgeBaseServiceImpl implements KnowledgeBaseService { return knowledgeBaseMapper.selectPage(pageReqVO); } + @Override + public List getKnowledgeBaseList() { + return knowledgeBaseMapper.selectList(); + } + } From 76037d4756a31663db83821ca612fbdedde60b47 Mon Sep 17 00:00:00 2001 From: zhangtao Date: Tue, 31 Dec 2024 10:56:06 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/llm/enums/ErrorCodeConstants.java | 2 + .../admin/basemodel/BaseModelController.java | 4 +- .../conversation/ConversationController.java | 5 ++ .../admin/conversation/vo/ChatReqVO.java | 26 +++++++++ .../admin/conversation/vo/ChatRespVO.java | 30 ++++++++++ .../service/basemodel/BaseModelService.java | 2 +- .../basemodel/BaseModelServiceImpl.java | 2 +- .../conversation/ConversationService.java | 1 + .../conversation/ConversationServiceImpl.java | 58 +++++++++++++++++++ 9 files changed, 126 insertions(+), 4 deletions(-) create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatRespVO.java diff --git a/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java b/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java index fb622efdc..830b6bc0e 100644 --- a/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java +++ b/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java @@ -71,4 +71,6 @@ public interface ErrorCodeConstants { ErrorCode TRAINING_NOT_EXISTS = new ErrorCode(10029, "训练不存在"); + ErrorCode MODEL_COMPLETIONS_ERROR = new ErrorCode(10030, "模型推理失败"); + } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/BaseModelController.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/BaseModelController.java index b6ad1fc87..b987e9ba8 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/BaseModelController.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/BaseModelController.java @@ -85,7 +85,7 @@ public class BaseModelController { @Operation(summary = "获得基座模型") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('llm:base-model:query')") - public CommonResult getBaseModel(@RequestParam("id") Integer id) { + public CommonResult getBaseModel(@RequestParam("id") Long id) { BaseModelDO baseModel = baseModelService.getBaseModel(id); return success(BeanUtils.toBean(baseModel, BaseModelRespVO.class)); } @@ -94,7 +94,7 @@ public class BaseModelController { @Operation(summary = "获取参数模板") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('llm:base-model:query')") - public CommonResult getParamModel(@RequestParam("id") Integer id) { + public CommonResult getParamModel(@RequestParam("id") Long id) { BaseModelDO baseModel = baseModelService.getBaseModel(id); //todo 获取参数模板api return success(new JSONObject()); diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/ConversationController.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/ConversationController.java index 2096f9a2e..787c34b61 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/ConversationController.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/ConversationController.java @@ -92,4 +92,9 @@ public class ConversationController { BeanUtils.toBean(list, ConversationRespVO.class)); } + @PostMapping("/chat") + @Operation(summary = "对话推理接口") + public CommonResult chat(@Valid @RequestBody ChatReqVO chatReqVO) { + return success(conversationService.chat(chatReqVO)); + } } \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java new file mode 100644 index 000000000..49415091c --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.llm.controller.admin.conversation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Schema(description = "管理后台 - 大模型对话推理聊天 Request VO") +@Data +public class ChatReqVO { + + @Schema(description = "模型类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "模型类型不能为空") + private Integer modelType; + @Schema(description = "模型ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "模型ID不能为空") + private Long modelId; + @Schema(description = "应用ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "应用ID不能为空") + private Long applicationId; + @Schema(description = "对话的内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "对话的内容不能为空") + private String prompt; + @Schema(description = "对话ID", requiredMode = Schema.RequiredMode.REQUIRED) + private String uuid; +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatRespVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatRespVO.java new file mode 100644 index 000000000..ec42463e8 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatRespVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.llm.controller.admin.conversation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Schema(description = "管理后台 - 大模型对话推理聊天 Response VO") +@Data +public class ChatRespVO { + + @Schema(description = "对话ID", requiredMode = Schema.RequiredMode.REQUIRED) + private String uuid; + @Schema(description = "模型类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "模型类型不能为空") + private Integer modelType; + @Schema(description = "模型ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "模型ID不能为空") + private Long modelId; + @Schema(description = "应用ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "应用ID不能为空") + private Long applicationId; + @Schema(description = "对话的内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "对话的内容不能为空") + private String prompt; + @Schema(description = "回答的内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "回答的内容不能为空") + private String response; + +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelService.java index 8eec53a09..e469fdaa5 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelService.java @@ -42,7 +42,7 @@ public interface BaseModelService { * @param id 编号 * @return 基座模型 */ - BaseModelDO getBaseModel(Integer id); + BaseModelDO getBaseModel(Long id); /** * 获得基座模型分页 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 a98823cc5..69d7e5cea 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 @@ -63,7 +63,7 @@ public class BaseModelServiceImpl implements BaseModelService { } @Override - public BaseModelDO getBaseModel(Integer id) { + public BaseModelDO getBaseModel(Long id) { return baseModelMapper.selectById(id); } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationService.java index f1cdabc6b..2e3072cb8 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationService.java @@ -52,4 +52,5 @@ public interface ConversationService { */ PageResult getConversationPage(ConversationPageReqVO pageReqVO); + ChatRespVO chat(@Valid ChatReqVO chatReqVO); } \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java index 294aa64f4..e99b0376f 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java @@ -1,11 +1,21 @@ package cn.iocoder.yudao.module.llm.service.conversation; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO; +import cn.iocoder.yudao.module.llm.service.basemodel.BaseModelService; +import cn.iocoder.yudao.module.llm.service.http.ModelService; +import cn.iocoder.yudao.module.llm.service.http.vo.ModelCompletionsReqVO; +import cn.iocoder.yudao.module.llm.service.http.vo.ModelCompletionsRespVO; +import com.alibaba.excel.util.StringUtils; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.concurrent.TimeUnit; + import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.*; import cn.iocoder.yudao.module.llm.dal.dataobject.conversation.ConversationDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -28,6 +38,17 @@ public class ConversationServiceImpl implements ConversationService { @Resource private ConversationMapper conversationMapper; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private ModelService modelService; + @Resource + private BaseModelService baseModelService; + + // 聊天会话历史记录缓存Key + private final static String CHAT_HIStORY_REDIS_KEY = "llm:chat:history"; + // 聊天会话历史记录缓存时间 + private final static Long CHAT_HISTORY_REDIS_EXPIRE_SECONDS = 60 * 60 * 24L; @Override public Integer createConversation(ConversationSaveReqVO createReqVO) { @@ -71,4 +92,41 @@ public class ConversationServiceImpl implements ConversationService { return conversationMapper.selectPage(pageReqVO); } + @Override + public ChatRespVO chat(ChatReqVO chatReqVO) { + if (StringUtils.isBlank(chatReqVO.getUuid())) { + // 如果没有uuid,就生成一个 + chatReqVO.setUuid(UUID.randomUUID().toString()); + } + String model = null; + if (Objects.equals(1, chatReqVO.getModelType())) { + // 预制模型 + BaseModelDO baseModelDO = baseModelService.getBaseModel(chatReqVO.getModelId()); + if (baseModelDO == null) { + throw exception(BASE_MODEL_NOT_EXISTS); + } + model = baseModelDO.getModelName(); + } + ModelCompletionsReqVO.ModelCompletionsMessage message = new ModelCompletionsReqVO.ModelCompletionsMessage(); + message.setRole("user"); + message.setContent(chatReqVO.getPrompt()); + // TODO: 聊天推理 + List messageHistoryList = stringRedisTemplate.opsForList().range(CHAT_HIStORY_REDIS_KEY + ":" + chatReqVO.getUuid(), 0, -1); + List messages = new ArrayList<>(); + if (messageHistoryList != null && !messageHistoryList.isEmpty()) { + for (String messageHistory : messageHistoryList) { + messages.add(JsonUtils.parseObject(messageHistory, ModelCompletionsReqVO.ModelCompletionsMessage.class)); + } + } + messages.add(message); + ModelCompletionsReqVO modelCompletionsReqVO = new ModelCompletionsReqVO(); + modelCompletionsReqVO.setMessages(messages); + modelCompletionsReqVO.setModel(model); + ModelCompletionsRespVO modelCompletionsRespVO = modelService.modelCompletions(modelCompletionsReqVO); + if (modelCompletionsRespVO == null) { + throw exception(MODEL_COMPLETIONS_ERROR); + } + stringRedisTemplate.opsForList().rightPush(CHAT_HIStORY_REDIS_KEY + ":" + chatReqVO.getUuid(), JsonUtils.toJsonString(message)); + return null; + } } \ No newline at end of file From 3a8969499fad992826ffffbe512f6e9ea62ad336 Mon Sep 17 00:00:00 2001 From: zhangtao Date: Tue, 31 Dec 2024 11:05:40 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../llm/service/conversation/ConversationServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java index e99b0376f..2ce9801be 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java @@ -126,7 +126,10 @@ public class ConversationServiceImpl implements ConversationService { if (modelCompletionsRespVO == null) { throw exception(MODEL_COMPLETIONS_ERROR); } + ChatRespVO chatRespVO = BeanUtils.toBean(chatReqVO, ChatRespVO.class); + chatRespVO.setResponse(modelCompletionsRespVO.getAnswer()); + // 将聊天记录放入缓存 stringRedisTemplate.opsForList().rightPush(CHAT_HIStORY_REDIS_KEY + ":" + chatReqVO.getUuid(), JsonUtils.toJsonString(message)); - return null; + return chatRespVO; } } \ No newline at end of file From 8f429d4a02f0fe54592dad0ceda88b455198a8ce Mon Sep 17 00:00:00 2001 From: ire <931903008@qq.com> Date: Tue, 31 Dec 2024 11:24:14 +0800 Subject: [PATCH 05/11] baseModel id --- .../controller/admin/basemodel/BaseModelController.java | 4 ++-- .../llm/controller/admin/basemodel/vo/BaseModelRespVO.java | 2 +- .../controller/admin/basemodel/vo/BaseModelSaveReqVO.java | 2 +- .../module/llm/dal/dataobject/basemodel/BaseModelDO.java | 2 +- .../module/llm/service/basemodel/BaseModelService.java | 4 ++-- .../module/llm/service/basemodel/BaseModelServiceImpl.java | 7 ++++--- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/BaseModelController.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/BaseModelController.java index b987e9ba8..80bdc5e9a 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/BaseModelController.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/BaseModelController.java @@ -42,7 +42,7 @@ public class BaseModelController { @PostMapping("/create") @Operation(summary = "创建基座模型") @PreAuthorize("@ss.hasPermission('llm:base-model:create')") - public CommonResult createBaseModel(@Valid @RequestBody BaseModelSaveReqVO createReqVO) { + public CommonResult createBaseModel(@Valid @RequestBody BaseModelSaveReqVO createReqVO) { return success(baseModelService.createBaseModel(createReqVO)); } @@ -76,7 +76,7 @@ public class BaseModelController { @Operation(summary = "删除基座模型") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('llm:base-model:delete')") - public CommonResult deleteBaseModel(@RequestParam("id") Integer id) { + public CommonResult deleteBaseModel(@RequestParam("id") Long id) { baseModelService.deleteBaseModel(id); return success(true); } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/vo/BaseModelRespVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/vo/BaseModelRespVO.java index 2548afe2f..bee7504be 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/vo/BaseModelRespVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/vo/BaseModelRespVO.java @@ -14,7 +14,7 @@ public class BaseModelRespVO { @Schema(description = "基座模型唯一标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "2828") @ExcelProperty("基座模型唯一标识") - private Integer id; + private Long id; @Schema(description = "基座模型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") @ExcelProperty("基座模型名称") diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/vo/BaseModelSaveReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/vo/BaseModelSaveReqVO.java index 1869d9fe5..b74ed30cb 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/vo/BaseModelSaveReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/basemodel/vo/BaseModelSaveReqVO.java @@ -10,7 +10,7 @@ import javax.validation.constraints.*; public class BaseModelSaveReqVO { @Schema(description = "基座模型唯一标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "2828") - private Integer id; + private Long id; @Schema(description = "基座模型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") @NotEmpty(message = "基座模型名称不能为空") diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/basemodel/BaseModelDO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/basemodel/BaseModelDO.java index 51173b741..e8e51db1e 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/basemodel/BaseModelDO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/basemodel/BaseModelDO.java @@ -26,7 +26,7 @@ public class BaseModelDO extends BaseDO { * 基座模型唯一标识 */ @TableId - private Integer id; + private Long id; /** * 基座模型名称 */ diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelService.java index e469fdaa5..a80d41e83 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/basemodel/BaseModelService.java @@ -20,7 +20,7 @@ public interface BaseModelService { * @param createReqVO 创建信息 * @return 编号 */ - Integer createBaseModel(@Valid BaseModelSaveReqVO createReqVO); + Long createBaseModel(@Valid BaseModelSaveReqVO createReqVO); /** * 更新基座模型 @@ -34,7 +34,7 @@ public interface BaseModelService { * * @param id 编号 */ - void deleteBaseModel(Integer id); + void deleteBaseModel(Long id); /** * 获得基座模型 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 627f40bb5..867c83795 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 @@ -31,7 +31,7 @@ public class BaseModelServiceImpl implements BaseModelService { private BaseModelMapper baseModelMapper; @Override - public Integer createBaseModel(BaseModelSaveReqVO createReqVO) { + public Long createBaseModel(BaseModelSaveReqVO createReqVO) { // 插入 BaseModelDO baseModel = BeanUtils.toBean(createReqVO, BaseModelDO.class); baseModelMapper.insert(baseModel); @@ -49,14 +49,14 @@ public class BaseModelServiceImpl implements BaseModelService { } @Override - public void deleteBaseModel(Integer id) { + public void deleteBaseModel(Long id) { // 校验存在 validateBaseModelExists(id); // 删除 baseModelMapper.deleteById(id); } - private void validateBaseModelExists(Integer id) { + private void validateBaseModelExists(Long id) { if (baseModelMapper.selectById(id) == null) { throw exception(BASE_MODEL_NOT_EXISTS); } @@ -64,6 +64,7 @@ public class BaseModelServiceImpl implements BaseModelService { @Override public BaseModelDO getBaseModel(Long id) { + return baseModelMapper.selectById(id); } From 9fb9df9ec18ea478c424eb45c4def24253e2b46b Mon Sep 17 00:00:00 2001 From: zhangtao Date: Tue, 31 Dec 2024 11:29:16 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../llm/controller/admin/conversation/vo/ChatReqVO.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java index 49415091c..bb578fb9d 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java @@ -4,19 +4,20 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; @Schema(description = "管理后台 - 大模型对话推理聊天 Request VO") @Data public class ChatReqVO { @Schema(description = "模型类型", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "模型类型不能为空") + @NotNull(message = "模型类型不能为空") private Integer modelType; @Schema(description = "模型ID", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "模型ID不能为空") + @NotNull(message = "模型ID不能为空") private Long modelId; @Schema(description = "应用ID", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "应用ID不能为空") + @NotNull(message = "应用ID不能为空") private Long applicationId; @Schema(description = "对话的内容", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "对话的内容不能为空") From 6f61a2e30a7bf8d35fc11cd345b5295f98553879 Mon Sep 17 00:00:00 2001 From: zhangtao Date: Tue, 31 Dec 2024 11:36:17 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iocoder/yudao/module/llm/service/http/ModelService.java | 5 +++++ .../module/llm/service/http/vo/ModelCompletionsReqVO.java | 2 ++ 2 files changed, 7 insertions(+) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java index 7c58519c4..a34b67822 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java @@ -5,11 +5,13 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.llm.framework.backend.config.LLMBackendProperties; import cn.iocoder.yudao.module.llm.service.http.vo.*; import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +@Slf4j @Service public class ModelService { @@ -44,7 +46,10 @@ public class ModelService { if (StringUtils.isBlank(req.getModel())) { req.setModel(DEFAULT_MODEL_ID); } + log.info("url: {}", llmBackendProperties.getModelCompletions()); + log.info("request: {}", req); String result = HttpUtils.post(llmBackendProperties.getModelCompletions(), null, JSON.toJSONString(req)); + log.info("response: {}", result); if (StringUtils.isBlank(result)) { return null; } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelCompletionsReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelCompletionsReqVO.java index f6699f867..74f813ceb 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelCompletionsReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelCompletionsReqVO.java @@ -3,12 +3,14 @@ package cn.iocoder.yudao.module.llm.service.http.vo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; import java.util.List; @Data @NoArgsConstructor @AllArgsConstructor +@ToString public class ModelCompletionsReqVO { private String model; From 713b1b2b394c575b48bb27ff2ce33f266683f682 Mon Sep 17 00:00:00 2001 From: limin Date: Tue, 31 Dec 2024 11:49:24 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E8=B0=83=E4=BC=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FineTuningTaskController.java | 20 ++++++- .../vo/FineTuningTaskPageReqVO.java | 3 + .../vo/FineTuningTaskRespVO.java | 8 +++ .../vo/FineTuningTaskSaveReqVO.java | 3 + .../finetuningtask/FineTuningTaskDO.java | 4 ++ .../finetuningtask/FineTuningTaskMapper.java | 6 +- .../finetuningtask/FineTuningTaskService.java | 19 ++++++ .../FineTuningTaskServiceImpl.java | 60 +++++++++++++++++++ 8 files changed, 119 insertions(+), 4 deletions(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/FineTuningTaskController.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/FineTuningTaskController.java index 2493865d6..e13e6357b 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/FineTuningTaskController.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/FineTuningTaskController.java @@ -71,12 +71,28 @@ public class FineTuningTaskController { return success(BeanUtils.toBean(fineTuningTask, FineTuningTaskRespVO.class)); } + @PutMapping("/stop") + @Operation(summary = "停止模型调优 —— 微调任务") + @PreAuthorize("@ss.hasPermission('llm:fine-tuning-task:update')") + public CommonResult stopFineTuningTask(@RequestParam("id") Long id) { + fineTuningTaskService.stopFineTuningTask(id); + return success(true); + } + + @PutMapping("start") + @Operation(summary = "部署模型调优 —— 微调任务") + @PreAuthorize("@ss.hasPermission('llm:fine-tuning-task:update')") + public CommonResult startFineTuningTask(@RequestParam("id") Long id) { + fineTuningTaskService.startFineTuningTask(id); + return success(true); + } + @GetMapping("/page") @Operation(summary = "获得模型调优 —— 微调任务分页") @PreAuthorize("@ss.hasPermission('llm:fine-tuning-task:query')") public CommonResult> getFineTuningTaskPage(@Valid FineTuningTaskPageReqVO pageReqVO) { - PageResult pageResult = fineTuningTaskService.getFineTuningTaskPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, FineTuningTaskRespVO.class)); + PageResult pageResult = fineTuningTaskService.getFineTuningTaskPage1(pageReqVO); + return success(pageResult); } @GetMapping("/export-excel") diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskPageReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskPageReqVO.java index 3b4825541..5ba229950 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskPageReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskPageReqVO.java @@ -88,4 +88,7 @@ public class FineTuningTaskPageReqVO extends PageParam { @Schema(description = "状态,使用字典(llm_fine_tuning_task_status)", example = "1") private Integer status; + @Schema(description ="基础模型服务Id") + private Long baseModelId; + } \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskRespVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskRespVO.java index 79715a93c..8c1b0a17a 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskRespVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskRespVO.java @@ -125,5 +125,13 @@ public class FineTuningTaskRespVO { @ExcelProperty(value = "状态,使用字典(llm_fine_tuning_task_status)", converter = DictConvert.class) @DictFormat("llm_fine_tuning_task_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private Integer status; + @Schema(description ="基础模型服务Id") + private Long baseModelId; + + @Schema(description = "基础模型服务名称") + private String baseModelName; + + @Schema(description = "数据集名称") + private String datasetName; } \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskSaveReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskSaveReqVO.java index 5d2351216..b1882c981 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskSaveReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/vo/FineTuningTaskSaveReqVO.java @@ -83,4 +83,7 @@ public class FineTuningTaskSaveReqVO { @NotNull(message = "状态,使用字典(llm_fine_tuning_task_status)不能为空") private Integer status; + @Schema(description = "基础模型服务Id") + private Long baseModelId; + } \ No newline at end of file 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 285522672..a81012d64 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 @@ -135,5 +135,9 @@ public class FineTuningTaskDO extends BaseDO { * 枚举 {@link TODO llm_fine_tuning_task_status 对应的类} */ private Integer status; + /** + * 基础服务模型Id + */ + private Long baseModelId; } \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/mysql/finetuningtask/FineTuningTaskMapper.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/mysql/finetuningtask/FineTuningTaskMapper.java index a523745e2..9606cf6f6 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/mysql/finetuningtask/FineTuningTaskMapper.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/mysql/finetuningtask/FineTuningTaskMapper.java @@ -1,13 +1,13 @@ package cn.iocoder.yudao.module.llm.dal.mysql.finetuningtask; -import java.util.*; - import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO; import org.apache.ibatis.annotations.Mapper; import cn.iocoder.yudao.module.llm.controller.admin.finetuningtask.vo.*; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; /** * 模型调优 —— 微调任务 Mapper @@ -47,4 +47,6 @@ public interface FineTuningTaskMapper extends BaseMapperX { .orderByDesc(FineTuningTaskDO::getId)); } + @Update("update llm_fine_tuning_task set status = #{status} where id = #{id}") + void stopStartTask(@Param("id") Long id,@Param("status") int status); } \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskService.java index a22778013..d94bb516f 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskService.java @@ -52,4 +52,23 @@ public interface FineTuningTaskService { */ PageResult getFineTuningTaskPage(FineTuningTaskPageReqVO pageReqVO); + /** + * 获得模型调优 —— 微调任务分页 + * + * @param pageReqVO 分页查询 + * @return 模型调优 —— 微调任务分页 + */ + PageResult getFineTuningTaskPage1(FineTuningTaskPageReqVO pageReqVO); + + /** + * 停止微调任务 + * @param id + */ + void stopFineTuningTask(Long id); + + /** + * 部署微调任务 + * @param id + */ + void startFineTuningTask(Long id); } \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java index 8a6e09dbd..f19020f76 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java @@ -1,12 +1,21 @@ package cn.iocoder.yudao.module.llm.service.finetuningtask; +import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO; +import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetDO; +import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO; +import cn.iocoder.yudao.module.llm.dal.mysql.basemodel.BaseModelMapper; +import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; + import cn.iocoder.yudao.module.llm.controller.admin.finetuningtask.vo.*; import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -30,6 +39,10 @@ public class FineTuningTaskServiceImpl implements FineTuningTaskService { @Resource private FineTuningTaskMapper fineTuningTaskMapper; + @Resource + private BaseModelMapper baseModelMapper; + @Resource + private DatasetMapper datasetMapper; @Override public Long createFineTuningTask(FineTuningTaskSaveReqVO createReqVO) { @@ -71,9 +84,56 @@ public class FineTuningTaskServiceImpl implements FineTuningTaskService { public FineTuningTaskDO getFineTuningTask(Long id) { return fineTuningTaskMapper.selectById(id); } + @Override + public PageResult getFineTuningTaskPage1(FineTuningTaskPageReqVO pageReqVO) { + PageResult pageResult = fineTuningTaskMapper.selectPage(pageReqVO); + PageResult result = BeanUtils.toBean(pageResult, FineTuningTaskRespVO.class); + if (CollectionUtils.isNotEmpty(pageResult.getList())){ + List modelIds = pageResult.getList().stream().map(FineTuningTaskDO::getBaseModelId).collect(Collectors.toList()); + List baseModelDOS = baseModelMapper.selectList(new LambdaQueryWrapper() + .in(BaseModelDO::getId, modelIds)); + Map longModelServiceDOMap = cn.iocoder.yudao.framework.common.util.collection. + CollectionUtils.convertMap(baseModelDOS, BaseModelDO::getId); + result.getList().forEach(item->{ + BaseModelDO baseModelDO = longModelServiceDOMap.get(item.getBaseModelId()); + if(baseModelDO != null){ + item.setBaseModelName(baseModelDO.getModelName()); + } + }); + List dataSetlIds = pageResult.getList().stream().map(FineTuningTaskDO::getDataset).collect(Collectors.toList()); + List datasetDOS = datasetMapper.selectList(new LambdaQueryWrapper().in(DatasetDO::getId, dataSetlIds)); + Map datasetDOMap = cn.iocoder.yudao.framework.common.util.collection. + CollectionUtils.convertMap(datasetDOS, DatasetDO::getId); + result.getList().forEach(item->{ + DatasetDO datasetDO = datasetDOMap.get(item.getDataset()); + if(datasetDO != null){ + item.setDatasetName(datasetDO.getDatasetName()); + } + }); + + } + return result; + } + + /** + * 停止服务 + * @param id + */ + @Override + public void stopFineTuningTask(Long id) { + fineTuningTaskMapper.stopStartTask(id,0); + } + + @Override + public void startFineTuningTask(Long id) { + fineTuningTaskMapper.stopStartTask(id,1); + } @Override public PageResult getFineTuningTaskPage(FineTuningTaskPageReqVO pageReqVO) { + PageResult pageResult = fineTuningTaskMapper.selectPage(pageReqVO); + PageResult result = BeanUtils.toBean(pageResult, FineTuningTaskRespVO.class); + return fineTuningTaskMapper.selectPage(pageReqVO); } From e3b700a049044c28da4c5d1af671297f50c82328 Mon Sep 17 00:00:00 2001 From: limin Date: Tue, 31 Dec 2024 11:55:49 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E6=89=80=E6=9C=89=E6=A0=87=E7=AD=BE=20?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../llm/controller/admin/label/LabelController.java | 13 +++++++++++-- .../module/llm/service/label/LabelService.java | 3 +++ .../module/llm/service/label/LabelServiceImpl.java | 5 +++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/label/LabelController.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/label/LabelController.java index 5514823eb..51a43e944 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/label/LabelController.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/label/LabelController.java @@ -79,17 +79,26 @@ public class LabelController { return success(BeanUtils.toBean(pageResult, LabelRespVO.class)); } + @GetMapping("/all") + @Operation(summary = "获得标签管理列表所有") + @PreAuthorize("@ss.hasPermission('llm:label:query')") + public CommonResult> getLabelList() { + List list = labelService.getLabelList(); + return success(BeanUtils.toBean(list, LabelRespVO.class)); + } + @GetMapping("/export-excel") @Operation(summary = "导出标签管理 Excel") @PreAuthorize("@ss.hasPermission('llm:label:export')") @ApiAccessLog(operateType = EXPORT) public void exportLabelExcel(@Valid LabelPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = labelService.getLabelPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "标签管理.xls", "数据", LabelRespVO.class, - BeanUtils.toBean(list, LabelRespVO.class)); + BeanUtils.toBean(list, LabelRespVO.class)); } } \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelService.java index d3b49d779..f599dae6d 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; import javax.validation.Valid; +import java.util.List; /** * 标签管理 Service 接口 @@ -52,5 +53,7 @@ public interface LabelService { * @return 标签管理分页 */ PageResult getLabelPage(LabelPageReqVO pageReqVO); + // 获取所有标签 + List getLabelList(); } \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelServiceImpl.java index 821e63023..825629fe6 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelServiceImpl.java @@ -72,4 +72,9 @@ public class LabelServiceImpl implements LabelService { return labelMapper.selectPage(pageReqVO); } + @Override + public List getLabelList() { + return labelMapper.selectList(); + } + } \ No newline at end of file From ad7626756dd04d9c387b30db1e56d882efc698ac Mon Sep 17 00:00:00 2001 From: sunxiqing <2240398334@qq.com> Date: Tue, 31 Dec 2024 13:05:09 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=9B=9E=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataRefluxConfigController.java | 31 ++++++++++++-- .../vo/DataRefluxConfigPageReqVO.java | 5 ++- .../vo/DataRefluxConfigRespVO.java | 8 +++- .../vo/DataRefluxConfigSaveReqVO.java | 5 ++- .../vo/DataRefluxDataSaveReqVO.java | 9 ++++- .../datarefluxconfig/DataRefluxConfigDO.java | 6 ++- .../datarefluxdata/DataRefluxDataDO.java | 10 ++++- .../DataRefluxConfigServiceImpl.java | 40 ++++++++++++++++++- 8 files changed, 103 insertions(+), 11 deletions(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/DataRefluxConfigController.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/DataRefluxConfigController.java index 91fc353cf..6926d5e7e 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/DataRefluxConfigController.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/DataRefluxConfigController.java @@ -1,5 +1,8 @@ package cn.iocoder.yudao.module.llm.controller.admin.datarefluxconfig; +import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper; +import cn.iocoder.yudao.module.llm.service.basemodel.BaseModelService; +import cn.iocoder.yudao.module.llm.service.modelservice.ModelServiceService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -37,6 +40,10 @@ public class DataRefluxConfigController { @Resource private DataRefluxConfigService dataRefluxConfigService; + @Resource + private ModelServiceService modelServiceService; + @Resource + private BaseModelService baseModelService; @PostMapping("/create") @Operation(summary = "创建数据回流配置") @@ -68,7 +75,13 @@ public class DataRefluxConfigController { @PreAuthorize("@ss.hasPermission('llm:data-reflux-config:query')") public CommonResult getDataRefluxConfig(@RequestParam("id") Long id) { DataRefluxConfigDO dataRefluxConfig = dataRefluxConfigService.getDataRefluxConfig(id); - return success(BeanUtils.toBean(dataRefluxConfig, DataRefluxConfigRespVO.class)); + DataRefluxConfigRespVO bean = BeanUtils.toBean(dataRefluxConfig, DataRefluxConfigRespVO.class); + if (bean.getModelType()==0){ + bean.setModelServiceName(modelServiceService.getModelService(bean.getModelServiceId()).getServiceName()); + }else if (bean.getModelType()==1){ + bean.setModelServiceName(baseModelService.getBaseModel(bean.getModelServiceId()).getModelName()); + } + return success(bean); } @GetMapping("/page") @@ -76,7 +89,19 @@ public class DataRefluxConfigController { @PreAuthorize("@ss.hasPermission('llm:data-reflux-config:query')") public CommonResult> getDataRefluxConfigPage(@Valid DataRefluxConfigPageReqVO pageReqVO) { PageResult pageResult = dataRefluxConfigService.getDataRefluxConfigPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, DataRefluxConfigRespVO.class)); + if (pageResult==null){ + return success(PageResult.empty()); + } + PageResult bean = BeanUtils.toBean(pageResult, DataRefluxConfigRespVO.class); + for (DataRefluxConfigRespVO dataRefluxConfigRespVO : bean.getList()){ + if (dataRefluxConfigRespVO.getModelType()==0){ + dataRefluxConfigRespVO.setModelServiceName(modelServiceService.getModelService(dataRefluxConfigRespVO.getModelServiceId()).getServiceName()); + }else if (dataRefluxConfigRespVO.getModelType()==1){ + dataRefluxConfigRespVO.setModelServiceName(baseModelService.getBaseModel(dataRefluxConfigRespVO.getModelServiceId()).getModelName()); + } + } +// PageResult result = bean.setList(bean.getList()); + return success(bean); } @GetMapping("/export-excel") @@ -92,4 +117,4 @@ public class DataRefluxConfigController { BeanUtils.toBean(list, DataRefluxConfigRespVO.class)); } -} \ No newline at end of file +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigPageReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigPageReqVO.java index 617a1462a..de6faffdc 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigPageReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigPageReqVO.java @@ -18,8 +18,11 @@ public class DataRefluxConfigPageReqVO extends PageParam { @Schema(description = "模型服务ID", example = "2475") private Long modelServiceId; + @Schema(description = "模型服务", example = "0") + private String modelServiceName; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; -} \ No newline at end of file +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigRespVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigRespVO.java index f08891ddd..954bc0905 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigRespVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigRespVO.java @@ -20,8 +20,14 @@ public class DataRefluxConfigRespVO { @ExcelProperty("模型服务ID") private Long modelServiceId; + @Schema(description = "模型服务", example = "0") + private String modelServiceName; + + @Schema(description = "是否预知模型(0普通 1官方)", example = "0") + private Long modelType; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; -} \ No newline at end of file +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigSaveReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigSaveReqVO.java index 875e07013..fba877293 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigSaveReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxconfig/vo/DataRefluxConfigSaveReqVO.java @@ -16,4 +16,7 @@ public class DataRefluxConfigSaveReqVO { @NotNull(message = "模型服务ID不能为空") private Long modelServiceId; -} \ No newline at end of file + @Schema(description = "是否预知模型(0普通 1官方)", example = "0") + private Long modelType; + +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxdata/vo/DataRefluxDataSaveReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxdata/vo/DataRefluxDataSaveReqVO.java index 20ad5ac6d..2487aa32d 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxdata/vo/DataRefluxDataSaveReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/datarefluxdata/vo/DataRefluxDataSaveReqVO.java @@ -16,6 +16,13 @@ public class DataRefluxDataSaveReqVO { @NotNull(message = "模型服务ID不能为空") private Long modelServiceId; + @Schema(description = "数据回流ID", example = "31011") + private Long configId; + + @Schema(description = "是否预知模型(0普通 1官方)", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") + @NotNull(message = "是否预知模型(0普通 1官方)不能为空") + private Long modelType; + @Schema(description = "system") private String system; @@ -25,4 +32,4 @@ public class DataRefluxDataSaveReqVO { @Schema(description = "Response") private String response; -} \ No newline at end of file +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/datarefluxconfig/DataRefluxConfigDO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/datarefluxconfig/DataRefluxConfigDO.java index 19afb8860..6115dc382 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/datarefluxconfig/DataRefluxConfigDO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/datarefluxconfig/DataRefluxConfigDO.java @@ -31,5 +31,9 @@ public class DataRefluxConfigDO extends BaseDO { * 模型服务ID */ private Long modelServiceId; + /** + * 是否预知模型(0普通 1官方) + */ + private Long modelType; -} \ No newline at end of file +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/datarefluxdata/DataRefluxDataDO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/datarefluxdata/DataRefluxDataDO.java index caf4a36bb..243bfe8b8 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/datarefluxdata/DataRefluxDataDO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/datarefluxdata/DataRefluxDataDO.java @@ -31,6 +31,14 @@ public class DataRefluxDataDO extends BaseDO { * 模型服务ID */ private Long modelServiceId; + /** + * 数据回流ID + */ + private Long configId; + /** + * 是否预知模型(0普通 1官方) + */ + private Long modelType; /** * system */ @@ -44,4 +52,4 @@ public class DataRefluxDataDO extends BaseDO { */ private String response; -} \ No newline at end of file +} diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/datarefluxconfig/DataRefluxConfigServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/datarefluxconfig/DataRefluxConfigServiceImpl.java index 783f4e52e..efa80d1cc 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/datarefluxconfig/DataRefluxConfigServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/datarefluxconfig/DataRefluxConfigServiceImpl.java @@ -1,11 +1,20 @@ package cn.iocoder.yudao.module.llm.service.datarefluxconfig; +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO; +import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO; +import cn.iocoder.yudao.module.llm.dal.mysql.basemodel.BaseModelMapper; +import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; + import cn.iocoder.yudao.module.llm.controller.admin.datarefluxconfig.vo.*; import cn.iocoder.yudao.module.llm.dal.dataobject.datarefluxconfig.DataRefluxConfigDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -28,6 +37,10 @@ public class DataRefluxConfigServiceImpl implements DataRefluxConfigService { @Resource private DataRefluxConfigMapper dataRefluxConfigMapper; + @Resource + private ModelServiceMapper modelServiceMapper; + @Resource + private BaseModelMapper baseModelMapper; @Override public Long createDataRefluxConfig(DataRefluxConfigSaveReqVO createReqVO) { @@ -68,7 +81,30 @@ public class DataRefluxConfigServiceImpl implements DataRefluxConfigService { @Override public PageResult getDataRefluxConfigPage(DataRefluxConfigPageReqVO pageReqVO) { - return dataRefluxConfigMapper.selectPage(pageReqVO); + LambdaQueryWrapper like = new LambdaQueryWrapper().like(ModelServiceDO::getServiceName, pageReqVO.getModelServiceName()); + List modelServiceDOS = modelServiceMapper.selectList(like); + List collect = modelServiceDOS.stream().map(ModelServiceDO::getId).collect(Collectors.toList()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper().like(BaseModelDO::getModelName, pageReqVO.getModelServiceName()); + List baseModelDOS = baseModelMapper.selectList(wrapper); + List collect1 = baseModelDOS.stream().map(BaseModelDO::getId).collect(Collectors.toList()); + LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX() + .eqIfPresent(DataRefluxConfigDO::getModelServiceId, pageReqVO.getModelServiceId()) + .betweenIfPresent(DataRefluxConfigDO::getCreateTime, pageReqVO.getCreateTime()) + .orderByDesc(DataRefluxConfigDO::getId); + if (collect.size()==0&&collect1.size()==0&&pageReqVO.getModelServiceName()!=null){ + return null; + } + if (ObjectUtil.isNotEmpty(collect) || ObjectUtil.isNotEmpty(collect1)) { + wrapperX.and(w -> { + if (ObjectUtil.isNotEmpty(collect)) { + w.or().in(DataRefluxConfigDO::getModelServiceId, collect).eq(DataRefluxConfigDO::getModelType, 0); + } + if (ObjectUtil.isNotEmpty(collect1)) { + w.or().in(DataRefluxConfigDO::getModelServiceId, collect1).eq(DataRefluxConfigDO::getModelType, 1); + } + }); + } + return dataRefluxConfigMapper.selectPage(pageReqVO,wrapperX); } -} \ No newline at end of file +} From 1229366d67d94da71ddd856aa52e6a871ddbaa84 Mon Sep 17 00:00:00 2001 From: limin Date: Tue, 31 Dec 2024 13:07:55 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E8=B0=83=E4=BC=98=20?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E8=BF=94=E5=9B=9E=E6=9F=A5=E8=AF=A2=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../finetuningtask/FineTuningTaskController.java | 3 +-- .../finetuningtask/FineTuningTaskService.java | 2 +- .../FineTuningTaskServiceImpl.java | 16 ++++++++++++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/FineTuningTaskController.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/FineTuningTaskController.java index e13e6357b..5ca6bcfa2 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/FineTuningTaskController.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/finetuningtask/FineTuningTaskController.java @@ -67,8 +67,7 @@ public class FineTuningTaskController { @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('llm:fine-tuning-task:query')") public CommonResult getFineTuningTask(@RequestParam("id") Long id) { - FineTuningTaskDO fineTuningTask = fineTuningTaskService.getFineTuningTask(id); - return success(BeanUtils.toBean(fineTuningTask, FineTuningTaskRespVO.class)); + return success(fineTuningTaskService.getFineTuningTask(id)); } @PutMapping("/stop") diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskService.java index d94bb516f..87c3d2ee1 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskService.java @@ -42,7 +42,7 @@ public interface FineTuningTaskService { * @param id 编号 * @return 模型调优 —— 微调任务 */ - FineTuningTaskDO getFineTuningTask(Long id); + FineTuningTaskRespVO getFineTuningTask(Long id); /** * 获得模型调优 —— 微调任务分页 diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java index f19020f76..e4ffc1047 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java @@ -81,8 +81,20 @@ public class FineTuningTaskServiceImpl implements FineTuningTaskService { } @Override - public FineTuningTaskDO getFineTuningTask(Long id) { - return fineTuningTaskMapper.selectById(id); + public FineTuningTaskRespVO getFineTuningTask(Long id) { + FineTuningTaskDO fineTuningTaskDO = fineTuningTaskMapper.selectById(id); + FineTuningTaskRespVO result = BeanUtils.toBean(fineTuningTaskDO, FineTuningTaskRespVO.class); + Long dataset = fineTuningTaskDO.getDataset(); + if (dataset != null) { + DatasetDO datasetDO = datasetMapper.selectById(dataset); + result.setDatasetName(datasetDO.getDatasetName()); + } + Long baseModelId = fineTuningTaskDO.getBaseModelId(); + if (baseModelId != null) { + BaseModelDO baseModelDO = baseModelMapper.selectById(baseModelId); + result.setBaseModelName(baseModelDO.getModelName()); + } + return result; } @Override public PageResult getFineTuningTaskPage1(FineTuningTaskPageReqVO pageReqVO) {