diff --git a/kbqa-graph/src/main/java/com/supervision/dto/roundAsk/SessionParamDTO.java b/kbqa-graph/src/main/java/com/supervision/dto/roundAsk/SessionParamDTO.java index c4650c5..eb7c811 100644 --- a/kbqa-graph/src/main/java/com/supervision/dto/roundAsk/SessionParamDTO.java +++ b/kbqa-graph/src/main/java/com/supervision/dto/roundAsk/SessionParamDTO.java @@ -59,7 +59,7 @@ public class SessionParamDTO { private Map entityCountMap; /** - * 多轮对话当前问用户的实体(在未确定当前问题的时候生效) + * 多轮对话当前问用户的实体(在未确定当前问题的时候生效,回答问题后,就应该删除了) */ private EntityQuestionDTO currentEntity; diff --git a/kbqa-graph/src/main/java/com/supervision/service/impl/AskServiceImpl.java b/kbqa-graph/src/main/java/com/supervision/service/impl/AskServiceImpl.java index 91fa288..c8c11d4 100644 --- a/kbqa-graph/src/main/java/com/supervision/service/impl/AskServiceImpl.java +++ b/kbqa-graph/src/main/java/com/supervision/service/impl/AskServiceImpl.java @@ -147,6 +147,7 @@ public class AskServiceImpl implements AskService { } // 判断待匹配的节点是不是只有一个了,如果有多个,就从路径中选择一个问题问前端 if (sessionParamDTO.getWaitMatchItemLeafMap().size() != 1) { + if (ObjectUtil.isNotEmpty(sessionParamDTO.getCurrentEntity())) { // 如果当前对话实体不为空,说明当前问答就是上一个问题的回复,这个时候,就去GPT中进行匹配并排除路径 filterPath(sessionParamDTO, roundTalkReqVO.getUserTalk()); @@ -202,6 +203,9 @@ public class AskServiceImpl implements AskService { if (StrUtil.isBlank(answer)) { return RoundTalkResVO.builder().sessionId(sessionParamDTO.getSessionId()).replyQuestion("暂时还不会回答这个问题哦").build(); } + // 清空问话实体 + sessionParamDTO.setCurrentEntity(null); + redisTemplate.opsForValue().set(SESSION_PARAM + sessionParamDTO.getSessionId(), sessionParamDTO); return RoundTalkResVO.builder().sessionId(sessionParamDTO.getSessionId()).replyQuestion(answer).build(); }