diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/rule/RuleBasedParser.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/rule/RuleBasedParser.java new file mode 100644 index 000000000..792425c7e --- /dev/null +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/rule/RuleBasedParser.java @@ -0,0 +1,27 @@ +package com.tencent.supersonic.chat.parser.rule; + +import com.tencent.supersonic.chat.api.component.SemanticParser; +import com.tencent.supersonic.chat.api.pojo.ChatContext; +import com.tencent.supersonic.chat.api.pojo.QueryContext; +import lombok.extern.slf4j.Slf4j; + +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class RuleBasedParser implements SemanticParser { + + private static List ruleParsers = Arrays.asList( + new QueryModeParser(), + new ContextInheritParser(), + new AgentCheckParser(), + new MetricCheckParser(), + new TimeRangeParser(), + new AggregateTypeParser() + ); + + @Override + public void parse(QueryContext queryContext, ChatContext chatContext) { + ruleParsers.stream().forEach(p -> p.parse(queryContext, chatContext)); + } +} diff --git a/launchers/chat/src/main/resources/META-INF/spring.factories b/launchers/chat/src/main/resources/META-INF/spring.factories index 17758b0b6..9af8f8bbf 100644 --- a/launchers/chat/src/main/resources/META-INF/spring.factories +++ b/launchers/chat/src/main/resources/META-INF/spring.factories @@ -6,15 +6,17 @@ com.tencent.supersonic.chat.api.component.SchemaMapper=\ com.tencent.supersonic.chat.mapper.EntityMapper com.tencent.supersonic.chat.api.component.SemanticParser=\ - com.tencent.supersonic.chat.parser.rule.QueryModeParser, \ - com.tencent.supersonic.chat.parser.rule.ContextInheritParser, \ - com.tencent.supersonic.chat.parser.rule.AgentCheckParser, \ - com.tencent.supersonic.chat.parser.rule.MetricCheckParser, \ - com.tencent.supersonic.chat.parser.rule.TimeRangeParser, \ - com.tencent.supersonic.chat.parser.rule.AggregateTypeParser, \ + com.tencent.supersonic.chat.parser.rule.RuleBasedParser, \ com.tencent.supersonic.chat.parser.llm.s2ql.LLMS2QLParser, \ com.tencent.supersonic.chat.parser.plugin.function.FunctionBasedParser +com.tencent.supersonic.chat.api.component.SemanticCorrector=\ + com.tencent.supersonic.chat.corrector.GlobalBeforeCorrector, \ + com.tencent.supersonic.chat.corrector.SelectCorrector, \ + com.tencent.supersonic.chat.corrector.WhereCorrector, \ + com.tencent.supersonic.chat.corrector.GroupByCorrector, \ + com.tencent.supersonic.chat.corrector.HavingCorrector, \ + com.tencent.supersonic.chat.corrector.GlobalAfterCorrector com.tencent.supersonic.chat.api.component.SemanticInterpreter=\ com.tencent.supersonic.knowledge.semantic.RemoteSemanticInterpreter @@ -31,15 +33,6 @@ 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.api.component.SemanticCorrector=\ - com.tencent.supersonic.chat.corrector.GlobalBeforeCorrector, \ - com.tencent.supersonic.chat.corrector.SelectCorrector, \ - com.tencent.supersonic.chat.corrector.WhereCorrector, \ - com.tencent.supersonic.chat.corrector.GroupByCorrector, \ - com.tencent.supersonic.chat.corrector.HavingCorrector, \ - com.tencent.supersonic.chat.corrector.GlobalAfterCorrector - com.tencent.supersonic.chat.responder.parse.ParseResponder=\ com.tencent.supersonic.chat.responder.parse.EntityInfoParseResponder, \ com.tencent.supersonic.chat.responder.parse.SqlInfoParseResponder diff --git a/launchers/standalone/src/main/resources/META-INF/spring.factories b/launchers/standalone/src/main/resources/META-INF/spring.factories index 2f534e5a2..587301e04 100644 --- a/launchers/standalone/src/main/resources/META-INF/spring.factories +++ b/launchers/standalone/src/main/resources/META-INF/spring.factories @@ -6,16 +6,18 @@ com.tencent.supersonic.chat.api.component.SchemaMapper=\ com.tencent.supersonic.chat.mapper.EntityMapper com.tencent.supersonic.chat.api.component.SemanticParser=\ - com.tencent.supersonic.chat.parser.rule.QueryModeParser, \ - com.tencent.supersonic.chat.parser.rule.ContextInheritParser, \ - com.tencent.supersonic.chat.parser.rule.AgentCheckParser, \ - com.tencent.supersonic.chat.parser.rule.MetricCheckParser, \ - com.tencent.supersonic.chat.parser.rule.TimeRangeParser, \ - com.tencent.supersonic.chat.parser.rule.AggregateTypeParser, \ + com.tencent.supersonic.chat.parser.rule.RuleBasedParser, \ com.tencent.supersonic.chat.parser.llm.s2ql.LLMS2QLParser, \ com.tencent.supersonic.chat.parser.plugin.embedding.EmbeddingBasedParser, \ com.tencent.supersonic.chat.parser.plugin.function.FunctionBasedParser +com.tencent.supersonic.chat.api.component.SemanticCorrector=\ + com.tencent.supersonic.chat.corrector.GlobalBeforeCorrector, \ + com.tencent.supersonic.chat.corrector.SelectCorrector, \ + com.tencent.supersonic.chat.corrector.WhereCorrector, \ + com.tencent.supersonic.chat.corrector.GroupByCorrector, \ + com.tencent.supersonic.chat.corrector.HavingCorrector, \ + com.tencent.supersonic.chat.corrector.GlobalAfterCorrector com.tencent.supersonic.chat.api.component.SemanticInterpreter=\ com.tencent.supersonic.knowledge.semantic.LocalSemanticInterpreter @@ -32,14 +34,6 @@ 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.api.component.SemanticCorrector=\ - com.tencent.supersonic.chat.corrector.GlobalBeforeCorrector, \ - com.tencent.supersonic.chat.corrector.SelectCorrector, \ - com.tencent.supersonic.chat.corrector.WhereCorrector, \ - com.tencent.supersonic.chat.corrector.GroupByCorrector, \ - com.tencent.supersonic.chat.corrector.HavingCorrector, \ - com.tencent.supersonic.chat.corrector.GlobalAfterCorrector - com.tencent.supersonic.chat.responder.parse.ParseResponder=\ com.tencent.supersonic.chat.responder.parse.EntityInfoParseResponder, \ com.tencent.supersonic.chat.responder.parse.SqlInfoParseResponder diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/integration/BaseQueryTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/integration/BaseQueryTest.java index 8d9ba60b3..2ff6a901b 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/integration/BaseQueryTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/integration/BaseQueryTest.java @@ -51,13 +51,14 @@ public class BaseQueryTest { protected QueryResult submitMultiTurnChat(String queryText) throws Exception { ParseResp parseResp = submitParse(queryText); - ExecuteQueryReq request = new ExecuteQueryReq(); - request.setQueryId(parseResp.getQueryId()); - request.setParseId(parseResp.getSelectedParses().get(0).getId()); - request.setChatId(parseResp.getChatId()); - request.setQueryText(parseResp.getQueryText()); - request.setUser(DataUtils.getUser()); - request.setParseInfo(parseResp.getSelectedParses().get(0)); + ExecuteQueryReq request = ExecuteQueryReq.builder() + .queryId(parseResp.getQueryId()) + .parseId(parseResp.getSelectedParses().get(0).getId()) + .chatId(parseResp.getChatId()) + .queryText(parseResp.getQueryText()) + .user(DataUtils.getUser()) + .parseInfo(parseResp.getSelectedParses().get(0)) + .build(); return queryService.performExecution(request); } @@ -65,13 +66,14 @@ public class BaseQueryTest { protected QueryResult submitNewChat(String queryText) throws Exception { ParseResp parseResp = submitParse(queryText); - ExecuteQueryReq request = new ExecuteQueryReq(); - request.setQueryId(parseResp.getQueryId()); - request.setParseId(parseResp.getSelectedParses().get(0).getId()); - request.setChatId(parseResp.getChatId()); - request.setQueryText(parseResp.getQueryText()); - request.setUser(DataUtils.getUser()); - request.setParseInfo(parseResp.getSelectedParses().get(0)); + ExecuteQueryReq request = ExecuteQueryReq.builder() + .queryId(parseResp.getQueryId()) + .parseId(parseResp.getSelectedParses().get(0).getId()) + .chatId(parseResp.getChatId()) + .queryText(parseResp.getQueryText()) + .user(DataUtils.getUser()) + .parseInfo(parseResp.getSelectedParses().get(0)) + .build(); QueryResult result = queryService.performExecution(request); diff --git a/launchers/standalone/src/test/resources/META-INF/spring.factories b/launchers/standalone/src/test/resources/META-INF/spring.factories index abd0aaf93..3a442fdf7 100644 --- a/launchers/standalone/src/test/resources/META-INF/spring.factories +++ b/launchers/standalone/src/test/resources/META-INF/spring.factories @@ -2,11 +2,7 @@ com.tencent.supersonic.chat.api.component.SchemaMapper=\ com.tencent.supersonic.chat.mapper.HanlpDictMapper com.tencent.supersonic.chat.api.component.SemanticParser=\ - com.tencent.supersonic.chat.parser.rule.QueryModeParser, \ - com.tencent.supersonic.chat.parser.rule.ContextInheritParser, \ - com.tencent.supersonic.chat.parser.rule.AgentCheckParser, \ - com.tencent.supersonic.chat.parser.rule.TimeRangeParser, \ - com.tencent.supersonic.chat.parser.rule.AggregateTypeParser, \ + com.tencent.supersonic.chat.parser.rule.RuleBasedParser, \ com.tencent.supersonic.chat.parser.llm.interpret.MetricInterpretParser # com.tencent.supersonic.chat.parser.llm.DSLQueryFunction