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 f8c5eeb80..1c803f206 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 @@ -104,5 +104,6 @@ public interface ErrorCodeConstants { ErrorCode MODEL_SERVIC_ENAME_NOT_EXISTS = new ErrorCode(10043, "模型名称已存在"); + ErrorCode OPTIMIZE_PROMPT_NOT_EXISTS = new ErrorCode(10044, "优化后信息不存在"); } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/prompttemplates/vo/OptimizePromptReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/prompttemplates/vo/OptimizePromptReqVO.java index 98c87317e..b84de8f13 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/prompttemplates/vo/OptimizePromptReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/prompttemplates/vo/OptimizePromptReqVO.java @@ -3,8 +3,12 @@ package cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import javax.validation.constraints.NotEmpty; + @Schema(description = "管理后台 - Prompt优化 Request VO") @Data public class OptimizePromptReqVO { + @Schema(description = "对话的内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "对话的内容不能为空") private String prompt; -} \ 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/prompttemplates/PromptTemplatesService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/prompttemplates/PromptTemplatesService.java index f7b430533..69745d971 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/prompttemplates/PromptTemplatesService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/prompttemplates/PromptTemplatesService.java @@ -1,31 +1,41 @@ package cn.iocoder.yudao.module.llm.service.prompttemplates; -import javax.servlet.http.HttpServletResponse; -import javax.validation.*; -import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.OptimizePromptReqVO; +import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesPageReqVO; +import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesRespVO; +import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesSaveReqVO; import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplates.PromptTemplatesDO; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + public interface PromptTemplatesService { - Long createPromptTemplates(@Valid PromptTemplatesSaveReqVO createReqVO); + Long createPromptTemplates (@Valid PromptTemplatesSaveReqVO createReqVO); - void updatePromptTemplates(@Valid PromptTemplatesSaveReqVO updateReqVO); + void updatePromptTemplates (@Valid PromptTemplatesSaveReqVO updateReqVO); - void deletePromptTemplates(Long id); + void deletePromptTemplates (Long id); - PromptTemplatesRespVO getPromptTemplates(Long id); + PromptTemplatesRespVO getPromptTemplates (Long id); - PageResult getPromptTemplatesPage(PromptTemplatesPageReqVO pageReqVO); + PageResult getPromptTemplatesPage (PromptTemplatesPageReqVO pageReqVO); - void exportPromptTemplatesExcel(PromptTemplatesPageReqVO pageReqVO, - HttpServletResponse response) throws Exception; + void exportPromptTemplatesExcel (PromptTemplatesPageReqVO pageReqVO, + HttpServletResponse response) throws Exception; - void backupPromptTemplates(@Valid PromptTemplatesSaveReqVO updateReqVO); + void backupPromptTemplates (@Valid PromptTemplatesSaveReqVO updateReqVO); - void unbackupPromptTemplates(PromptTemplatesSaveReqVO updateReqVO); + void unbackupPromptTemplates (PromptTemplatesSaveReqVO updateReqVO); - void updatePromptTemplatesById(@Valid PromptTemplatesDO promptTemplatesDO); + void updatePromptTemplatesById (@Valid PromptTemplatesDO promptTemplatesDO); - String optimizePrompt(OptimizePromptReqVO reqVO); + /** + * Prompt优化 + * + * @param reqVO reqVO + * @return 优化后的内容 + */ + String optimizePrompt (@Valid OptimizePromptReqVO reqVO); } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/prompttemplates/PromptTemplatesServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/prompttemplates/PromptTemplatesServiceImpl.java index d89ae78ef..c979de2ac 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/prompttemplates/PromptTemplatesServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/prompttemplates/PromptTemplatesServiceImpl.java @@ -17,7 +17,10 @@ import cn.iocoder.yudao.module.llm.service.label.LabelService; import cn.iocoder.yudao.module.llm.service.prompttemplatesbackup.PromptTemplatesBackupService; import cn.iocoder.yudao.module.system.api.dict.DictDataApi; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -39,6 +42,7 @@ import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplates.PromptTemplatesMapp import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*; +@Slf4j @Service @Validated public class PromptTemplatesServiceImpl implements PromptTemplatesService { @@ -366,8 +370,34 @@ public class PromptTemplatesServiceImpl implements PromptTemplatesService { promptTemplatesMapper.updateById(promptTemplatesDO); } + /** + * Prompt优化 + * + * @param reqVO reqVO + * @return 优化后的内容 + */ @Override public String optimizePrompt(OptimizePromptReqVO reqVO) { - return HttpUtils.post(llmBackendProperties.getOptimizePrompt(), null, JSON.toJSONString(reqVO)); + String resultData = HttpUtils.post(llmBackendProperties.getOptimizePrompt(), null, JSON.toJSONString(reqVO)); + if (StringUtils.isBlank(resultData)) { + log.error("prompt优化失败:{}",OPTIMIZE_PROMPT_NOT_EXISTS.getMsg()); + throw exception(OPTIMIZE_PROMPT_NOT_EXISTS); + } + + JSONObject jsonData = JSONObject.parseObject(resultData); + JSONObject optimizedPrompt = jsonData.getJSONObject("optimized_prompt"); + + if (optimizedPrompt==null) { + log.error("prompt优化失败:{}",OPTIMIZE_PROMPT_NOT_EXISTS.getMsg()); + throw exception(OPTIMIZE_PROMPT_NOT_EXISTS); + } + + String content = optimizedPrompt.getString("content"); + if (StringUtils.isBlank(content)) { + log.error("prompt优化失败:{}",OPTIMIZE_PROMPT_NOT_EXISTS.getMsg()); + throw exception(OPTIMIZE_PROMPT_NOT_EXISTS); + } + + return content; } }