This commit is contained in:
ire 2025-01-13 16:50:28 +08:00
parent 9839839037
commit a317f09939
2 changed files with 74 additions and 56 deletions

View File

@ -1,15 +1,19 @@
package cn.iocoder.yudao.module.llm.service.conversation;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.module.llm.controller.admin.application.vo.ApplicationRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.datarefluxdata.vo.DataRefluxDataSaveReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesRespVO;
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.modelservice.ModelServiceMapper;
import cn.iocoder.yudao.module.llm.service.application.ApplicationService;
import cn.iocoder.yudao.module.llm.service.basemodel.BaseModelService;
import cn.iocoder.yudao.module.llm.service.datarefluxdata.DataRefluxDataService;
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 cn.iocoder.yudao.module.llm.service.prompttemplates.PromptTemplatesService;
import com.alibaba.excel.util.StringUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
@ -53,6 +57,10 @@ public class ConversationServiceImpl implements ConversationService {
private DataRefluxDataService dataRefluxDataService;
@Resource
private ModelServiceMapper modelServiceMapper;
@Resource
private ApplicationService applicationService;
@Resource
private PromptTemplatesService promptTemplatesService;
// 聊天会话历史记录缓存Key
private final static String CHAT_HIStORY_REDIS_KEY = "llm:chat:history";
@ -103,6 +111,16 @@ public class ConversationServiceImpl implements ConversationService {
@Override
public ChatRespVO chat(ChatReqVO chatReqVO) {
if(chatReqVO.getSystemPrompt() == null || chatReqVO.getSystemPrompt().equals("")){
if(chatReqVO.getApplicationId() != null){
ApplicationRespVO application = applicationService.getApplication(chatReqVO.getApplicationId());
Long promptId = application.getPromptId();
PromptTemplatesRespVO promptTemplates = promptTemplatesService.getPromptTemplates(promptId);
if(chatReqVO != null){
chatReqVO.setSystemPrompt(promptTemplates.getTemplateText());
}
}
}
if (Objects.equals(1, chatReqVO.getModelType())){
return publicModelChat(chatReqVO);
}else {

View File

@ -71,24 +71,24 @@ public class PromptTemplatesServiceImpl implements PromptTemplatesService {
PromptTemplatesDO promptTemplates = BeanUtils.toBean(createReqVO, PromptTemplatesDO.class);
// 暂时先去掉这个逻辑演示用 -- zhangtao
// promptTemplates.setTemplateType(2);
String categoryName = this.dictDataApi.getDictDataLabel("llm_prompt_template_framework",Integer.valueOf(createReqVO
.getTemplateFramework()));
switch (categoryName) {
case "简介框架":
BriefFramework briefFramework = createReqVO.getBriefFramework();
promptTemplates.setTemplateText(JSON.toJSONString(briefFramework));
break;
case "角色能力框架":
AbilityFramework abilityFramework = createReqVO.getAbilityFramework();
promptTemplates.setTemplateText(JSON.toJSONString(abilityFramework));
break;
case "样例提示框架":
SampleFramework sampleFramework = createReqVO.getSampleFramework();
promptTemplates.setTemplateText(JSON.toJSONString(sampleFramework));
break;
default:
break;
}
// String categoryName = this.dictDataApi.getDictDataLabel("llm_prompt_template_framework",Integer.valueOf(createReqVO
// .getTemplateFramework()));
// switch (categoryName) {
// case "简介框架":
// BriefFramework briefFramework = createReqVO.getBriefFramework();
// promptTemplates.setTemplateText(JSON.toJSONString(briefFramework));
// break;
// case "角色能力框架":
// AbilityFramework abilityFramework = createReqVO.getAbilityFramework();
// promptTemplates.setTemplateText(JSON.toJSONString(abilityFramework));
// break;
// case "样例提示框架":
// SampleFramework sampleFramework = createReqVO.getSampleFramework();
// promptTemplates.setTemplateText(JSON.toJSONString(sampleFramework));
// break;
// default:
// break;
// }
promptTemplatesMapper.insert(promptTemplates);
List<String> tagIds = createReqVO.getTagIds();
if(tagIds!=null && !tagIds.isEmpty()) {
@ -123,24 +123,24 @@ public class PromptTemplatesServiceImpl implements PromptTemplatesService {
this.isNameDuplicate(updateReqVO.getName());
}
PromptTemplatesDO updateObj = BeanUtils.toBean(updateReqVO, PromptTemplatesDO.class);
String categoryName = this.dictDataApi.getDictDataLabel("llm_prompt_template_framework",Integer.valueOf(updateReqVO
.getTemplateFramework()));
switch (categoryName) {
case "简介框架":
BriefFramework briefFramework = updateReqVO.getBriefFramework();
updateObj.setTemplateText(JSON.toJSONString(briefFramework));
break;
case "角色能力框架":
AbilityFramework abilityFramework = updateReqVO.getAbilityFramework();
updateObj.setTemplateText(JSON.toJSONString(abilityFramework));
break;
case "样例提示框架":
SampleFramework sampleFramework = updateReqVO.getSampleFramework();
updateObj.setTemplateText(JSON.toJSONString(sampleFramework));
break;
default:
break;
}
// String categoryName = this.dictDataApi.getDictDataLabel("llm_prompt_template_framework",Integer.valueOf(updateReqVO
// .getTemplateFramework()));
// switch (categoryName) {
// case "简介框架":
// BriefFramework briefFramework = updateReqVO.getBriefFramework();
// updateObj.setTemplateText(JSON.toJSONString(briefFramework));
// break;
// case "角色能力框架":
// AbilityFramework abilityFramework = updateReqVO.getAbilityFramework();
// updateObj.setTemplateText(JSON.toJSONString(abilityFramework));
// break;
// case "样例提示框架":
// SampleFramework sampleFramework = updateReqVO.getSampleFramework();
// updateObj.setTemplateText(JSON.toJSONString(sampleFramework));
// break;
// default:
// break;
// }
promptTemplatesMapper.updateById(updateObj);
Map<String, Object> deleteCondition = new HashMap<>(1);
deleteCondition.put("prompt_template_id", updateReqVO.getId());
@ -214,26 +214,26 @@ public class PromptTemplatesServiceImpl implements PromptTemplatesService {
.collect(Collectors.toList());
promptTemplates.setApplicationIds(applicationIds);
}
String categoryName = this.dictDataApi.getDictDataLabel("llm_prompt_template_framework",Integer.valueOf(templatesDO.getTemplateFramework()));
switch (categoryName) {
case "简介框架":
promptTemplates.setBriefFramework(JSON.parseObject(promptTemplates
.getTemplateText(), BriefFramework.class));
promptTemplates.setTemplateText("");
break;
case "角色能力框架":
promptTemplates.setAbilityFramework(JSON.parseObject(promptTemplates
.getTemplateText(), AbilityFramework.class));
promptTemplates.setTemplateText("");
break;
case "样例提示框架":
promptTemplates.setSampleFramework(JSON.parseObject(promptTemplates
.getTemplateText(), SampleFramework.class));
promptTemplates.setTemplateText("");
break;
default:
break;
}
// String categoryName = this.dictDataApi.getDictDataLabel("llm_prompt_template_framework",Integer.valueOf(templatesDO.getTemplateFramework()));
// switch (categoryName) {
// case "简介框架":
// promptTemplates.setBriefFramework(JSON.parseObject(promptTemplates
// .getTemplateText(), BriefFramework.class));
// promptTemplates.setTemplateText("");
// break;
// case "角色能力框架":
// promptTemplates.setAbilityFramework(JSON.parseObject(promptTemplates
// .getTemplateText(), AbilityFramework.class));
// promptTemplates.setTemplateText("");
// break;
// case "样例提示框架":
// promptTemplates.setSampleFramework(JSON.parseObject(promptTemplates
// .getTemplateText(), SampleFramework.class));
// promptTemplates.setTemplateText("");
// break;
// default:
// break;
// }
return promptTemplates;
}