From 95e3138ab2c6fd5de1829fbe85677b40cc181f62 Mon Sep 17 00:00:00 2001 From: LXW <1264174498@qq.com> Date: Wed, 29 Nov 2023 10:08:25 +0800 Subject: [PATCH] (improvement)(chat) Merge ParseResponder into PostProcessor, and change ExecuteResponder to QueryResponder (#448) Co-authored-by: jolunoluo --- .../EntityInfoPostProcessor.java} | 7 ++++--- .../MetricCheckPostProcessor.java | 4 +++- .../ParseInfoUpdateProcessor.java | 13 +++++++----- .../chat/postprocessor/PostProcessor.java | 4 +++- .../QueryRankPostProcessor.java} | 6 +++--- .../RespBuildPostProcessor.java} | 6 +++--- .../SqlOutputPostProcessor.java} | 6 +++--- .../TimeCostPostProcessor.java} | 6 +++--- ...der.java => EntityInfoQueryResponder.java} | 4 ++-- ...cuteResponder.java => QueryResponder.java} | 4 ++-- ....java => SimilarMetricQueryResponder.java} | 4 ++-- .../chat/responder/parse/ParseResponder.java | 11 ---------- .../chat/service/impl/QueryServiceImpl.java | 19 ++++-------------- .../chat/utils/ComponentFactory.java | 14 ++++--------- .../main/resources/META-INF/spring.factories | 16 ++++++++++----- .../main/resources/META-INF/spring.factories | 20 +++++++++---------- .../test/resources/META-INF/spring.factories | 19 +++++++++--------- 17 files changed, 73 insertions(+), 90 deletions(-) rename chat/core/src/main/java/com/tencent/supersonic/chat/{responder/parse/EntityInfoParseResponder.java => postprocessor/EntityInfoPostProcessor.java} (89%) rename chat/core/src/main/java/com/tencent/supersonic/chat/{responder/parse/QueryRankParseResponder.java => postprocessor/QueryRankPostProcessor.java} (92%) rename chat/core/src/main/java/com/tencent/supersonic/chat/{responder/parse/RespBuildParseResponder.java => postprocessor/RespBuildPostProcessor.java} (86%) rename chat/core/src/main/java/com/tencent/supersonic/chat/{responder/parse/SqlOutputParseResponder.java => postprocessor/SqlOutputPostProcessor.java} (89%) rename chat/core/src/main/java/com/tencent/supersonic/chat/{responder/parse/TimeCostParseResponder.java => postprocessor/TimeCostPostProcessor.java} (68%) rename chat/core/src/main/java/com/tencent/supersonic/chat/responder/{execute/EntityInfoExecuteResponder.java => EntityInfoQueryResponder.java} (91%) rename chat/core/src/main/java/com/tencent/supersonic/chat/responder/{execute/ExecuteResponder.java => QueryResponder.java} (77%) rename chat/core/src/main/java/com/tencent/supersonic/chat/responder/{execute/SimilarMetricExecuteResponder.java => SimilarMetricQueryResponder.java} (96%) delete mode 100644 chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/ParseResponder.java diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/EntityInfoParseResponder.java b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/EntityInfoPostProcessor.java similarity index 89% rename from chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/EntityInfoParseResponder.java rename to chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/EntityInfoPostProcessor.java index 168f7327f..602d4aab7 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/EntityInfoParseResponder.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/EntityInfoPostProcessor.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.responder.parse; +package com.tencent.supersonic.chat.postprocessor; import com.tencent.supersonic.chat.api.component.SemanticQuery; import com.tencent.supersonic.chat.api.pojo.ChatContext; @@ -12,13 +12,14 @@ import com.tencent.supersonic.chat.query.llm.interpret.MetricInterpretQuery; import com.tencent.supersonic.chat.service.SemanticService; import com.tencent.supersonic.common.util.ContextUtils; import org.springframework.util.CollectionUtils; + import java.util.List; import java.util.stream.Collectors; -public class EntityInfoParseResponder implements ParseResponder { +public class EntityInfoPostProcessor implements PostProcessor { @Override - public void fillResponse(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { + public void process(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { List semanticQueries = queryContext.getCandidateQueries(); if (CollectionUtils.isEmpty(semanticQueries)) { return; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/MetricCheckPostProcessor.java b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/MetricCheckPostProcessor.java index e8413b8e0..05aa58112 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/MetricCheckPostProcessor.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/MetricCheckPostProcessor.java @@ -3,12 +3,14 @@ package com.tencent.supersonic.chat.postprocessor; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.tencent.supersonic.chat.api.component.SemanticQuery; +import com.tencent.supersonic.chat.api.pojo.ChatContext; import com.tencent.supersonic.chat.api.pojo.QueryContext; import com.tencent.supersonic.chat.api.pojo.RelatedSchemaElement; import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.chat.api.pojo.SchemaElementType; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; import com.tencent.supersonic.chat.api.pojo.SemanticSchema; +import com.tencent.supersonic.chat.api.pojo.response.ParseResp; import com.tencent.supersonic.chat.service.SemanticService; import com.tencent.supersonic.common.pojo.QueryType; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; @@ -31,7 +33,7 @@ import java.util.stream.Collectors; public class MetricCheckPostProcessor implements PostProcessor { @Override - public void process(QueryContext queryContext) { + public void process(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { List semanticQueries = queryContext.getCandidateQueries(); SemanticService semanticService = ContextUtils.getBean(SemanticService.class); SemanticSchema semanticSchema = semanticService.getSemanticSchema(); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/ParseInfoUpdateProcessor.java b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/ParseInfoUpdateProcessor.java index 196b3f1fc..f835ce851 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/ParseInfoUpdateProcessor.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/ParseInfoUpdateProcessor.java @@ -2,11 +2,13 @@ package com.tencent.supersonic.chat.postprocessor; import com.google.common.collect.Lists; import com.tencent.supersonic.chat.api.component.SemanticQuery; +import com.tencent.supersonic.chat.api.pojo.ChatContext; import com.tencent.supersonic.chat.api.pojo.QueryContext; import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; import com.tencent.supersonic.chat.api.pojo.SemanticSchema; import com.tencent.supersonic.chat.api.pojo.request.QueryFilter; +import com.tencent.supersonic.chat.api.pojo.response.ParseResp; import com.tencent.supersonic.chat.api.pojo.response.SqlInfo; import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.QueryType; @@ -16,6 +18,11 @@ import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.jsqlparser.FieldExpression; import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectHelper; import com.tencent.supersonic.knowledge.service.SchemaService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.springframework.util.CollectionUtils; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -24,10 +31,6 @@ import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.Pair; -import org.springframework.util.CollectionUtils; /** * update parse info from correct sql @@ -36,7 +39,7 @@ import org.springframework.util.CollectionUtils; public class ParseInfoUpdateProcessor implements PostProcessor { @Override - public void process(QueryContext queryContext) { + public void process(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { List candidateQueries = queryContext.getCandidateQueries(); if (CollectionUtils.isEmpty(candidateQueries)) { return; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/PostProcessor.java b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/PostProcessor.java index 50536af09..b5c959328 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/PostProcessor.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/PostProcessor.java @@ -1,5 +1,7 @@ package com.tencent.supersonic.chat.postprocessor; +import com.tencent.supersonic.chat.api.pojo.ChatContext; import com.tencent.supersonic.chat.api.pojo.QueryContext; +import com.tencent.supersonic.chat.api.pojo.response.ParseResp; /** * A post processor do some logic after parser and corrector @@ -7,6 +9,6 @@ import com.tencent.supersonic.chat.api.pojo.QueryContext; public interface PostProcessor { - void process(QueryContext queryContext); + void process(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext); } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/QueryRankParseResponder.java b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/QueryRankPostProcessor.java similarity index 92% rename from chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/QueryRankParseResponder.java rename to chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/QueryRankPostProcessor.java index 5eab91552..6db75ff8b 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/QueryRankParseResponder.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/QueryRankPostProcessor.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.responder.parse; +package com.tencent.supersonic.chat.postprocessor; import com.tencent.supersonic.chat.api.component.SemanticQuery; import com.tencent.supersonic.chat.api.pojo.ChatContext; @@ -18,12 +18,12 @@ import java.util.stream.Collectors; * Rank queries by score. */ @Slf4j -public class QueryRankParseResponder implements ParseResponder { +public class QueryRankPostProcessor implements PostProcessor { private static final int candidateTopSize = 5; @Override - public void fillResponse(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { + public void process(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { List candidateQueries = queryContext.getCandidateQueries(); candidateQueries = rank(candidateQueries); queryContext.setCandidateQueries(candidateQueries); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/RespBuildParseResponder.java b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/RespBuildPostProcessor.java similarity index 86% rename from chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/RespBuildParseResponder.java rename to chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/RespBuildPostProcessor.java index 73484d24a..177e9a9b7 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/RespBuildParseResponder.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/RespBuildPostProcessor.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.responder.parse; +package com.tencent.supersonic.chat.postprocessor; import com.tencent.supersonic.chat.api.component.SemanticQuery; import com.tencent.supersonic.chat.api.pojo.ChatContext; @@ -13,10 +13,10 @@ import java.util.List; import java.util.stream.Collectors; @Slf4j -public class RespBuildParseResponder implements ParseResponder { +public class RespBuildPostProcessor implements PostProcessor { @Override - public void fillResponse(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { + public void process(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { QueryReq queryReq = queryContext.getRequest(); parseResp.setChatId(queryReq.getChatId()); parseResp.setQueryText(queryReq.getQueryText()); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/SqlOutputParseResponder.java b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/SqlOutputPostProcessor.java similarity index 89% rename from chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/SqlOutputParseResponder.java rename to chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/SqlOutputPostProcessor.java index d703354d1..ff53a9c54 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/SqlOutputParseResponder.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/SqlOutputPostProcessor.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.responder.parse; +package com.tencent.supersonic.chat.postprocessor; import com.tencent.supersonic.chat.api.component.SemanticQuery; import com.tencent.supersonic.chat.api.pojo.ChatContext; @@ -13,10 +13,10 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; -public class SqlOutputParseResponder implements ParseResponder { +public class SqlOutputPostProcessor implements PostProcessor { @Override - public void fillResponse(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { + public void process(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { QueryReq queryReq = queryContext.getRequest(); List semanticQueries = queryContext.getCandidateQueries(); if (CollectionUtils.isEmpty(semanticQueries)) { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/TimeCostParseResponder.java b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/TimeCostPostProcessor.java similarity index 68% rename from chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/TimeCostParseResponder.java rename to chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/TimeCostPostProcessor.java index e2a963b5c..8bc50afc0 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/TimeCostParseResponder.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/postprocessor/TimeCostPostProcessor.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.responder.parse; +package com.tencent.supersonic.chat.postprocessor; import com.tencent.supersonic.chat.api.pojo.ChatContext; import com.tencent.supersonic.chat.api.pojo.QueryContext; @@ -6,11 +6,11 @@ import com.tencent.supersonic.chat.api.pojo.response.ParseResp; import lombok.extern.slf4j.Slf4j; @Slf4j -public class TimeCostParseResponder implements ParseResponder { +public class TimeCostPostProcessor implements PostProcessor { @Override - public void fillResponse(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { + public void process(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext) { long parseStartTime = parseResp.getParseTimeCost().getParseStartTime(); parseResp.getParseTimeCost().setParseTime( System.currentTimeMillis() - parseStartTime - parseResp.getParseTimeCost().getSqlTime()); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/EntityInfoExecuteResponder.java b/chat/core/src/main/java/com/tencent/supersonic/chat/responder/EntityInfoQueryResponder.java similarity index 91% rename from chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/EntityInfoExecuteResponder.java rename to chat/core/src/main/java/com/tencent/supersonic/chat/responder/EntityInfoQueryResponder.java index 377792bd9..1b673d6e2 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/EntityInfoExecuteResponder.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/responder/EntityInfoQueryResponder.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.responder.execute; +package com.tencent.supersonic.chat.responder; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; @@ -10,7 +10,7 @@ import com.tencent.supersonic.chat.query.llm.interpret.MetricInterpretQuery; import com.tencent.supersonic.chat.service.SemanticService; import com.tencent.supersonic.common.util.ContextUtils; -public class EntityInfoExecuteResponder implements ExecuteResponder { +public class EntityInfoQueryResponder implements QueryResponder { @Override public void fillResponse(QueryResult queryResult, SemanticParseInfo semanticParseInfo, ExecuteQueryReq queryReq) { diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/ExecuteResponder.java b/chat/core/src/main/java/com/tencent/supersonic/chat/responder/QueryResponder.java similarity index 77% rename from chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/ExecuteResponder.java rename to chat/core/src/main/java/com/tencent/supersonic/chat/responder/QueryResponder.java index a179a73e7..4dd5b3980 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/ExecuteResponder.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/responder/QueryResponder.java @@ -1,10 +1,10 @@ -package com.tencent.supersonic.chat.responder.execute; +package com.tencent.supersonic.chat.responder; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; import com.tencent.supersonic.chat.api.pojo.request.ExecuteQueryReq; import com.tencent.supersonic.chat.api.pojo.response.QueryResult; -public interface ExecuteResponder { +public interface QueryResponder { void fillResponse(QueryResult queryResult, SemanticParseInfo semanticParseInfo, ExecuteQueryReq queryReq); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/SimilarMetricExecuteResponder.java b/chat/core/src/main/java/com/tencent/supersonic/chat/responder/SimilarMetricQueryResponder.java similarity index 96% rename from chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/SimilarMetricExecuteResponder.java rename to chat/core/src/main/java/com/tencent/supersonic/chat/responder/SimilarMetricQueryResponder.java index b8e73bc6f..abf16a074 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/SimilarMetricExecuteResponder.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/responder/SimilarMetricQueryResponder.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.responder.execute; +package com.tencent.supersonic.chat.responder; import com.alibaba.fastjson.JSONObject; import com.tencent.supersonic.chat.api.pojo.SchemaElement; @@ -22,7 +22,7 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -public class SimilarMetricExecuteResponder implements ExecuteResponder { +public class SimilarMetricQueryResponder implements QueryResponder { private static final int METRIC_RECOMMEND_SIZE = 5; diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/ParseResponder.java b/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/ParseResponder.java deleted file mode 100644 index 9ac17a2ec..000000000 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/ParseResponder.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.tencent.supersonic.chat.responder.parse; - -import com.tencent.supersonic.chat.api.pojo.ChatContext; -import com.tencent.supersonic.chat.api.pojo.QueryContext; -import com.tencent.supersonic.chat.api.pojo.response.ParseResp; - -public interface ParseResponder { - - void fillResponse(ParseResp parseResp, QueryContext queryContext, ChatContext chatContext); - -} \ No newline at end of file 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 3d6da572b..184ba5c9e 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 @@ -32,8 +32,7 @@ import com.tencent.supersonic.chat.postprocessor.PostProcessor; import com.tencent.supersonic.chat.query.QueryManager; import com.tencent.supersonic.chat.query.llm.s2sql.S2SQLQuery; import com.tencent.supersonic.chat.query.rule.RuleSemanticQuery; -import com.tencent.supersonic.chat.responder.execute.ExecuteResponder; -import com.tencent.supersonic.chat.responder.parse.ParseResponder; +import com.tencent.supersonic.chat.responder.QueryResponder; import com.tencent.supersonic.chat.service.ChatService; import com.tencent.supersonic.chat.service.QueryService; import com.tencent.supersonic.chat.service.SemanticService; @@ -113,8 +112,7 @@ public class QueryServiceImpl implements QueryService { private List schemaMappers = ComponentFactory.getSchemaMappers(); private List semanticParsers = ComponentFactory.getSemanticParsers(); private List postProcessors = ComponentFactory.getPostProcessors(); - private List parseResponders = ComponentFactory.getParseResponders(); - private List executeResponders = ComponentFactory.getExecuteResponders(); + private List executeResponders = ComponentFactory.getExecuteResponders(); private List semanticCorrectors = ComponentFactory.getSqlCorrections(); @Override @@ -159,21 +157,12 @@ public class QueryServiceImpl implements QueryService { //5. postProcessor postProcessors.forEach(postProcessor -> { long startTime = System.currentTimeMillis(); - postProcessor.process(queryCtx); + postProcessor.process(parseResult, queryCtx, chatCtx); timeCostDOList.add(StatisticsDO.builder().cost((int) (System.currentTimeMillis() - startTime)) .interfaceName(postProcessor.getClass().getSimpleName()) .type(CostType.POSTPROCESSOR.getType()).build()); log.info("{} result:{}", postProcessor.getClass().getSimpleName(), JsonUtil.toString(queryCtx)); }); - //6. responder - parseResponders.forEach(parseResponder -> { - long startTime = System.currentTimeMillis(); - parseResponder.fillResponse(parseResult, queryCtx, chatCtx); - timeCostDOList.add(StatisticsDO.builder().cost((int) (System.currentTimeMillis() - startTime)) - .interfaceName(parseResponder.getClass().getSimpleName()) - .type(CostType.PARSERRESPONDER.getType()).build()); - log.info("{} result:{}", parseResponder.getClass().getSimpleName(), JsonUtil.toString(parseResult)); - }); if (Objects.nonNull(parseResult.getQueryId()) && timeCostDOList.size() > 0) { saveTimeCostInfo(timeCostDOList, queryReq.getQueryText(), parseResult.getQueryId(), @@ -217,7 +206,7 @@ public class QueryServiceImpl implements QueryService { } chatCtx.setQueryText(queryReq.getQueryText()); chatCtx.setUser(queryReq.getUser().getName()); - for (ExecuteResponder executeResponder : executeResponders) { + for (QueryResponder executeResponder : executeResponders) { executeResponder.fillResponse(queryResult, parseInfo, queryReq); } chatService.updateQuery(queryReq.getQueryId(), queryResult, chatCtx); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/ComponentFactory.java b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/ComponentFactory.java index 44b225a7b..2425b91ea 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/ComponentFactory.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/ComponentFactory.java @@ -7,8 +7,7 @@ import com.tencent.supersonic.chat.api.component.SemanticParser; import com.tencent.supersonic.chat.parser.LLMInterpreter; import com.tencent.supersonic.chat.parser.llm.s2sql.ModelResolver; import com.tencent.supersonic.chat.postprocessor.PostProcessor; -import com.tencent.supersonic.chat.responder.execute.ExecuteResponder; -import com.tencent.supersonic.chat.responder.parse.ParseResponder; +import com.tencent.supersonic.chat.responder.QueryResponder; import org.apache.commons.collections.CollectionUtils; import org.springframework.core.io.support.SpringFactoriesLoader; import java.util.ArrayList; @@ -24,8 +23,7 @@ public class ComponentFactory { private static LLMInterpreter llmInterpreter; private static List postProcessors = new ArrayList<>(); - private static List parseResponders = new ArrayList<>(); - private static List executeResponders = new ArrayList<>(); + private static List executeResponders = new ArrayList<>(); private static ModelResolver modelResolver; public static List getSchemaMappers() { @@ -45,13 +43,9 @@ public class ComponentFactory { return CollectionUtils.isEmpty(postProcessors) ? init(PostProcessor.class, postProcessors) : postProcessors; } - public static List getParseResponders() { - return CollectionUtils.isEmpty(parseResponders) ? init(ParseResponder.class, parseResponders) : parseResponders; - } - - public static List getExecuteResponders() { + public static List getExecuteResponders() { return CollectionUtils.isEmpty(executeResponders) - ? init(ExecuteResponder.class, executeResponders) : executeResponders; + ? init(QueryResponder.class, executeResponders) : executeResponders; } public static SemanticInterpreter getSemanticLayer() { diff --git a/launchers/chat/src/main/resources/META-INF/spring.factories b/launchers/chat/src/main/resources/META-INF/spring.factories index 434c120b9..2c741b70d 100644 --- a/launchers/chat/src/main/resources/META-INF/spring.factories +++ b/launchers/chat/src/main/resources/META-INF/spring.factories @@ -34,9 +34,15 @@ com.tencent.supersonic.auth.authentication.interceptor.AuthenticationInterceptor com.tencent.supersonic.auth.api.authentication.adaptor.UserAdaptor=\ com.tencent.supersonic.auth.authentication.adaptor.DefaultUserAdaptor -com.tencent.supersonic.chat.responder.parse.ParseResponder=\ - com.tencent.supersonic.chat.responder.parse.EntityInfoParseResponder, \ - com.tencent.supersonic.chat.responder.parse.SqlInfoParseResponder +com.tencent.supersonic.chat.postprocessor.PostProcessor=\ + com.tencent.supersonic.chat.postprocessor.MetricCheckPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.ParseInfoUpdateProcessor, \ + com.tencent.supersonic.chat.postprocessor.QueryRankPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.EntityInfoPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.SqlOutputPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.TimeCostPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.RespBuildPostProcessor -com.tencent.supersonic.chat.responder.execute.ExecuteResponder=\ - com.tencent.supersonic.chat.responder.execute.EntityInfoExecuteResponder \ No newline at end of file +com.tencent.supersonic.chat.responder.QueryResponder=\ + com.tencent.supersonic.chat.responder.EntityInfoQueryResponder, \ + com.tencent.supersonic.chat.responder.SimilarMetricQueryResponder \ No newline at end of file diff --git a/launchers/standalone/src/main/resources/META-INF/spring.factories b/launchers/standalone/src/main/resources/META-INF/spring.factories index 6190f4515..8cc5a61dd 100644 --- a/launchers/standalone/src/main/resources/META-INF/spring.factories +++ b/launchers/standalone/src/main/resources/META-INF/spring.factories @@ -38,15 +38,13 @@ com.tencent.supersonic.auth.api.authentication.adaptor.UserAdaptor=\ com.tencent.supersonic.chat.postprocessor.PostProcessor=\ com.tencent.supersonic.chat.postprocessor.MetricCheckPostProcessor, \ - com.tencent.supersonic.chat.postprocessor.ParseInfoUpdateProcessor + com.tencent.supersonic.chat.postprocessor.ParseInfoUpdateProcessor, \ + com.tencent.supersonic.chat.postprocessor.QueryRankPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.EntityInfoPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.SqlOutputPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.TimeCostPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.RespBuildPostProcessor -com.tencent.supersonic.chat.responder.parse.ParseResponder=\ - com.tencent.supersonic.chat.responder.parse.QueryRankParseResponder, \ - com.tencent.supersonic.chat.responder.parse.EntityInfoParseResponder, \ - com.tencent.supersonic.chat.responder.parse.SqlOutputParseResponder, \ - com.tencent.supersonic.chat.responder.parse.TimeCostParseResponder, \ - com.tencent.supersonic.chat.responder.parse.RespBuildParseResponder - -com.tencent.supersonic.chat.responder.execute.ExecuteResponder=\ - com.tencent.supersonic.chat.responder.execute.EntityInfoExecuteResponder, \ - com.tencent.supersonic.chat.responder.execute.SimilarMetricExecuteResponder \ No newline at end of file +com.tencent.supersonic.chat.responder.QueryResponder=\ + com.tencent.supersonic.chat.responder.EntityInfoQueryResponder, \ + com.tencent.supersonic.chat.responder.SimilarMetricQueryResponder \ No newline at end of file diff --git a/launchers/standalone/src/test/resources/META-INF/spring.factories b/launchers/standalone/src/test/resources/META-INF/spring.factories index 1b71085cb..8b6e2fc3b 100644 --- a/launchers/standalone/src/test/resources/META-INF/spring.factories +++ b/launchers/standalone/src/test/resources/META-INF/spring.factories @@ -34,15 +34,14 @@ com.tencent.supersonic.auth.api.authentication.adaptor.UserAdaptor=\ com.tencent.supersonic.chat.postprocessor.PostProcessor=\ com.tencent.supersonic.chat.postprocessor.MetricCheckPostProcessor, \ - com.tencent.supersonic.chat.postprocessor.ParseInfoUpdateProcessor + com.tencent.supersonic.chat.postprocessor.ParseInfoUpdateProcessor, \ + com.tencent.supersonic.chat.postprocessor.QueryRankPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.EntityInfoPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.SqlOutputPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.TimeCostPostProcessor, \ + com.tencent.supersonic.chat.postprocessor.RespBuildPostProcessor -com.tencent.supersonic.chat.responder.parse.ParseResponder=\ - com.tencent.supersonic.chat.responder.parse.QueryRankParseResponder, \ - com.tencent.supersonic.chat.responder.parse.EntityInfoParseResponder, \ - com.tencent.supersonic.chat.responder.parse.SqlOutputParseResponder, \ - com.tencent.supersonic.chat.responder.parse.TimeCostParseResponder, \ - com.tencent.supersonic.chat.responder.parse.RespBuildParseResponder -com.tencent.supersonic.chat.responder.execute.ExecuteResponder=\ - com.tencent.supersonic.chat.responder.execute.EntityInfoExecuteResponder, \ - com.tencent.supersonic.chat.responder.execute.SimilarMetricExecuteResponder \ No newline at end of file +com.tencent.supersonic.chat.responder.QueryResponder=\ + com.tencent.supersonic.chat.responder.EntityInfoQueryResponder, \ + com.tencent.supersonic.chat.responder.SimilarMetricQueryResponder \ No newline at end of file