Commit 9ac602f7 authored by alex yao's avatar alex yao

feat: 输入联想优化

parent 6c4e6a66
package cn.com.poc.ai_dialogues.aggregate.impl;
import cn.com.poc.agent_application.entity.BizAgentApplicationGcConfigEntity;
import cn.com.poc.agent_application.query.AgentApplicationDialoguesRecordQueryItem;
import cn.com.poc.agent_application.service.BizAgentApplicationDialoguesRecordService;
import cn.com.poc.agent_application.service.BizAgentApplicationGcConfigService;
import cn.com.poc.ai_dialogues.aggregate.AiDialoguesService;
import cn.com.poc.ai_dialogues.constant.AiDialoguesTypeEnum;
import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto;
import cn.com.poc.ai_dialogues.entity.BizAiDialoguesEntity;
import cn.com.poc.ai_dialogues.entity.BizAiDialoguesGuessYouAskEntity;
import cn.com.poc.ai_dialogues.entity.BizAiDialoguesProblemAssociationEntity;
import cn.com.poc.ai_dialogues.query.AiDialoguesQueryCondition;
import cn.com.poc.ai_dialogues.query.AiDialoguesQueryItem;
import cn.com.poc.ai_dialogues.query.ProblemAssociationQueryItem;
import cn.com.poc.ai_dialogues.service.BizAiDialoguesGuessYouAskService;
import cn.com.poc.ai_dialogues.service.BizAiDialoguesProblemAssociationService;
import cn.com.poc.ai_dialogues.service.BizAiDialoguesService;
......@@ -18,8 +20,14 @@ import cn.com.poc.common.service.BizFileUploadRecordService;
import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.common.utils.StringUtils;
import cn.com.poc.expose.dto.DialoguesContextDto;
import cn.com.poc.thirdparty.resource.demand.ai.constants.LLMRoleEnum;
import cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Message;
import cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.ToolFunction;
import cn.com.poc.thirdparty.resource.demand.ai.entity.largemodel.LargeModelDemandResult;
import cn.com.poc.thirdparty.resource.demand.ai.entity.largemodel.LargeModelResponse;
import cn.com.poc.thirdparty.service.LLMService;
import cn.com.yict.framemax.core.exception.BusinessException;
import com.fasterxml.jackson.core.type.TypeReference;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -56,6 +64,12 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
@Resource
private BizAiDialoguesProblemAssociationService bizAiDialoguesProblemAssociationService;
@Resource
private LLMService llmService;
@Resource
private BizAgentApplicationGcConfigService bizAgentApplicationGcConfigService;
@Override
public String create(AiDialoguesTypeEnum type, Long userId) throws Exception {
return bizAiDialoguesService.create(type.getType(), userId);
......@@ -168,16 +182,52 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
@Override
public List<String> questionAssociation(String dialogueId, String question) {
if (StringUtils.isBlank(question)) {
logger.warn("question is blank");
return Collections.emptyList();
}
List<ProblemAssociationQueryItem> problemAssociationList = bizAiDialoguesProblemAssociationService.getProblemAssociationList(question);
if (CollectionUtils.isNotEmpty(problemAssociationList)) {
return problemAssociationList.stream().map(ProblemAssociationQueryItem::getQuestion).collect(Collectors.toList());
List<String> res = new ArrayList<>();
try {
if (StringUtils.isBlank(question)) {
logger.warn("question is blank");
return Collections.emptyList();
}
String GC_CONFIG_CODE = "QuestionAssociation";
BizAgentApplicationGcConfigEntity gcConfigEntity = bizAgentApplicationGcConfigService.getByConfigCode(GC_CONFIG_CODE);
if (gcConfigEntity == null) {
logger.error("获取配置失败");
return Collections.emptyList();
}
Message systemMessage = new Message();
systemMessage.setContent(gcConfigEntity.getConfigSystem());
systemMessage.setRole(LLMRoleEnum.SYSTEM.getRole());
systemMessage.setName("QUESTION_ASSOCIATION_GENERATE");
Message userMessage = new Message();
userMessage.setContent(question);
userMessage.setRole(LLMRoleEnum.USER.getRole());
LargeModelResponse largeModelResponse = new LargeModelResponse();
largeModelResponse.setModel(gcConfigEntity.getLargeModel());
largeModelResponse.setMessages(new Message[]{systemMessage, userMessage});
largeModelResponse.setStream(false);
LargeModelDemandResult largeModelDemandResult = llmService.chat(largeModelResponse);
if (largeModelDemandResult == null || StringUtils.isBlank(largeModelDemandResult.getMessage())) {
logger.error("大模型响应错误");
return Collections.emptyList();
}
String message = largeModelDemandResult.getMessage();
int start = message.indexOf("[");
int end = message.indexOf("]");
String sub = message.substring(start, end + 1);
res = JsonUtils.deSerialize(sub, new TypeReference<List<String>>() {
}.getType());
return res;
} finally {
if (CollectionUtils.isNotEmpty(res)) {
for (String que : res) {
BizAiDialoguesProblemAssociationEntity bizAiDialoguesProblemAssociationEntity = new BizAiDialoguesProblemAssociationEntity();
bizAiDialoguesProblemAssociationEntity.setQuestion(que);
bizAiDialoguesProblemAssociationService.save(bizAiDialoguesProblemAssociationEntity);
}
}
}
return Collections.emptyList();
}
@Override
......
......@@ -14,7 +14,7 @@ public interface BizAiDialoguesProblemAssociationService extends BaseService {
List<BizAiDialoguesProblemAssociationEntity> findByExample(BizAiDialoguesProblemAssociationEntity example, PagingInfo pagingInfo) throws Exception;
BizAiDialoguesProblemAssociationEntity save(BizAiDialoguesProblemAssociationEntity entity) throws Exception;
BizAiDialoguesProblemAssociationEntity save(BizAiDialoguesProblemAssociationEntity entity) ;
BizAiDialoguesProblemAssociationEntity update(BizAiDialoguesProblemAssociationEntity entity) throws Exception;
......
......@@ -50,7 +50,7 @@ public class BizAiDialoguesProblemAssociationServiceImpl extends BaseServiceImpl
return result;
}
public BizAiDialoguesProblemAssociationEntity save(BizAiDialoguesProblemAssociationEntity entity) throws Exception {
public BizAiDialoguesProblemAssociationEntity save(BizAiDialoguesProblemAssociationEntity entity) {
Assert.notNull(entity);
entity.setId(null);
BizAiDialoguesProblemAssociationModel model = BizAiDialoguesProblemAssociationConvert.entityToModel(entity);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment