From 3ffc8c3d9efe5349ede380fce943402ac90cf04e Mon Sep 17 00:00:00 2001 From: jerryjzhang Date: Fri, 21 Mar 2025 22:10:41 +0800 Subject: [PATCH] (improvement)(headless)Make rule-based corrector switchable. --- .../headless/chat/corrector/RuleSqlCorrector.java | 9 +++++++++ .../supersonic/headless/chat/parser/ParserConfig.java | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/RuleSqlCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/RuleSqlCorrector.java index e090265b5..da2f22c47 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/RuleSqlCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/RuleSqlCorrector.java @@ -1,12 +1,16 @@ package com.tencent.supersonic.headless.chat.corrector; +import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.chat.ChatQueryContext; +import com.tencent.supersonic.headless.chat.parser.ParserConfig; import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.List; +import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_RULE_CORRECTOR_ENABLE; + @Slf4j public class RuleSqlCorrector extends BaseSemanticCorrector { private List correctors; @@ -20,6 +24,11 @@ public class RuleSqlCorrector extends BaseSemanticCorrector { @Override public void doCorrect(ChatQueryContext chatQueryContext, SemanticParseInfo semanticParseInfo) { + ParserConfig parserConfig = ContextUtils.getBean(ParserConfig.class); + if(!Boolean.parseBoolean(parserConfig.getParameterValue(PARSER_RULE_CORRECTOR_ENABLE))) { + return; + } + for (BaseSemanticCorrector corrector : correctors) { corrector.correct(chatQueryContext, semanticParseInfo); } diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java index 527d04a51..accbf63ee 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java @@ -17,6 +17,10 @@ public class ParserConfig extends ParameterConfig { "ONE_PASS_SELF_CONSISTENCY: 通过投票方式一步生成sql", "list", "语义解析配置", Lists.newArrayList("ONE_PASS_SELF_CONSISTENCY")); + public static final Parameter PARSER_RULE_CORRECTOR_ENABLE = + new Parameter("s2.parser.rule.corrector.enable", "false", "是否开启规则修正器", + "规则修正器灵活度有限,在大模型能力足够情况下,不必强制做规则修正", "bool", "语义解析配置"); + public static final Parameter PARSER_LINKING_VALUE_ENABLE = new Parameter("s2.parser.linking.value.enable", "true", "是否将Mapper探测识别到的维度值提供给大模型", "为了数据安全考虑, 这里可进行开关选择", "bool", "语义解析配置"); @@ -55,7 +59,7 @@ public class ParserConfig extends ParameterConfig { @Override public List getSysParameters() { - return Lists.newArrayList(PARSER_LINKING_VALUE_ENABLE, PARSER_FEW_SHOT_NUMBER, + return Lists.newArrayList(PARSER_LINKING_VALUE_ENABLE, PARSER_RULE_CORRECTOR_ENABLE, PARSER_FEW_SHOT_NUMBER, PARSER_SELF_CONSISTENCY_NUMBER, PARSER_SHOW_COUNT, PARSER_FIELDS_COUNT_THRESHOLD); } }