From 0a1f446fb8b34cd8448138d177b034dfd88ab406 Mon Sep 17 00:00:00 2001 From: lexluo09 <39718951+lexluo09@users.noreply.github.com> Date: Thu, 21 Dec 2023 22:10:48 +0800 Subject: [PATCH] (improvement)(chat) After a failed query, the absence of a returned queryId causes the recommendation question call to fail. (#562) --- .../repository/impl/ChatQueryRepositoryImpl.java | 13 +++++++------ .../chat/processor/parse/RespBuildProcessor.java | 4 ++-- .../chat/processor/parse/SqlInfoProcessor.java | 4 ++-- .../chat/service/impl/QueryServiceImpl.java | 10 +++++++++- .../src/main/resources/application-local.yaml | 2 +- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/impl/ChatQueryRepositoryImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/impl/ChatQueryRepositoryImpl.java index c653c388b..97b99dc49 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/impl/ChatQueryRepositoryImpl.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/repository/impl/ChatQueryRepositoryImpl.java @@ -45,8 +45,8 @@ public class ChatQueryRepositoryImpl implements ChatQueryRepository { private final ShowCaseCustomMapper showCaseCustomMapper; public ChatQueryRepositoryImpl(ChatQueryDOMapper chatQueryDOMapper, - ChatParseMapper chatParseMapper, - ShowCaseCustomMapper showCaseCustomMapper) { + ChatParseMapper chatParseMapper, + ShowCaseCustomMapper showCaseCustomMapper) { this.chatQueryDOMapper = chatQueryDOMapper; this.chatParseMapper = chatParseMapper; this.showCaseCustomMapper = showCaseCustomMapper; @@ -136,12 +136,13 @@ public class ChatQueryRepositoryImpl implements ChatQueryRepository { @Override public List batchSaveParseInfo(ChatContext chatCtx, QueryReq queryReq, - ParseResp parseResult, - List candidateParses) { + ParseResp parseResult, List candidateParses) { Long queryId = createChatQuery(parseResult, chatCtx, queryReq); List chatParseDOList = new ArrayList<>(); getChatParseDO(chatCtx, queryReq, queryId, candidateParses, chatParseDOList); - chatParseMapper.batchSaveParseInfo(chatParseDOList); + if (!CollectionUtils.isEmpty(candidateParses)) { + chatParseMapper.batchSaveParseInfo(chatParseDOList); + } return chatParseDOList; } @@ -153,7 +154,7 @@ public class ChatQueryRepositoryImpl implements ChatQueryRepository { } public void getChatParseDO(ChatContext chatCtx, QueryReq queryReq, Long queryId, - List parses, List chatParseDOList) { + List parses, List chatParseDOList) { for (int i = 0; i < parses.size(); i++) { ChatParseDO chatParseDO = new ChatParseDO(); chatParseDO.setChatId(Long.valueOf(chatCtx.getChatId())); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/processor/parse/RespBuildProcessor.java b/chat/core/src/main/java/com/tencent/supersonic/chat/processor/parse/RespBuildProcessor.java index 2a3b028ec..87269aa7e 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/processor/parse/RespBuildProcessor.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/processor/parse/RespBuildProcessor.java @@ -24,16 +24,16 @@ public class RespBuildProcessor implements ParseResultProcessor { parseResp.setChatId(queryReq.getChatId()); parseResp.setQueryText(queryReq.getQueryText()); List candidateQueries = queryContext.getCandidateQueries(); + ChatService chatService = ContextUtils.getBean(ChatService.class); if (candidateQueries.size() > 0) { List candidateParses = candidateQueries.stream() .map(SemanticQuery::getParseInfo).collect(Collectors.toList()); parseResp.setSelectedParses(candidateParses); parseResp.setState(ParseResp.ParseState.COMPLETED); - ChatService chatService = ContextUtils.getBean(ChatService.class); - chatService.batchAddParse(chatContext, queryReq, parseResp); } else { parseResp.setState(ParseResp.ParseState.FAILED); } + chatService.batchAddParse(chatContext, queryReq, parseResp); } } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/processor/parse/SqlInfoProcessor.java b/chat/core/src/main/java/com/tencent/supersonic/chat/processor/parse/SqlInfoProcessor.java index 2d4b28fbd..5769b9216 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/processor/parse/SqlInfoProcessor.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/processor/parse/SqlInfoProcessor.java @@ -60,8 +60,8 @@ public class SqlInfoProcessor implements ParseResultProcessor { } SqlInfo sqlInfo = parseInfo.getSqlInfo(); if (semanticQuery instanceof LLMSqlQuery) { - keyPipelineLog.info("s2sql:{}\ncorrectS2SQL:{}\nquerySQL:{}", sqlInfo.getS2SQL(), sqlInfo.getCorrectS2SQL(), - explainSql); + keyPipelineLog.info("\ns2sql:{}\ncorrectS2SQL:{}\nquerySQL:{}", sqlInfo.getS2SQL(), + sqlInfo.getCorrectS2SQL(), explainSql); } sqlInfo.setQuerySQL(explainSql); } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java index acdc5b176..41914add3 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java @@ -217,7 +217,15 @@ public class QueryServiceImpl implements QueryService { return queryResult; } - // save time cost data + /** + * save time cost data + * + * @param timeCostDOList + * @param queryText + * @param queryId + * @param userName + * @param chatId + */ private void saveTimeCostInfo(List timeCostDOList, String queryText, Long queryId, String userName, Long chatId) { diff --git a/launchers/standalone/src/main/resources/application-local.yaml b/launchers/standalone/src/main/resources/application-local.yaml index 0afd8ed7b..ce5ce830d 100644 --- a/launchers/standalone/src/main/resources/application-local.yaml +++ b/launchers/standalone/src/main/resources/application-local.yaml @@ -49,7 +49,7 @@ s2: chat-model: provider: open_ai openai: - api-key: sk + api-key: api_key model-name: gpt-3.5-turbo-16k temperature: 0.0 timeout: PT60S