From 46b5f17bbc3830cdf67d6e0159b2a9af72e53a7d Mon Sep 17 00:00:00 2001 From: cherishsince Date: Tue, 7 May 2024 14:43:07 +0800 Subject: [PATCH] 【调整】modal 修改为 model --- yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModalController.java | 61 ------------------------------------------------------------- yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModelController.java | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalAddReqVO.java | 54 ------------------------------------------------------ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalListReqVO.java | 22 ---------------------- yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalListRespVO.java | 41 ----------------------------------------- yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelAddReqVO.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelListReqVO.java | 22 ++++++++++++++++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelListRespVO.java | 41 +++++++++++++++++++++++++++++++++++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatModalConvert.java | 49 ------------------------------------------------- yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatModelConvert.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatModalDO.java | 81 --------------------------------------------------------------------------------- yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatModelDO.java | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatModalMapper.java | 40 ---------------------------------------- yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatModelMapper.java | 40 ++++++++++++++++++++++++++++++++++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatModalService.java | 71 ----------------------------------------------------------------------- yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatModelService.java | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/impl/AiChatModalServiceImpl.java | 54 +++++++++++++++++++++++++++--------------------------- 17 files changed, 444 insertions(+), 446 deletions(-) delete mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModalController.java create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModelController.java delete mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalAddReqVO.java delete mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalListReqVO.java delete mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalListRespVO.java create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelAddReqVO.java create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelListReqVO.java create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelListRespVO.java delete mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatModalConvert.java create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatModelConvert.java delete mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatModalDO.java create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatModelDO.java delete mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatModalMapper.java create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatModelMapper.java delete mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatModalService.java create mode 100644 yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatModelService.java diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModalController.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModalController.java deleted file mode 100644 index 929a9e3..0000000 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModalController.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.iocoder.yudao.module.ai.controller.admin.model; - -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalAddReqVO; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalListReqVO; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalListRespVO; -import cn.iocoder.yudao.module.ai.service.AiChatModalService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -// TODO @fan:调整下接口;相关 vo 的命名等等;modal => model - -/** - * ai 模型 - * - * @author fansili - * @time 2024/4/24 19:42 - * @since 1.0 - */ -@Tag(name = "A6-AI模型") -@RestController -@RequestMapping("/ai/chat/modal") -@Slf4j -@AllArgsConstructor -public class AiChatModalController { - - private final AiChatModalService aiChatModalService; - - @Operation(summary = "ai模型 - 模型列表") - @GetMapping("/list") - public PageResult list(@ModelAttribute AiChatModalListReqVO req) { - return aiChatModalService.list(req); - } - - @Operation(summary = "ai模型 - 添加") - @PutMapping("/add") - public CommonResult add(@RequestBody @Validated AiChatModalAddReqVO req) { - aiChatModalService.add(req); - return CommonResult.success(null); - } - - @Operation(summary = "ai模型 - 修改") - @PostMapping("/update") - public CommonResult update(@RequestParam("id") Long id, - @RequestBody @Validated AiChatModalAddReqVO req) { - aiChatModalService.update(id, req); - return CommonResult.success(null); - } - - @Operation(summary = "ai模型 - 删除") - @DeleteMapping("/delete") - public CommonResult delete(@RequestParam("id") Long id) { - aiChatModalService.delete(id); - return CommonResult.success(null); - } -} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModelController.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModelController.java new file mode 100644 index 0000000..16da3a7 --- /dev/null +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModelController.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.ai.controller.admin.model; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelAddReqVO; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelListReqVO; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelListRespVO; +import cn.iocoder.yudao.module.ai.service.AiChatModelService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +// TODO @fan:调整下接口;相关 vo 的命名等等;modal => model + +/** + * ai 模型 + * + * @author fansili + * @time 2024/4/24 19:42 + * @since 1.0 + */ +@Tag(name = "A6-AI模型") +@RestController +@RequestMapping("/ai/chat/model") +@Slf4j +@AllArgsConstructor +public class AiChatModelController { + + private final AiChatModelService aiChatModelService; + + @Operation(summary = "ai模型 - 模型列表") + @GetMapping("/list") + public PageResult list(@ModelAttribute AiChatModelListReqVO req) { + return aiChatModelService.list(req); + } + + @Operation(summary = "ai模型 - 添加") + @PutMapping("/add") + public CommonResult add(@RequestBody @Validated AiChatModelAddReqVO req) { + aiChatModelService.add(req); + return CommonResult.success(null); + } + + @Operation(summary = "ai模型 - 修改") + @PostMapping("/update") + public CommonResult update(@RequestParam("id") Long id, + @RequestBody @Validated AiChatModelAddReqVO req) { + aiChatModelService.update(id, req); + return CommonResult.success(null); + } + + @Operation(summary = "ai模型 - 删除") + @DeleteMapping("/delete") + public CommonResult delete(@RequestParam("id") Long id) { + aiChatModelService.delete(id); + return CommonResult.success(null); + } +} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalAddReqVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalAddReqVO.java deleted file mode 100644 index e9bc924..0000000 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalAddReqVO.java +++ /dev/null @@ -1,54 +0,0 @@ -package cn.iocoder.yudao.module.ai.controller.admin.model.vo.model; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.experimental.Accessors; - -/** - * ai chat modal - * - * @author fansili - * @time 2024/4/24 19:47 - * @since 1.0 - */ -@Data -@Accessors(chain = true) -public class AiChatModalAddReqVO { - - @Schema(description = "API 秘钥编号") - @Size(max = 32, message = "API 秘钥编号最大32个字符") - @NotNull(message = "API 秘钥编号不能为空!") - private Long keyId; - - @Schema(description = "模型名字") - @Size(max = 60, message = "模型名字最大60个字符") - @NotNull(message = "模型名字不能为空!") - private String name; - - @Schema(description = "模型类型(qianwen、yiyan、xinghuo、openai)") - @Size(max = 32, message = "模型类型最大32个字符") - @NotNull(message = "model模型不能为空!") - private String model; - - @Size(max = 32, message = "模型平台最大32个字符") - @Schema(description = "模型平台 参考 AiPlatformEnum") - @NotNull(message = "平台不能为空!") - private String platform; - - @Schema(description = "排序") - @NotNull(message = "sort排序不能为空!") - private Integer sort; - - // ========== 会话配置 ========== - - @Schema(description = "温度参数") - private Integer temperature; - - @Schema(description = "单条回复的最大 Token 数量") - private Integer maxTokens; - - @Schema(description = "上下文的最大 Message 数量") - private Integer maxContexts; -} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalListReqVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalListReqVO.java deleted file mode 100644 index a589db4..0000000 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalListReqVO.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.iocoder.yudao.module.ai.controller.admin.model.vo.model; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.experimental.Accessors; - -/** - * modal list - * - * @author fansili - * @time 2024/4/24 19:56 - * @since 1.0 - */ -@Data -@Accessors(chain = true) -public class AiChatModalListReqVO extends PageParam { - - @Schema(description = "名字搜搜") - private String search; - -} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalListRespVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalListRespVO.java deleted file mode 100644 index 2249a2c..0000000 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModalListRespVO.java +++ /dev/null @@ -1,41 +0,0 @@ -package cn.iocoder.yudao.module.ai.controller.admin.model.vo.model; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.experimental.Accessors; - -/** - * modal list - * - * @author fansili - * @time 2024/4/24 19:56 - * @since 1.0 - */ -@Data -@Accessors(chain = true) -public class AiChatModalListRespVO { - - @Schema(description = "id") - private Long id; - - @Schema(description = "模型平台 参考 AiPlatformEnum") - private String platform; - - @Schema(description = "模型类型 参考 YiYanChatModel、XingHuoChatModel") - private String modal; - - @Schema(description = "模型名字") - private String name; - - @Schema(description = "模型照片") - private String image; - - @Schema(description = "禁用 0、正常 1、禁用") - private Integer disable; - - @Schema(description = "排序 asc 排序") - private Integer sort; - - @Schema(description = "modal 配置") - private String config; -} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelAddReqVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelAddReqVO.java new file mode 100644 index 0000000..569760f --- /dev/null +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelAddReqVO.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.ai.controller.admin.model.vo.model; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * ai chat modal + * + * @author fansili + * @time 2024/4/24 19:47 + * @since 1.0 + */ +@Data +@Accessors(chain = true) +public class AiChatModelAddReqVO { + + @Schema(description = "API 秘钥编号") + @NotNull(message = "API 秘钥编号不能为空!") + private Long keyId; + + @Schema(description = "模型名字") + @Size(max = 60, message = "模型名字最大60个字符") + @NotNull(message = "模型名字不能为空!") + private String name; + + @Schema(description = "模型类型(qianwen、yiyan、xinghuo、openai)") + @Size(max = 32, message = "模型类型最大32个字符") + @NotNull(message = "model模型不能为空!") + private String model; + + @Size(max = 32, message = "模型平台最大32个字符") + @Schema(description = "模型平台 参考 AiPlatformEnum") + @NotNull(message = "平台不能为空!") + private String platform; + + @Schema(description = "排序") + @NotNull(message = "sort排序不能为空!") + private Integer sort; + + // ========== 会话配置 ========== + + @Schema(description = "温度参数") + private Integer temperature; + + @Schema(description = "单条回复的最大 Token 数量") + private Integer maxTokens; + + @Schema(description = "上下文的最大 Message 数量") + private Integer maxContexts; +} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelListReqVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelListReqVO.java new file mode 100644 index 0000000..7e3cfff --- /dev/null +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelListReqVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.ai.controller.admin.model.vo.model; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * modal list + * + * @author fansili + * @time 2024/4/24 19:56 + * @since 1.0 + */ +@Data +@Accessors(chain = true) +public class AiChatModelListReqVO extends PageParam { + + @Schema(description = "名字搜搜") + private String search; + +} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelListRespVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelListRespVO.java new file mode 100644 index 0000000..8a2bc5b --- /dev/null +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/model/AiChatModelListRespVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.ai.controller.admin.model.vo.model; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * modal list + * + * @author fansili + * @time 2024/4/24 19:56 + * @since 1.0 + */ +@Data +@Accessors(chain = true) +public class AiChatModelListRespVO { + + @Schema(description = "id") + private Long id; + + @Schema(description = "模型平台 参考 AiPlatformEnum") + private String platform; + + @Schema(description = "模型类型 参考 YiYanChatModel、XingHuoChatModel") + private String modal; + + @Schema(description = "模型名字") + private String name; + + @Schema(description = "模型照片") + private String image; + + @Schema(description = "禁用 0、正常 1、禁用") + private Integer disable; + + @Schema(description = "排序 asc 排序") + private Integer sort; + + @Schema(description = "modal 配置") + private String config; +} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatModalConvert.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatModalConvert.java deleted file mode 100644 index a0604f1..0000000 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatModalConvert.java +++ /dev/null @@ -1,49 +0,0 @@ -package cn.iocoder.yudao.module.ai.convert; - -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalAddReqVO; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalListRespVO; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalRespVO; -import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModalDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 聊天 modal - * - * @author fansili - * @time 2024/4/18 16:39 - * @since 1.0 - */ -@Mapper -public interface AiChatModalConvert { - - AiChatModalConvert INSTANCE = Mappers.getMapper(AiChatModalConvert.class); - - /** - * 转换 - AiChatModalListRes - * - * @param list - * @return - */ - List convertAiChatModalListRes(List list); - - /** - * 转换 - AiChatModalDO - * - * @param req - * @return - */ - AiChatModalDO convertAiChatModalDO(AiChatModalAddReqVO req); - - - /** - * 转换 - AiChatModalRes - * - * @param aiChatModalDO - * @return - */ - AiChatModalRespVO convertAiChatModalRes(AiChatModalDO aiChatModalDO); - -} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatModelConvert.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatModelConvert.java new file mode 100644 index 0000000..666f7a2 --- /dev/null +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatModelConvert.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.ai.convert; + +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelAddReqVO; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelListRespVO; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalRespVO; +import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 聊天 modal + * + * @author fansili + * @time 2024/4/18 16:39 + * @since 1.0 + */ +@Mapper +public interface AiChatModelConvert { + + AiChatModelConvert INSTANCE = Mappers.getMapper(AiChatModelConvert.class); + + /** + * 转换 - AiChatModalListRes + * + * @param list + * @return + */ + List convertAiChatModalListRes(List list); + + /** + * 转换 - AiChatModalDO + * + * @param req + * @return + */ + AiChatModelDO convertAiChatModalDO(AiChatModelAddReqVO req); + + + /** + * 转换 - AiChatModalRes + * + * @param aiChatModalDO + * @return + */ + AiChatModalRespVO convertAiChatModalRes(AiChatModelDO aiChatModalDO); + +} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatModalDO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatModalDO.java deleted file mode 100644 index a35fa0e..0000000 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatModalDO.java +++ /dev/null @@ -1,81 +0,0 @@ -package cn.iocoder.yudao.module.ai.dal.dataobject.model; - -import cn.iocoder.yudao.framework.ai.AiPlatformEnum; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; -import lombok.experimental.Accessors; - -/** - * AI 聊天模型 DO - * - * @author fansili - * @since 2024/4/24 19:39 - */ -@TableName("ai_chat_model") -@KeySequence("ai_chat_model_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class AiChatModalDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * API 秘钥编号 - * - * 关联 {@link AiApiKeyDO#getId()} - */ - private Long keyId; - /** - * 模型名称 - */ - private String name; - /** - * 模型标志 - */ - private String model; - /** - * 平台 - * - * 枚举 {@link AiPlatformEnum} - */ - private String platform; - - /** - * 排序值 - */ - private Integer sort; - /** - * 状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - - // ========== 会话配置 ========== - - /** - * 温度参数 - * - * 用于调整生成回复的随机性和多样性程度:较低的温度值会使输出更收敛于高频词汇,较高的则增加多样性 - */ - private Double temperature; - /** - * 单条回复的最大 Token 数量 - */ - private Integer maxTokens; - /** - * 上下文的最大 Message 数量 - */ - private Integer maxContexts; - -} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatModelDO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatModelDO.java new file mode 100644 index 0000000..420de6f --- /dev/null +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatModelDO.java @@ -0,0 +1,80 @@ +package cn.iocoder.yudao.module.ai.dal.dataobject.model; + +import cn.iocoder.yudao.framework.ai.AiPlatformEnum; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * AI 聊天模型 DO + * + * @author fansili + * @since 2024/4/24 19:39 + */ +@TableName("ai_chat_model") +@KeySequence("ai_chat_model_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AiChatModelDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * API 秘钥编号 + * + * 关联 {@link AiApiKeyDO#getId()} + */ + private Long keyId; + /** + * 模型名称 + */ + private String name; + /** + * 模型标志 + */ + private String model; + /** + * 平台 + * + * 枚举 {@link AiPlatformEnum} + */ + private String platform; + + /** + * 排序值 + */ + private Integer sort; + /** + * 状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + + // ========== 会话配置 ========== + + /** + * 温度参数 + * + * 用于调整生成回复的随机性和多样性程度:较低的温度值会使输出更收敛于高频词汇,较高的则增加多样性 + */ + private Double temperature; + /** + * 单条回复的最大 Token 数量 + */ + private Integer maxTokens; + /** + * 上下文的最大 Message 数量 + */ + private Integer i; + +} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatModalMapper.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatModalMapper.java deleted file mode 100644 index d460710..0000000 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatModalMapper.java +++ /dev/null @@ -1,40 +0,0 @@ -package cn.iocoder.yudao.module.ai.dal.mysql; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModalDO; -import org.apache.ibatis.annotations.Mapper; -import org.springframework.stereotype.Repository; - -/** - * chat modal - * - * @author fansili - * @time 2024/4/24 19:41 - * @since 1.0 - */ -@Repository -@Mapper -public interface AiChatModalMapper extends BaseMapperX { - - /** - * 查询 - 第一个modal - * - * @return - */ - default AiChatModalDO selectFirstModal() { - PageResult pageResult = selectPage(new PageParam().setPageNo(1).setPageSize(1), - new LambdaQueryWrapperX() - .orderByAsc(AiChatModalDO::getSort) - ); - if (CollUtil.isEmpty(pageResult.getList())) { - return null; - } - return pageResult.getList().get(0); - } - - -} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatModelMapper.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatModelMapper.java new file mode 100644 index 0000000..46d66ff --- /dev/null +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatModelMapper.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.ai.dal.mysql; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +/** + * chat modal + * + * @author fansili + * @time 2024/4/24 19:41 + * @since 1.0 + */ +@Repository +@Mapper +public interface AiChatModelMapper extends BaseMapperX { + + /** + * 查询 - 第一个modal + * + * @return + */ + default AiChatModelDO selectFirstModal() { + PageResult pageResult = selectPage(new PageParam().setPageNo(1).setPageSize(1), + new LambdaQueryWrapperX() + .orderByAsc(AiChatModelDO::getSort) + ); + if (CollUtil.isEmpty(pageResult.getList())) { + return null; + } + return pageResult.getList().get(0); + } + + +} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatModalService.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatModalService.java deleted file mode 100644 index ba16b8e..0000000 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatModalService.java +++ /dev/null @@ -1,71 +0,0 @@ -package cn.iocoder.yudao.module.ai.service; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalAddReqVO; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalListReqVO; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalListRespVO; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalRespVO; -import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModalDO; - -/** - * ai modal - * - * @author fansili - * @time 2024/4/24 19:42 - * @since 1.0 - */ -public interface AiChatModalService { - - /** - * ai modal - 列表 - * - * @param req - * @return - */ - PageResult list(AiChatModalListReqVO req); - - /** - * ai modal - 添加 - * - * @param req - */ - void add(AiChatModalAddReqVO req); - - /** - * ai modal - 更新 - * - * @param id - * @param req - */ - void update(Long id, AiChatModalAddReqVO req); - - /** - * ai modal - 删除 - * - * @param id - */ - void delete(Long id); - - /** - * 获取 - 获取 modal - * - * @param modalId - * @return - */ - AiChatModalRespVO getChatModalOfValidate(Long modalId); - - /** - * 校验 - 是否存在 - * - * @param id - * @return - */ - AiChatModalDO validateExists(Long id); - - /** - * 校验 - 校验是否可用 - * - * @param chatModal - */ - void validateAvailable(AiChatModalRespVO chatModal); -} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatModelService.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatModelService.java new file mode 100644 index 0000000..b685d26 --- /dev/null +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatModelService.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.ai.service; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelAddReqVO; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelListReqVO; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelListRespVO; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalRespVO; +import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO; + +/** + * ai modal + * + * @author fansili + * @time 2024/4/24 19:42 + * @since 1.0 + */ +public interface AiChatModelService { + + /** + * ai modal - 列表 + * + * @param req + * @return + */ + PageResult list(AiChatModelListReqVO req); + + /** + * ai modal - 添加 + * + * @param req + */ + void add(AiChatModelAddReqVO req); + + /** + * ai modal - 更新 + * + * @param id + * @param req + */ + void update(Long id, AiChatModelAddReqVO req); + + /** + * ai modal - 删除 + * + * @param id + */ + void delete(Long id); + + /** + * 获取 - 获取 modal + * + * @param modalId + * @return + */ + AiChatModalRespVO getChatModalOfValidate(Long modalId); + + /** + * 校验 - 是否存在 + * + * @param id + * @return + */ + AiChatModelDO validateExists(Long id); + + /** + * 校验 - 校验是否可用 + * + * @param chatModal + */ + void validateAvailable(AiChatModalRespVO chatModal); +} diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/impl/AiChatModalServiceImpl.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/impl/AiChatModalServiceImpl.java index 2e1c375..7a40846 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/impl/AiChatModalServiceImpl.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/impl/AiChatModalServiceImpl.java @@ -8,15 +8,15 @@ import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.ai.ErrorCodeConstants; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalAddReqVO; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalListReqVO; -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalListRespVO; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelAddReqVO; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelListReqVO; +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModelListRespVO; import cn.iocoder.yudao.module.ai.controller.admin.model.vo.model.AiChatModalRespVO; -import cn.iocoder.yudao.module.ai.convert.AiChatModalConvert; -import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModalDO; -import cn.iocoder.yudao.module.ai.dal.mysql.AiChatModalMapper; +import cn.iocoder.yudao.module.ai.convert.AiChatModelConvert; +import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO; +import cn.iocoder.yudao.module.ai.dal.mysql.AiChatModelMapper; import cn.iocoder.yudao.module.ai.dal.vo.AiChatModalConfigVO; -import cn.iocoder.yudao.module.ai.service.AiChatModalService; +import cn.iocoder.yudao.module.ai.service.AiChatModelService; import jakarta.validation.ConstraintViolation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -35,51 +35,51 @@ import java.util.Set; @AllArgsConstructor @Service @Slf4j -public class AiChatModalServiceImpl implements AiChatModalService { +public class AiChatModalServiceImpl implements AiChatModelService { - private final AiChatModalMapper aiChatModalMapper; + private final AiChatModelMapper aiChatModelMapper; @Override - public PageResult list(AiChatModalListReqVO req) { - LambdaQueryWrapperX queryWrapperX = new LambdaQueryWrapperX<>(); + public PageResult list(AiChatModelListReqVO req) { + LambdaQueryWrapperX queryWrapperX = new LambdaQueryWrapperX<>(); // 查询的都是未禁用的模型 - queryWrapperX.eq(AiChatModalDO::getStatus, CommonStatusEnum.ENABLE.getStatus()); + queryWrapperX.eq(AiChatModelDO::getStatus, CommonStatusEnum.ENABLE.getStatus()); // search if (!StrUtil.isBlank(req.getSearch())) { - queryWrapperX.like(AiChatModalDO::getName, req.getSearch().trim()); + queryWrapperX.like(AiChatModelDO::getName, req.getSearch().trim()); } // 默认排序 - queryWrapperX.orderByAsc(AiChatModalDO::getSort); + queryWrapperX.orderByAsc(AiChatModelDO::getSort); // 查询 - PageResult aiChatModalDOPageResult = aiChatModalMapper.selectPage(req, queryWrapperX); + PageResult aiChatModalDOPageResult = aiChatModelMapper.selectPage(req, queryWrapperX); // 转换 res - List resList = AiChatModalConvert.INSTANCE.convertAiChatModalListRes(aiChatModalDOPageResult.getList()); + List resList = AiChatModelConvert.INSTANCE.convertAiChatModalListRes(aiChatModalDOPageResult.getList()); return new PageResult<>(resList, aiChatModalDOPageResult.getTotal()); } @Override - public void add(AiChatModalAddReqVO req) { + public void add(AiChatModelAddReqVO req) { // 校验 platform、type validatePlatform(req.getPlatform()); // 转换 do - AiChatModalDO insertChatModalDO = AiChatModalConvert.INSTANCE.convertAiChatModalDO(req); + AiChatModelDO insertChatModalDO = AiChatModelConvert.INSTANCE.convertAiChatModalDO(req); // 设置默认属性 insertChatModalDO.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 保存数据库 - aiChatModalMapper.insert(insertChatModalDO); + aiChatModelMapper.insert(insertChatModalDO); } @Override - public void update(Long id, AiChatModalAddReqVO req) { + public void update(Long id, AiChatModelAddReqVO req) { // 校验 platform validatePlatform(req.getPlatform()); // 校验模型是否存在 validateExists(id); // 转换 updateChatModalDO - AiChatModalDO updateChatModalDO = AiChatModalConvert.INSTANCE.convertAiChatModalDO(req); + AiChatModelDO updateChatModalDO = AiChatModelConvert.INSTANCE.convertAiChatModalDO(req); updateChatModalDO.setId(id); // 更新数据库 - aiChatModalMapper.updateById(updateChatModalDO); + aiChatModelMapper.updateById(updateChatModalDO); } @Override @@ -87,14 +87,14 @@ public class AiChatModalServiceImpl implements AiChatModalService { // 检查 modal 是否存在 validateExists(id); // 删除 delete - aiChatModalMapper.deleteById(id); + aiChatModelMapper.deleteById(id); } @Override public AiChatModalRespVO getChatModalOfValidate(Long modalId) { // 检查 modal 是否存在 - AiChatModalDO aiChatModalDO = validateExists(modalId); - return AiChatModalConvert.INSTANCE.convertAiChatModalRes(aiChatModalDO); + AiChatModelDO aiChatModalDO = validateExists(modalId); + return AiChatModelConvert.INSTANCE.convertAiChatModalRes(aiChatModalDO); } @Override @@ -105,8 +105,8 @@ public class AiChatModalServiceImpl implements AiChatModalService { } } - public AiChatModalDO validateExists(Long id) { - AiChatModalDO aiChatModalDO = aiChatModalMapper.selectById(id); + public AiChatModelDO validateExists(Long id) { + AiChatModelDO aiChatModalDO = aiChatModelMapper.selectById(id); if (aiChatModalDO == null) { throw ServiceExceptionUtil.exception(ErrorCodeConstants.AI_MODAL_NOT_EXIST); } -- libgit2 0.21.4