From dd79478ca31f01f76bfbab38b7a21890ff7a0be1 Mon Sep 17 00:00:00 2001 From: liu Date: Mon, 15 Apr 2024 17:11:52 +0800 Subject: [PATCH] =?UTF-8?q?KBQA=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/supervision/dto/roundAsk/SessionParamDTO.java | 2 +- .../java/com/supervision/service/impl/AskServiceImpl.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) 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(); }