diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationServiceImpl.java index d26bb923b..804490bc8 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationServiceImpl.java @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -69,6 +70,7 @@ public class ApplicationServiceImpl implements ApplicationService { @Override public Long createApplication (ApplicationSaveReqVO createReqVO) { + // 获取名称并且校验是否重复 String appName = createReqVO.getAppName(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapperX<>(); queryWrapper.eq(ApplicationDO::getAppName, appName); @@ -76,13 +78,16 @@ public class ApplicationServiceImpl implements ApplicationService { if (applicationDOS.size() > 0) { throw exception(APPLICATION_NAME_NOT_EXISTS); } + // 插入 ApplicationDO application = BeanUtils.toBean(createReqVO, ApplicationDO.class); String apikey = getApikey(); application.setApiKey(apikey); String replace = llmBackendProperties.getApplicationApi().replace("apiKey", apikey); application.setApiUrl(replace); - application.setPrompt(createReqVO.getSystemPrompt()); + if (!StringUtils.isBlank(createReqVO.getSystemPrompt())){ + application.setPrompt(createReqVO.getSystemPrompt()); + } applicationMapper.insert(application); //prompt使用量+1 @@ -122,7 +127,9 @@ public class ApplicationServiceImpl implements ApplicationService { validateApplicationExists(updateReqVO.getId()); // 更新 ApplicationDO updateObj = BeanUtils.toBean(updateReqVO, ApplicationDO.class); - updateObj.setPrompt(updateReqVO.getSystemPrompt()); + if (!StringUtils.isBlank(updateReqVO.getSystemPrompt())){ + updateObj.setPrompt(updateReqVO.getSystemPrompt()); + } applicationMapper.updateById(updateObj); } @@ -215,7 +222,18 @@ public class ApplicationServiceImpl implements ApplicationService { } } - bean.setSystemPrompt(applicationDO.getPrompt()); + if (applicationDO.getPrompt() != null) { + bean.setSystemPrompt(applicationDO.getPrompt()); + bean.setPrompt(applicationDO.getPrompt()); + } + + if (applicationDO.getModelServiceId() != null) { + bean.setModelServiceId(applicationDO.getModelServiceId()); + } + + if (applicationDO.getPromptId() != null) { + bean.setPromptId(applicationDO.getPromptId()); + } return bean; } 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 e08c9e053..435a16c7d 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 @@ -98,6 +98,7 @@ public class ConversationServiceImpl implements ConversationService { */ private final static String KNOWLEDGE_DOCUMENTS_REDIS_KEY = "llm:knowledge:documents"; private final static Long KNOWLEDGE_DOCUMENTS_REDIS_EXPIRE_SECONDS = 60 * 60 * 24L; + public static final String PROMPT = "Use the following context as your learned knowledge, inside XML tags.When answer to user:\\n- If you don't know, just say that you don't know.\\n- If you don't know when you are not sure, ask for clarification.\\nAvoid mentioning that you obtained the information from the context.\\nAnd answer according to the language of the user's question.\\n\\n"; @Override public Integer createConversation (ConversationSaveReqVO createReqVO) { @@ -313,7 +314,21 @@ public class ConversationServiceImpl implements ConversationService { ApplicationSaveReqVO applicationSaveReqVO = BeanUtil.toBean(application, ApplicationSaveReqVO.class); applicationService.updateApplication(applicationSaveReqVO); } - chatReqVO.setSystemPrompt(application.getPrompt()); + + + // 知识库ID + if (application.getModelServiceId()!= null){ + chatReqVO.setKnowledge(application.getModelServiceId()); + } + + if (!org.apache.commons.lang3.StringUtils.isBlank(application.getPrompt())){ + chatReqVO.setSystemPrompt(application.getPrompt()); + if (chatReqVO.getSystemPrompt() == null || chatReqVO.getSystemPrompt().isEmpty()) { + log.info("应用中未找到系统提示信息,使用默认提示信息"); + chatReqVO.setSystemPrompt(PROMPT); + } + } + log.info("已更新系统提示信息为: {}", chatReqVO.getSystemPrompt()); } } @@ -372,7 +387,6 @@ public class ConversationServiceImpl implements ConversationService { && Objects.equals(expectedGroupId, actualGroupId); } - public static final String PROMPT = "Use the following context as your learned knowledge, inside XML tags.When answer to user:\\n- If you don't know, just say that you don't know.\\n- If you don't know when you are not sure, ask for clarification.\\nAvoid mentioning that you obtained the information from the context.\\nAnd answer according to the language of the user's question.\\n\\n"; /** * 公共模型聊天流式处理方法