From f05f5408658266d3eb349eab76f605aaa9a38f89 Mon Sep 17 00:00:00 2001 From: xiaoxin <718949661@qq.com> Date: Wed, 3 Jul 2024 11:17:16 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=A2=9E=E5=8A=A0=E3=80=91AI=20?= =?UTF-8?q?=E5=86=99=E4=BD=9C=EF=BC=9A=E6=94=AF=E6=8C=81=E5=9B=9E=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/ai/enums/write/AiWriteTypeEnum.java | 4 ++-- .../admin/write/vo/AiWriteGenerateReqVO.java | 3 --- .../ai/dal/dataobject/write/AiWriteDO.java | 14 ++------------ .../ai/service/write/AiWriteServiceImpl.java | 17 ++++++++++++++--- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/write/AiWriteTypeEnum.java b/yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/write/AiWriteTypeEnum.java index 05db29dda..3a62e1626 100644 --- a/yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/write/AiWriteTypeEnum.java +++ b/yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/write/AiWriteTypeEnum.java @@ -15,8 +15,8 @@ import java.util.Arrays; @Getter public enum AiWriteTypeEnum implements IntArrayValuable { - DESCRIPTION(1, "撰写"), - LYRIC(2, "回复"); + WRITING(1, "撰写"), + REPLY(2, "回复"); /** * 类型 diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/write/vo/AiWriteGenerateReqVO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/write/vo/AiWriteGenerateReqVO.java index 88bcf0568..b7f83c077 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/write/vo/AiWriteGenerateReqVO.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/write/vo/AiWriteGenerateReqVO.java @@ -14,9 +14,6 @@ public class AiWriteGenerateReqVO { @Schema(description = "原文", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "领导我要辞职") private String originalContent; - @Schema(description = "回复内容", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "准了") - private String replyContentPrompt; - @Schema(description = "长度", requiredMode = Schema.RequiredMode.REQUIRED, example = "中等") @NotBlank(message = "长度不能为空") private String length; diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/write/AiWriteDO.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/write/AiWriteDO.java index a569f1096..915d56dfd 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/write/AiWriteDO.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/write/AiWriteDO.java @@ -35,12 +35,12 @@ public class AiWriteDO extends BaseDO { private Integer writeType; /** - * 撰写内容提示 + * 生成内容提示 */ private String contentPrompt; /** - * 生成的撰写内容 + * 生成的内容 */ private String generatedContent; @@ -49,16 +49,6 @@ public class AiWriteDO extends BaseDO { */ private String originalContent; - /** - * 回复内容提示 - */ - private String replyContentPrompt; - - /** - * 生成的回复内容 - */ - private String generatedReplyContent; - /** * 长度提示词 */ diff --git a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/write/AiWriteServiceImpl.java b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/write/AiWriteServiceImpl.java index 3cc185884..cdd6e6ef5 100644 --- a/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/write/AiWriteServiceImpl.java +++ b/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/write/AiWriteServiceImpl.java @@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO; import cn.iocoder.yudao.module.ai.dal.dataobject.write.AiWriteDO; import cn.iocoder.yudao.module.ai.dal.mysql.write.AiWriteMapper; import cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants; +import cn.iocoder.yudao.module.ai.enums.write.AiWriteTypeEnum; import cn.iocoder.yudao.module.ai.service.model.AiApiKeyService; import cn.iocoder.yudao.module.ai.service.model.AiChatModelService; import com.alibaba.cloud.ai.tongyi.chat.TongYiChatOptions; @@ -26,6 +27,8 @@ import org.springframework.ai.qianfan.QianFanChatOptions; import org.springframework.stereotype.Service; import reactor.core.publisher.Flux; +import java.util.Objects; + import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -80,13 +83,21 @@ public class AiWriteServiceImpl implements AiWriteService { private String buildWritingPrompt(AiWriteGenerateReqVO generateReqVO) { - String template = "请直接写一篇关于 [{}] 的文章,格式为:{},语气为:{},语言为:{},长度为:{}。请确保涵盖主要内容,不需要除了正文内容外的其他回复,如标题、额外的解释或道歉。"; - String content = generateReqVO.getContentPrompt(); + String template; + Integer writeType = generateReqVO.getWriteType(); String format = generateReqVO.getFormat(); String tone = generateReqVO.getTone(); String language = generateReqVO.getLanguage(); String length = generateReqVO.getLength(); - return StrUtil.format(template, content, format, tone, language, length); + if (Objects.equals(writeType, AiWriteTypeEnum.WRITING.getType())) { + template = "请撰写一篇关于 [{}] 的文章。文章的内容格式为:[{}],语气为:[{}],语言为:[{}],长度为:[{}]。请确保涵盖主要内容,不需要除了正文内容外的其他回复,如标题、额外的解释或道歉。"; + return StrUtil.format(template, generateReqVO.getContentPrompt(), format, tone, language, length); + } else if (Objects.equals(writeType, AiWriteTypeEnum.REPLY.getType())) { + template = "请针对如下内容:[{}] 做个回复。回复内容参考:[{}], 回复的内容格式为:[{}],语气为:[{}],语言为:[{}],长度为:[{}]。不需要除了正文内容外的其他回复,如标题、额外的解释或道歉。"; + return StrUtil.format(template, generateReqVO.getOriginalContent(), generateReqVO.getContentPrompt(), format, tone, language, length); + } else { + throw new IllegalArgumentException(StrUtil.format("未知写作类型({})", writeType)); + } } // TODO 芋艿:复用