From c3ecc057155fc007dc22a8d04436463617d65557 Mon Sep 17 00:00:00 2001 From: jerryjzhang Date: Sat, 15 Jun 2024 18:56:39 +0800 Subject: [PATCH] (improvement)(headless)Introduce headless-chat. #1155 --- assembly/build/build.xml | 4 + .../repository/ChatContextRepository.java | 2 +- .../embedding/EmbeddingRecallRecognizer.java | 4 +- .../execute/MetricRatioProcessor.java | 2 +- .../execute/MetricRecommendProcessor.java | 2 +- .../processor/parse/EntityInfoProcessor.java | 2 +- headless/chat/pom.xml | 121 ++++++++++++++++++ .../headless/chat}/ChatContext.java | 2 +- .../headless/chat}/QueryContext.java | 10 +- .../chat/corrector/AggCorrector.java | 4 +- .../chat/corrector/BaseSemanticCorrector.java | 4 +- .../chat/corrector/GrammarCorrector.java | 4 +- .../chat/corrector/GroupByCorrector.java | 4 +- .../chat/corrector/HavingCorrector.java | 4 +- .../chat/corrector/SchemaCorrector.java | 24 ++-- .../chat/corrector/SelectCorrector.java | 4 +- .../chat/corrector/SemanticCorrector.java | 4 +- .../chat/corrector/TimeCorrector.java | 6 +- .../chat/corrector/WhereCorrector.java | 4 +- .../chat/knowledge/DataSetInfoStat.java | 2 +- .../chat/knowledge/DatabaseMapResult.java | 2 +- .../chat/knowledge/DictUpdateMode.java | 2 +- .../headless}/chat/knowledge/DictWord.java | 2 +- .../knowledge/DictionaryAttributeUtil.java | 2 +- .../chat/knowledge/EmbeddingResult.java | 2 +- .../chat/knowledge/HadoopFileIOAdapter.java | 2 +- .../chat/knowledge/HanlpMapResult.java | 2 +- .../chat/knowledge/KnowledgeBaseService.java | 4 +- .../headless}/chat/knowledge/MapResult.java | 2 +- .../chat/knowledge/MetaEmbeddingService.java | 4 +- .../chat/knowledge/MultiCustomDictionary.java | 22 ++-- .../chat/knowledge/SearchService.java | 4 +- .../knowledge/builder/BaseWordBuilder.java | 5 +- .../builder/BaseWordWithAliasBuilder.java | 4 +- .../builder/DimensionWordBuilder.java | 5 +- .../knowledge/builder/EntityWordBuilder.java | 5 +- .../knowledge/builder/MetricWordBuilder.java | 5 +- .../knowledge/builder/ModelWordBuilder.java | 5 +- .../knowledge/builder/TermWordBuilder.java | 4 +- .../knowledge/builder/ValueWordBuilder.java | 5 +- .../knowledge/builder/WordBuilderFactory.java | 2 +- .../knowledge/file}/ChatLocalFileConfig.java | 4 +- .../chat/knowledge}/file/FileHandler.java | 2 +- .../chat/knowledge}/file/FileHandlerImpl.java | 2 +- .../chat/knowledge}/file/LocalFileConfig.java | 4 +- .../chat/knowledge/helper/FileHelper.java | 17 ++- .../chat/knowledge/helper/HanlpHelper.java | 18 ++- .../chat/knowledge/helper/HdfsFileHelper.java | 18 ++- .../chat/knowledge/helper/NatureHelper.java | 4 +- .../headless}/chat/mapper/BaseMapper.java | 4 +- .../chat/mapper/BaseMatchStrategy.java | 7 +- .../chat/mapper/DatabaseMatchStrategy.java | 13 +- .../chat/mapper/EmbeddingMapper.java | 10 +- .../chat/mapper/EmbeddingMatchStrategy.java | 25 ++-- .../headless}/chat/mapper/EntityMapper.java | 4 +- .../chat/mapper/HanlpDictMatchStrategy.java | 28 ++-- .../headless}/chat/mapper/KeywordMapper.java | 14 +- .../headless/chat/mapper}/MapperConfig.java | 2 +- .../headless}/chat/mapper/MapperHelper.java | 4 +- .../headless}/chat/mapper/MatchStrategy.java | 4 +- .../headless}/chat/mapper/MatchText.java | 2 +- .../chat/mapper/ModelWithSemanticType.java | 2 +- .../chat/mapper/QueryFilterMapper.java | 6 +- .../headless}/chat/mapper/SchemaMapper.java | 4 +- .../chat/mapper/SearchMatchStrategy.java | 12 +- .../headless/chat/parser}/ParserConfig.java | 2 +- .../chat/parser/QueryTypeParser.java | 12 +- .../chat/parser/SatisfactionChecker.java | 16 +-- .../headless}/chat/parser/SemanticParser.java | 6 +- .../chat/parser/llm/DataSetMatchResult.java | 2 +- .../chat/parser/llm/DataSetResolver.java | 5 +- .../headless}/chat/parser/llm/Exemplar.java | 2 +- .../chat/parser/llm/ExemplarManager.java | 2 +- .../parser/llm/HeuristicDataSetResolver.java | 6 +- .../chat/parser/llm/InputFormat.java | 2 +- .../chat/parser/llm/JavaLLMProxy.java | 6 +- .../chat/parser/llm}/LLMParserConfig.java | 2 +- .../headless}/chat/parser/llm/LLMProxy.java | 6 +- .../chat/parser/llm/LLMRequestService.java | 30 ++--- .../chat/parser/llm/LLMResponseService.java | 14 +- .../chat/parser/llm/LLMSqlParser.java | 14 +- .../parser/llm/OnePassSCSqlGenStrategy.java | 6 +- .../chat/parser/llm/OutputFormat.java | 4 +- .../chat/parser/llm/ParseResult.java | 9 +- .../chat/parser/llm/PromptHelper.java | 15 +-- .../chat/parser/llm/PythonLLMProxy.java | 7 +- .../parser/llm}/SqlEmbeddingListener.java | 7 +- .../chat/parser/llm/SqlGenStrategy.java | 6 +- .../parser/llm/SqlGenStrategyFactory.java | 4 +- .../parser/llm/TwoPassSCSqlGenStrategy.java | 9 +- .../chat/parser/rule/AggregateTypeParser.java | 34 +++-- .../parser/rule/ContextInheritParser.java | 20 +-- .../chat/parser/rule/RuleSqlParser.java | 10 +- .../chat/parser/rule/TimeRangeParser.java | 14 +- .../chat/query/BaseSemanticQuery.java | 8 +- .../headless}/chat/query/QueryManager.java | 10 +- .../headless}/chat/query/SemanticQuery.java | 2 +- .../chat/query/llm/LLMSemanticQuery.java | 8 ++ .../chat/query/llm/s2sql/LLMReq.java | 2 +- .../chat/query/llm/s2sql/LLMResp.java | 2 +- .../chat/query/llm/s2sql/LLMSqlQuery.java | 8 +- .../chat/query/llm/s2sql/LLMSqlResp.java | 2 +- .../chat/query/rule/QueryMatchOption.java | 2 +- .../chat/query/rule/QueryMatcher.java | 2 +- .../chat/query/rule/RuleSemanticQuery.java | 12 +- .../query/rule/detail/DetailFilterQuery.java | 6 +- .../chat/query/rule/detail/DetailIdQuery.java | 6 +- .../query/rule/detail/DetailListQuery.java | 6 +- .../rule/detail/DetailSemanticQuery.java | 17 ++- .../query/rule/metric/MetricFilterQuery.java | 6 +- .../query/rule/metric/MetricGroupByQuery.java | 8 +- .../chat/query/rule/metric/MetricIdQuery.java | 7 +- .../query/rule/metric/MetricModelQuery.java | 24 ++++ .../rule/metric/MetricSemanticQuery.java | 13 +- .../query/rule/metric/MetricTopNQuery.java | 16 +-- .../headless/chat/utils/ComponentFactory.java | 64 +++++++++ .../headless/chat}/utils/QueryReqBuilder.java | 4 +- .../headless/chat}/utils/S2SqlDateHelper.java | 4 +- .../chat}/corrector/AggCorrectorTest.java | 9 +- .../chat}/corrector/SchemaCorrectorTest.java | 26 ++-- .../chat}/corrector/TimeCorrectorTest.java | 9 +- .../chat}/mapper/LoadRemoveServiceTest.java | 2 +- .../chat/parser}/AggregateTypeParserTest.java | 6 +- .../chat}/s2sql/LLMResponseServiceTest.java | 10 +- .../chat}/s2sql/LLMSqlParserTest.java | 2 +- .../chat}/utils/S2SqlDateHelperTest.java | 11 +- headless/core/pom.xml | 66 ---------- .../core/chat/query/llm/LLMSemanticQuery.java | 8 -- .../query/rule/metric/MetricModelQuery.java | 23 ---- .../headless/core/utils/ComponentFactory.java | 37 ------ .../main/resources/META-INF/spring.factories | 2 - headless/pom.xml | 1 + headless/server/pom.xml | 5 + .../listener/FullMetaEmbeddingListener.java | 4 +- .../listener/SchemaDictUpdateListener.java | 4 +- .../repository/ChatContextRepository.java | 2 +- .../impl/ChatContextRepositoryImpl.java | 2 +- .../server/processor/ParseInfoProcessor.java | 6 +- .../server/processor/ResultProcessor.java | 4 +- .../server/processor/SqlInfoProcessor.java | 10 +- .../server/service/ChatContextService.java | 2 +- .../server/service/WorkflowService.java | 4 +- .../service/impl/ChatContextServiceImpl.java | 2 +- .../service/impl/ChatQueryServiceImpl.java | 24 ++-- .../service/impl/DictTaskServiceImpl.java | 6 +- .../server/service/impl/DictWordService.java | 6 +- .../impl/MetaDiscoveryServiceImpl.java | 2 +- .../service/impl/SearchServiceImpl.java | 20 +-- .../server/service/impl/SemanticService.java | 2 +- .../service/impl/WorkflowServiceImpl.java | 14 +- .../server/utils/ComponentFactory.java | 6 +- .../main/resources/META-INF/spring.factories | 57 ++++++--- .../tencent/supersonic/chat/MetricTest.java | 8 +- .../supersonic/chat/MultiTurnsTest.java | 2 +- .../com/tencent/supersonic/chat/TagTest.java | 2 +- .../supersonic/evaluation/Text2SQLEval.java | 1 - .../supersonic/headless/ExplainTest.java | 2 +- .../test/resources/META-INF/spring.factories | 30 ++--- 158 files changed, 771 insertions(+), 692 deletions(-) create mode 100644 headless/chat/pom.xml rename headless/{core/src/main/java/com/tencent/supersonic/headless/core/pojo => chat/src/main/java/com/tencent/supersonic/headless/chat}/ChatContext.java (84%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core/pojo => chat/src/main/java/com/tencent/supersonic/headless/chat}/QueryContext.java (88%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/corrector/AggCorrector.java (88%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/corrector/BaseSemanticCorrector.java (98%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/corrector/GrammarCorrector.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/corrector/GroupByCorrector.java (96%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/corrector/HavingCorrector.java (95%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/corrector/SchemaCorrector.java (86%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/corrector/SelectCorrector.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/corrector/SemanticCorrector.java (72%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/corrector/TimeCorrector.java (96%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/corrector/WhereCorrector.java (97%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/DataSetInfoStat.java (84%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/DatabaseMapResult.java (92%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/DictUpdateMode.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/DictWord.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/DictionaryAttributeUtil.java (96%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/EmbeddingResult.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/HadoopFileIOAdapter.java (93%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/HanlpMapResult.java (94%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/KnowledgeBaseService.java (95%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/MapResult.java (76%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/MetaEmbeddingService.java (96%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/MultiCustomDictionary.java (94%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/SearchService.java (98%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/builder/BaseWordBuilder.java (88%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/builder/BaseWordWithAliasBuilder.java (85%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/builder/DimensionWordBuilder.java (92%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/builder/EntityWordBuilder.java (90%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/builder/MetricWordBuilder.java (92%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/builder/ModelWordBuilder.java (89%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/builder/TermWordBuilder.java (92%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/builder/ValueWordBuilder.java (89%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/builder/WordBuilderFactory.java (92%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core/config => chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file}/ChatLocalFileConfig.java (87%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge}/file/FileHandler.java (94%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge}/file/FileHandlerImpl.java (98%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge}/file/LocalFileConfig.java (87%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/helper/FileHelper.java (78%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/helper/HanlpHelper.java (94%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/helper/HdfsFileHelper.java (82%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/knowledge/helper/NatureHelper.java (98%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/BaseMapper.java (98%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/BaseMatchStrategy.java (96%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/DatabaseMatchStrategy.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/EmbeddingMapper.java (86%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/EmbeddingMatchStrategy.java (87%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/EntityMapper.java (96%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/HanlpDictMatchStrategy.java (85%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/KeywordMapper.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core/config => chat/src/main/java/com/tencent/supersonic/headless/chat/mapper}/MapperConfig.java (99%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/MapperHelper.java (94%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/MatchStrategy.java (76%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/MatchText.java (92%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/ModelWithSemanticType.java (88%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/QueryFilterMapper.java (95%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/SchemaMapper.java (67%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/mapper/SearchMatchStrategy.java (90%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core/config => chat/src/main/java/com/tencent/supersonic/headless/chat/parser}/ParserConfig.java (98%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/QueryTypeParser.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/SatisfactionChecker.java (80%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/SemanticParser.java (63%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/DataSetMatchResult.java (67%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/DataSetResolver.java (52%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/Exemplar.java (81%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/ExemplarManager.java (98%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/HeuristicDataSetResolver.java (97%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/InputFormat.java (95%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/JavaLLMProxy.java (73%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core/config => chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm}/LLMParserConfig.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/LLMProxy.java (53%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/LLMRequestService.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/LLMResponseService.java (80%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/LLMSqlParser.java (85%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/OnePassSCSqlGenStrategy.java (95%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/OutputFormat.java (96%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/ParseResult.java (54%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/PromptHelper.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/PythonLLMProxy.java (89%) rename headless/{server/src/main/java/com/tencent/supersonic/headless/server/listener => chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm}/SqlEmbeddingListener.java (76%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/SqlGenStrategy.java (81%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/SqlGenStrategyFactory.java (79%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/llm/TwoPassSCSqlGenStrategy.java (93%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/rule/AggregateTypeParser.java (70%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/rule/ContextInheritParser.java (87%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/rule/RuleSqlParser.java (81%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/parser/rule/TimeRangeParser.java (93%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/BaseSemanticQuery.java (93%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/QueryManager.java (87%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/SemanticQuery.java (92%) create mode 100644 headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/LLMSemanticQuery.java rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/llm/s2sql/LLMReq.java (96%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/llm/s2sql/LLMResp.java (85%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/llm/s2sql/LLMSqlQuery.java (79%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/llm/s2sql/LLMSqlResp.java (82%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/QueryMatchOption.java (95%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/QueryMatcher.java (98%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/RuleSemanticQuery.java (96%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/detail/DetailFilterQuery.java (64%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/detail/DetailIdQuery.java (61%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/detail/DetailListQuery.java (94%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/detail/DetailSemanticQuery.java (79%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/metric/MetricFilterQuery.java (91%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/metric/MetricGroupByQuery.java (61%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/metric/MetricIdQuery.java (91%) create mode 100644 headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricModelQuery.java rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/metric/MetricSemanticQuery.java (83%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless}/chat/query/rule/metric/MetricTopNQuery.java (77%) create mode 100644 headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/ComponentFactory.java rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless/chat}/utils/QueryReqBuilder.java (98%) rename headless/{core/src/main/java/com/tencent/supersonic/headless/core => chat/src/main/java/com/tencent/supersonic/headless/chat}/utils/S2SqlDateHelper.java (96%) rename headless/{core/src/test/java/com/tencent/supersonic/chat/core => chat/src/test/java/com/tencent/supersonic/headless/chat}/corrector/AggCorrectorTest.java (89%) rename headless/{core/src/test/java/com/tencent/supersonic/chat/core => chat/src/test/java/com/tencent/supersonic/headless/chat}/corrector/SchemaCorrectorTest.java (83%) rename headless/{core/src/test/java/com/tencent/supersonic/chat/core => chat/src/test/java/com/tencent/supersonic/headless/chat}/corrector/TimeCorrectorTest.java (95%) rename headless/{core/src/test/java/com/tencent/supersonic/chat/core => chat/src/test/java/com/tencent/supersonic/headless/chat}/mapper/LoadRemoveServiceTest.java (85%) rename headless/{core/src/test/java/com/tencent/supersonic/chat/core/parser/aggregate => chat/src/test/java/com/tencent/supersonic/headless/chat/parser}/AggregateTypeParserTest.java (90%) rename headless/{core/src/test/java/com/tencent/supersonic/chat/core => chat/src/test/java/com/tencent/supersonic/headless/chat}/s2sql/LLMResponseServiceTest.java (87%) rename headless/{core/src/test/java/com/tencent/supersonic/chat/core => chat/src/test/java/com/tencent/supersonic/headless/chat}/s2sql/LLMSqlParserTest.java (97%) rename headless/{core/src/test/java/com/tencent/supersonic/chat/core => chat/src/test/java/com/tencent/supersonic/headless/chat}/utils/S2SqlDateHelperTest.java (95%) delete mode 100644 headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/LLMSemanticQuery.java delete mode 100644 headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricModelQuery.java delete mode 100644 headless/core/src/main/resources/META-INF/spring.factories diff --git a/assembly/build/build.xml b/assembly/build/build.xml index 88fd3ec99..631ad2a28 100644 --- a/assembly/build/build.xml +++ b/assembly/build/build.xml @@ -28,6 +28,10 @@ ${project.basedir}/../../assembly/bin + + supersonic-build.sh + supersonic-build.bat + bin 0777 0755 diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/ChatContextRepository.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/ChatContextRepository.java index 6417194b8..501ae3499 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/ChatContextRepository.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/ChatContextRepository.java @@ -1,6 +1,6 @@ package com.tencent.supersonic.chat.server.persistence.repository; -import com.tencent.supersonic.headless.core.pojo.ChatContext; +import com.tencent.supersonic.headless.chat.ChatContext; public interface ChatContextRepository { diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/plugin/recognize/embedding/EmbeddingRecallRecognizer.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/plugin/recognize/embedding/EmbeddingRecallRecognizer.java index ada94dd44..473cadeee 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/plugin/recognize/embedding/EmbeddingRecallRecognizer.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/plugin/recognize/embedding/EmbeddingRecallRecognizer.java @@ -11,8 +11,8 @@ import com.tencent.supersonic.common.config.EmbeddingConfig; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.embedding.Retrieval; import com.tencent.supersonic.common.util.embedding.RetrieveQueryResult; -import com.tencent.supersonic.headless.core.chat.parser.llm.PythonLLMProxy; -import com.tencent.supersonic.headless.core.utils.ComponentFactory; +import com.tencent.supersonic.headless.chat.utils.ComponentFactory; +import com.tencent.supersonic.headless.chat.parser.llm.PythonLLMProxy; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRatioProcessor.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRatioProcessor.java index 25538d7ab..c5261eda4 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRatioProcessor.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRatioProcessor.java @@ -29,7 +29,7 @@ import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq; import com.tencent.supersonic.headless.api.pojo.response.QueryResult; import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; import com.tencent.supersonic.headless.core.config.AggregatorConfig; -import com.tencent.supersonic.headless.core.utils.QueryReqBuilder; +import com.tencent.supersonic.headless.chat.utils.QueryReqBuilder; import com.tencent.supersonic.headless.server.service.QueryService; import java.text.DecimalFormat; import java.time.DayOfWeek; diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRecommendProcessor.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRecommendProcessor.java index a97e6cf03..29517c7e9 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRecommendProcessor.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/execute/MetricRecommendProcessor.java @@ -12,7 +12,7 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.response.QueryResult; -import com.tencent.supersonic.headless.core.chat.knowledge.MetaEmbeddingService; +import com.tencent.supersonic.headless.chat.knowledge.MetaEmbeddingService; import org.springframework.util.CollectionUtils; import java.util.Collections; diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/parse/EntityInfoProcessor.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/parse/EntityInfoProcessor.java index a2bf87986..a7ca095d4 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/parse/EntityInfoProcessor.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/parse/EntityInfoProcessor.java @@ -6,7 +6,7 @@ import com.tencent.supersonic.headless.api.pojo.DataSetSchema; import com.tencent.supersonic.headless.api.pojo.EntityInfo; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; -import com.tencent.supersonic.headless.core.chat.query.QueryManager; +import com.tencent.supersonic.headless.chat.query.QueryManager; import com.tencent.supersonic.headless.server.service.impl.SemanticService; import org.springframework.util.CollectionUtils; diff --git a/headless/chat/pom.xml b/headless/chat/pom.xml new file mode 100644 index 000000000..2a25fdd6b --- /dev/null +++ b/headless/chat/pom.xml @@ -0,0 +1,121 @@ + + + 4.0.0 + + com.tencent.supersonic + headless + ${revision} + + + headless-chat + + + 8 + 8 + UTF-8 + + + + + org.projectlombok + lombok + ${lombok.version} + provided + + + junit + junit + test + + + org.junit.jupiter + junit-jupiter + test + + + org.springframework + spring-context + + + org.springframework.boot + spring-boot-starter-web + + + com.tencent.supersonic + headless-api + ${project.version} + + + org.springframework + spring-test + test + + + com.github.xkzhangsan + xk-time + ${xk.time.version} + + + org.apache.hadoop + hadoop-common + ${hadoop.version} + + + org.slf4j + slf4j-log4j12 + + + log4j + log4j + + + org.apache.zookeeper + zookeeper + + + org.apache.curator + * + + + javax.servlet + servlet-api + + + + + org.apache.hadoop + hadoop-hdfs + ${hadoop.version} + + + org.slf4j + slf4j-log4j12 + + + log4j + log4j + + + org.apache.zookeeper + zookeeper + + + org.apache.curator + * + + + javax.servlet + servlet-api + + + + + org.mockito + mockito-core + test + + + + \ No newline at end of file diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/ChatContext.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/ChatContext.java similarity index 84% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/ChatContext.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/ChatContext.java index f9cde618b..505e08c72 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/ChatContext.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/ChatContext.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.pojo; +package com.tencent.supersonic.headless.chat; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryContext.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/QueryContext.java similarity index 88% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryContext.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/QueryContext.java index 20a871ead..0a6ce24cc 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryContext.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/QueryContext.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.pojo; +package com.tencent.supersonic.headless.chat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.tencent.supersonic.auth.api.authentication.pojo.User; @@ -11,8 +11,8 @@ import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.enums.MapModeEnum; import com.tencent.supersonic.headless.api.pojo.enums.WorkflowState; import com.tencent.supersonic.headless.api.pojo.request.QueryFilters; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; -import com.tencent.supersonic.headless.core.config.ParserConfig; +import com.tencent.supersonic.headless.chat.parser.ParserConfig; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -26,8 +26,6 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import static com.tencent.supersonic.headless.core.config.ParserConfig.PARSER_SHOW_COUNT; - @Data @Builder @NoArgsConstructor @@ -54,7 +52,7 @@ public class QueryContext { public List getCandidateQueries() { ParserConfig parserConfig = ContextUtils.getBean(ParserConfig.class); - int parseShowCount = Integer.valueOf(parserConfig.getParameterValue(PARSER_SHOW_COUNT)); + int parseShowCount = Integer.valueOf(parserConfig.getParameterValue(ParserConfig.PARSER_SHOW_COUNT)); candidateQueries = candidateQueries.stream() .sorted(Comparator.comparing(semanticQuery -> semanticQuery.getParseInfo().getScore(), Comparator.reverseOrder())) diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/AggCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/AggCorrector.java similarity index 88% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/AggCorrector.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/AggCorrector.java index 20e70ab6c..9583444c4 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/AggCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/AggCorrector.java @@ -1,9 +1,9 @@ -package com.tencent.supersonic.headless.core.chat.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.common.util.jsqlparser.SqlSelectHelper; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/BaseSemanticCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/BaseSemanticCorrector.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/BaseSemanticCorrector.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/BaseSemanticCorrector.java index 64d985872..0802ad978 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/BaseSemanticCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/BaseSemanticCorrector.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; @@ -8,7 +8,7 @@ import com.tencent.supersonic.common.util.jsqlparser.SqlSelectHelper; import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/GrammarCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/GrammarCorrector.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/GrammarCorrector.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/GrammarCorrector.java index ceb8caec2..1ccaee9bb 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/GrammarCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/GrammarCorrector.java @@ -1,8 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.common.util.jsqlparser.SqlRemoveHelper; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/GroupByCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/GroupByCorrector.java similarity index 96% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/GroupByCorrector.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/GroupByCorrector.java index 3eff0e3cb..87c779596 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/GroupByCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/GroupByCorrector.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; import com.tencent.supersonic.common.util.ContextUtils; @@ -7,7 +7,7 @@ import com.tencent.supersonic.common.util.jsqlparser.SqlSelectHelper; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.SqlInfo; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.core.env.Environment; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/HavingCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/HavingCorrector.java similarity index 95% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/HavingCorrector.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/HavingCorrector.java index 3a8b90efa..19e22c780 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/HavingCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/HavingCorrector.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.jsqlparser.SqlAddHelper; @@ -6,7 +6,7 @@ import com.tencent.supersonic.common.util.jsqlparser.SqlSelectFunctionHelper; import com.tencent.supersonic.common.util.jsqlparser.SqlSelectHelper; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import net.sf.jsqlparser.expression.Expression; import org.apache.commons.lang3.StringUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/SchemaCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/SchemaCorrector.java similarity index 86% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/SchemaCorrector.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/SchemaCorrector.java index 73349199b..6ac2f799a 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/SchemaCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/SchemaCorrector.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum; @@ -13,9 +13,9 @@ import com.tencent.supersonic.common.util.jsqlparser.SqlSelectHelper; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.SqlInfo; -import com.tencent.supersonic.headless.core.chat.parser.llm.ParseResult; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq.ElementValue; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.parser.llm.ParseResult; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; @@ -68,14 +68,14 @@ public class SchemaCorrector extends BaseSemanticCorrector { } private void updateFieldNameByLinkingValue(SemanticParseInfo semanticParseInfo) { - List linking = getLinkingValues(semanticParseInfo); + List linking = getLinkingValues(semanticParseInfo); if (CollectionUtils.isEmpty(linking)) { return; } Map> fieldValueToFieldNames = linking.stream().collect( - Collectors.groupingBy(ElementValue::getFieldValue, - Collectors.mapping(ElementValue::getFieldName, Collectors.toSet()))); + Collectors.groupingBy(LLMReq.ElementValue::getFieldValue, + Collectors.mapping(LLMReq.ElementValue::getFieldName, Collectors.toSet()))); SqlInfo sqlInfo = semanticParseInfo.getSqlInfo(); @@ -83,7 +83,7 @@ public class SchemaCorrector extends BaseSemanticCorrector { sqlInfo.setCorrectS2SQL(sql); } - private List getLinkingValues(SemanticParseInfo semanticParseInfo) { + private List getLinkingValues(SemanticParseInfo semanticParseInfo) { Object context = semanticParseInfo.getProperties().get(Constants.CONTEXT); if (Objects.isNull(context)) { return null; @@ -97,14 +97,14 @@ public class SchemaCorrector extends BaseSemanticCorrector { } private void updateFieldValueByLinkingValue(SemanticParseInfo semanticParseInfo) { - List linking = getLinkingValues(semanticParseInfo); + List linking = getLinkingValues(semanticParseInfo); if (CollectionUtils.isEmpty(linking)) { return; } Map> filedNameToValueMap = linking.stream().collect( - Collectors.groupingBy(ElementValue::getFieldName, - Collectors.mapping(ElementValue::getFieldValue, Collectors.toMap( + Collectors.groupingBy(LLMReq.ElementValue::getFieldName, + Collectors.mapping(LLMReq.ElementValue::getFieldValue, Collectors.toMap( oldValue -> oldValue, newValue -> newValue, (existingValue, newValue) -> newValue) @@ -122,7 +122,7 @@ public class SchemaCorrector extends BaseSemanticCorrector { if (CollectionUtils.isEmpty(whereExpressionList)) { return; } - List linkingValues = getLinkingValues(semanticParseInfo); + List linkingValues = getLinkingValues(semanticParseInfo); SemanticSchema semanticSchema = queryContext.getSemanticSchema(); Set dimensions = getDimensions(semanticParseInfo.getDataSetId(), semanticSchema); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/SelectCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/SelectCorrector.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/SelectCorrector.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/SelectCorrector.java index 8f43e42bd..d763ad18a 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/SelectCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/SelectCorrector.java @@ -1,10 +1,10 @@ -package com.tencent.supersonic.headless.core.chat.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.common.util.jsqlparser.SqlReplaceHelper; import com.tencent.supersonic.common.util.jsqlparser.SqlSelectHelper; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/SemanticCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/SemanticCorrector.java similarity index 72% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/SemanticCorrector.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/SemanticCorrector.java index 49321fc92..212ed0a72 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/SemanticCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/SemanticCorrector.java @@ -1,8 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; /** * A semantic corrector checks validity of extracted semantic information and diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/TimeCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/TimeCorrector.java similarity index 96% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/TimeCorrector.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/TimeCorrector.java index 50a769f3c..5275edcac 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/TimeCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/TimeCorrector.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; @@ -10,8 +10,8 @@ import com.tencent.supersonic.common.util.jsqlparser.SqlSelectHelper; import com.tencent.supersonic.common.util.jsqlparser.SqlRemoveHelper; import com.tencent.supersonic.common.util.jsqlparser.DateVisitor.DateBoundInfo; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.utils.S2SqlDateHelper; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.utils.S2SqlDateHelper; import lombok.extern.slf4j.Slf4j; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.expression.Expression; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/WhereCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/WhereCorrector.java similarity index 97% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/WhereCorrector.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/WhereCorrector.java index 5e5a3d489..f8a7c949e 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/corrector/WhereCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/WhereCorrector.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.common.pojo.Constants; @@ -10,7 +10,7 @@ import com.tencent.supersonic.headless.api.pojo.SchemaValueMap; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.request.QueryFilters; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.expression.Expression; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DataSetInfoStat.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DataSetInfoStat.java similarity index 84% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DataSetInfoStat.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DataSetInfoStat.java index 6d8d16625..a24c2ea69 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DataSetInfoStat.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DataSetInfoStat.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import lombok.Builder; import lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DatabaseMapResult.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DatabaseMapResult.java similarity index 92% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DatabaseMapResult.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DatabaseMapResult.java index f47e311cf..60d87d5b1 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DatabaseMapResult.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DatabaseMapResult.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import com.google.common.base.Objects; import com.tencent.supersonic.headless.api.pojo.SchemaElement; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DictUpdateMode.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DictUpdateMode.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DictUpdateMode.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DictUpdateMode.java index 52eaa2215..cd6c74be3 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DictUpdateMode.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DictUpdateMode.java @@ -1,5 +1,5 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; public enum DictUpdateMode { diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DictWord.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DictWord.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DictWord.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DictWord.java index 3a59eab41..4b9a7bd0e 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DictWord.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DictWord.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import java.util.Objects; import lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DictionaryAttributeUtil.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DictionaryAttributeUtil.java similarity index 96% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DictionaryAttributeUtil.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DictionaryAttributeUtil.java index 8131a7ef4..f12aa8d0c 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/DictionaryAttributeUtil.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/DictionaryAttributeUtil.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import com.hankcs.hanlp.corpus.tag.Nature; import com.hankcs.hanlp.dictionary.CoreDictionary; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/EmbeddingResult.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/EmbeddingResult.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/EmbeddingResult.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/EmbeddingResult.java index 1994b822f..04486b6b0 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/EmbeddingResult.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/EmbeddingResult.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import com.google.common.base.Objects; import java.util.Map; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/HadoopFileIOAdapter.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/HadoopFileIOAdapter.java similarity index 93% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/HadoopFileIOAdapter.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/HadoopFileIOAdapter.java index e1a0d300d..3b24e16eb 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/HadoopFileIOAdapter.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/HadoopFileIOAdapter.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import com.hankcs.hanlp.corpus.io.IIOAdapter; import java.io.IOException; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/HanlpMapResult.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/HanlpMapResult.java similarity index 94% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/HanlpMapResult.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/HanlpMapResult.java index c30a57743..301f95d34 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/HanlpMapResult.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/HanlpMapResult.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import com.google.common.base.Objects; import java.util.List; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/KnowledgeBaseService.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/KnowledgeBaseService.java similarity index 95% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/KnowledgeBaseService.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/KnowledgeBaseService.java index 7602f1839..1f560b335 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/KnowledgeBaseService.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/KnowledgeBaseService.java @@ -1,8 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/MapResult.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java similarity index 76% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/MapResult.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java index ddbcd0fa1..6c4fb6e72 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/MapResult.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import java.io.Serializable; import lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/MetaEmbeddingService.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java similarity index 96% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/MetaEmbeddingService.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java index 88db4d882..6e4870430 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/MetaEmbeddingService.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import com.tencent.supersonic.common.config.EmbeddingConfig; import com.tencent.supersonic.common.pojo.Constants; @@ -7,7 +7,7 @@ import com.tencent.supersonic.common.util.embedding.Retrieval; import com.tencent.supersonic.common.util.embedding.RetrieveQuery; import com.tencent.supersonic.common.util.embedding.RetrieveQueryResult; import com.tencent.supersonic.common.util.embedding.S2EmbeddingStore; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.NatureHelper; +import com.tencent.supersonic.headless.chat.knowledge.helper.NatureHelper; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/MultiCustomDictionary.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MultiCustomDictionary.java similarity index 94% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/MultiCustomDictionary.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MultiCustomDictionary.java index 33ff1c1f4..004fbca3b 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/MultiCustomDictionary.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MultiCustomDictionary.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import static com.hankcs.hanlp.utility.Predefine.logger; @@ -13,9 +13,8 @@ import com.hankcs.hanlp.dictionary.DynamicCustomDictionary; import com.hankcs.hanlp.dictionary.other.CharTable; import com.hankcs.hanlp.seg.common.Term; import com.hankcs.hanlp.utility.LexiconUtility; -import com.hankcs.hanlp.utility.Predefine; import com.hankcs.hanlp.utility.TextUtility; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper; import java.io.BufferedOutputStream; import java.io.BufferedReader; @@ -146,10 +145,10 @@ public class MultiCustomDictionary extends DynamicCustomDictionary { this.path = path; long start = System.currentTimeMillis(); if (!this.loadMainDictionary(path[0])) { - Predefine.logger.warning("自定义词典" + Arrays.toString(path) + "加载失败"); + logger.warning("自定义词典" + Arrays.toString(path) + "加载失败"); return false; } else { - Predefine.logger.info( + logger.info( "自定义词典加载成功:" + this.dat.size() + "个词条,耗时" + (System.currentTimeMillis() - start) + "ms"); this.path = path; return true; @@ -168,7 +167,7 @@ public class MultiCustomDictionary extends DynamicCustomDictionary { public static boolean loadMainDictionary(String mainPath, String[] path, DoubleArrayTrie dat, boolean isCache, boolean addToSuggestTrie) { - Predefine.logger.info("自定义词典开始加载:" + mainPath); + logger.info("自定义词典开始加载:" + mainPath); if (loadDat(mainPath, dat)) { return true; } else { @@ -188,20 +187,20 @@ public class MultiCustomDictionary extends DynamicCustomDictionary { try { defaultNature = LexiconUtility.convertStringToNature(nature, customNatureCollector); } catch (Exception var16) { - Predefine.logger.severe("配置文件【" + p + "】写错了!" + var16); + logger.severe("配置文件【" + p + "】写错了!" + var16); continue; } } - Predefine.logger.info("以默认词性[" + defaultNature + "]加载自定义词典" + p + "中……"); + logger.info("以默认词性[" + defaultNature + "]加载自定义词典" + p + "中……"); boolean success = load(p, defaultNature, map, customNatureCollector, addToSuggestTrie); if (!success) { - Predefine.logger.warning("失败:" + p); + logger.warning("失败:" + p); } } if (map.size() == 0) { - Predefine.logger.warning("没有加载到任何词条"); + logger.warning("没有加载到任何词条"); map.put("未##它", null); } @@ -264,7 +263,8 @@ public class MultiCustomDictionary extends DynamicCustomDictionary { public static boolean loadDat(String path, String[] customDicPath, DoubleArrayTrie dat) { try { - if (HanLP.Config.CustomDictionaryAutoRefreshCache && isDicNeedUpdate(path, customDicPath)) { + if (HanLP.Config.CustomDictionaryAutoRefreshCache + && DynamicCustomDictionary.isDicNeedUpdate(path, customDicPath)) { return false; } else { ByteArray byteArray = ByteArray.createByteArray(path + ".bin"); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/SearchService.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/SearchService.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/SearchService.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/SearchService.java index 6ef88e8e1..cd269d94c 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/SearchService.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/SearchService.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge; +package com.tencent.supersonic.headless.chat.knowledge; import com.hankcs.hanlp.collection.trie.bintrie.BaseNode; import com.hankcs.hanlp.collection.trie.bintrie.BinTrie; @@ -7,7 +7,7 @@ import com.hankcs.hanlp.dictionary.CoreDictionary; import com.hankcs.hanlp.seg.common.Term; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.request.DimensionValueReq; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.NatureHelper; +import com.tencent.supersonic.headless.chat.knowledge.helper.NatureHelper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/BaseWordBuilder.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/BaseWordBuilder.java similarity index 88% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/BaseWordBuilder.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/BaseWordBuilder.java index 47d6be2df..517c0621f 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/BaseWordBuilder.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/BaseWordBuilder.java @@ -1,7 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.builder; +package com.tencent.supersonic.headless.chat.knowledge.builder; import com.tencent.supersonic.headless.api.pojo.SchemaElement; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; + import java.util.ArrayList; import java.util.List; import lombok.extern.slf4j.Slf4j; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/BaseWordWithAliasBuilder.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/BaseWordWithAliasBuilder.java similarity index 85% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/BaseWordWithAliasBuilder.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/BaseWordWithAliasBuilder.java index 50c1cb638..c53ee7576 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/BaseWordWithAliasBuilder.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/BaseWordWithAliasBuilder.java @@ -1,7 +1,7 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.builder; +package com.tencent.supersonic.headless.chat.knowledge.builder; import com.tencent.supersonic.headless.api.pojo.SchemaElement; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; import java.util.ArrayList; import java.util.List; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/DimensionWordBuilder.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/DimensionWordBuilder.java similarity index 92% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/DimensionWordBuilder.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/DimensionWordBuilder.java index 172d00461..56d10d6b2 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/DimensionWordBuilder.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/DimensionWordBuilder.java @@ -1,9 +1,10 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.builder; +package com.tencent.supersonic.headless.chat.knowledge.builder; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.SchemaElement; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; + import java.util.List; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/EntityWordBuilder.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/EntityWordBuilder.java similarity index 90% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/EntityWordBuilder.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/EntityWordBuilder.java index 6fc57e440..85003d3d3 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/EntityWordBuilder.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/EntityWordBuilder.java @@ -1,10 +1,11 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.builder; +package com.tencent.supersonic.headless.chat.knowledge.builder; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.SchemaElement; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; + import java.util.List; import java.util.Objects; import lombok.extern.slf4j.Slf4j; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/MetricWordBuilder.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/MetricWordBuilder.java similarity index 92% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/MetricWordBuilder.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/MetricWordBuilder.java index 811c58524..fbfc1cd34 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/MetricWordBuilder.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/MetricWordBuilder.java @@ -1,9 +1,10 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.builder; +package com.tencent.supersonic.headless.chat.knowledge.builder; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.SchemaElement; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; + import java.util.List; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/ModelWordBuilder.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/ModelWordBuilder.java similarity index 89% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/ModelWordBuilder.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/ModelWordBuilder.java index 40a66c16d..2292de487 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/ModelWordBuilder.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/ModelWordBuilder.java @@ -1,9 +1,10 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.builder; +package com.tencent.supersonic.headless.chat.knowledge.builder; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.SchemaElement; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; + import java.util.List; import java.util.Objects; import lombok.extern.slf4j.Slf4j; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/TermWordBuilder.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/TermWordBuilder.java similarity index 92% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/TermWordBuilder.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/TermWordBuilder.java index 45983b6f2..02e7ebd76 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/TermWordBuilder.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/TermWordBuilder.java @@ -1,9 +1,9 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.builder; +package com.tencent.supersonic.headless.chat.knowledge.builder; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.SchemaElement; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/ValueWordBuilder.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/ValueWordBuilder.java similarity index 89% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/ValueWordBuilder.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/ValueWordBuilder.java index 1e730e395..983f72e8c 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/ValueWordBuilder.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/ValueWordBuilder.java @@ -1,10 +1,11 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.builder; +package com.tencent.supersonic.headless.chat.knowledge.builder; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.SchemaElement; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; + import java.util.List; import java.util.Objects; import lombok.extern.slf4j.Slf4j; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/WordBuilderFactory.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/WordBuilderFactory.java similarity index 92% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/WordBuilderFactory.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/WordBuilderFactory.java index 62fee712d..7806463a3 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/builder/WordBuilderFactory.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/builder/WordBuilderFactory.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.builder; +package com.tencent.supersonic.headless.chat.knowledge.builder; import com.tencent.supersonic.common.pojo.enums.DictWordType; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/ChatLocalFileConfig.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/ChatLocalFileConfig.java similarity index 87% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/config/ChatLocalFileConfig.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/ChatLocalFileConfig.java index f49f10425..a1a0b26e0 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/ChatLocalFileConfig.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/ChatLocalFileConfig.java @@ -1,6 +1,6 @@ -package com.tencent.supersonic.headless.core.config; +package com.tencent.supersonic.headless.chat.knowledge.file; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/file/FileHandler.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandler.java similarity index 94% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/file/FileHandler.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandler.java index 3242e0cf2..bd2d71840 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/file/FileHandler.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandler.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.file; +package com.tencent.supersonic.headless.chat.knowledge.file; import java.util.List; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/file/FileHandlerImpl.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/file/FileHandlerImpl.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java index a25ce17fa..8f7640c44 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/file/FileHandlerImpl.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.file; +package com.tencent.supersonic.headless.chat.knowledge.file; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/file/LocalFileConfig.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/LocalFileConfig.java similarity index 87% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/file/LocalFileConfig.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/LocalFileConfig.java index 2eef99263..b4e512ca2 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/file/LocalFileConfig.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/LocalFileConfig.java @@ -1,6 +1,6 @@ -package com.tencent.supersonic.headless.core.file; +package com.tencent.supersonic.headless.chat.knowledge.file; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/FileHelper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/FileHelper.java similarity index 78% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/FileHelper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/FileHelper.java index 260b05ad1..eae588614 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/FileHelper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/FileHelper.java @@ -1,7 +1,6 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.helper; - -import static com.hankcs.hanlp.HanLP.Config.CustomDictionaryPath; +package com.tencent.supersonic.headless.chat.knowledge.helper; +import com.hankcs.hanlp.HanLP.Config; import com.hankcs.hanlp.dictionary.DynamicCustomDictionary; import java.io.File; @@ -56,7 +55,7 @@ public class FileHelper { * @param customDictionary */ public static void resetCustomPath(DynamicCustomDictionary customDictionary) { - String[] path = CustomDictionaryPath; + String[] path = Config.CustomDictionaryPath; String customPath = getCustomPath(path); File customFolder = new File(customPath); @@ -72,11 +71,11 @@ public class FileHelper { } log.debug("CustomDictionaryPath:{}", fileList); - CustomDictionaryPath = fileList.toArray(new String[0]); - customDictionary.path = (CustomDictionaryPath == null || CustomDictionaryPath.length == 0) ? path - : CustomDictionaryPath; - if (CustomDictionaryPath == null || CustomDictionaryPath.length == 0) { - CustomDictionaryPath = path; + Config.CustomDictionaryPath = fileList.toArray(new String[0]); + customDictionary.path = (Config.CustomDictionaryPath == null || Config.CustomDictionaryPath.length == 0) ? path + : Config.CustomDictionaryPath; + if (Config.CustomDictionaryPath == null || Config.CustomDictionaryPath.length == 0) { + Config.CustomDictionaryPath = path; } } } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/HanlpHelper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/HanlpHelper.java similarity index 94% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/HanlpHelper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/HanlpHelper.java index 006cf42fe..20f2e39cf 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/HanlpHelper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/HanlpHelper.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.helper; +package com.tencent.supersonic.headless.chat.knowledge.helper; import com.google.common.collect.Lists; import com.hankcs.hanlp.HanLP; @@ -9,11 +9,11 @@ import com.hankcs.hanlp.seg.Segment; import com.hankcs.hanlp.seg.common.Term; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; -import com.tencent.supersonic.headless.core.chat.knowledge.HadoopFileIOAdapter; -import com.tencent.supersonic.headless.core.chat.knowledge.MapResult; -import com.tencent.supersonic.headless.core.chat.knowledge.MultiCustomDictionary; -import com.tencent.supersonic.headless.core.chat.knowledge.SearchService; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.HadoopFileIOAdapter; +import com.tencent.supersonic.headless.chat.knowledge.MapResult; +import com.tencent.supersonic.headless.chat.knowledge.MultiCustomDictionary; +import com.tencent.supersonic.headless.chat.knowledge.SearchService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -30,8 +30,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static com.hankcs.hanlp.HanLP.Config.CustomDictionaryPath; - /** * HanLP helper */ @@ -74,7 +72,7 @@ public class HanlpHelper { if (CustomDictionary == null) { synchronized (HanlpHelper.class) { if (CustomDictionary == null) { - CustomDictionary = new MultiCustomDictionary(CustomDictionaryPath); + CustomDictionary = new MultiCustomDictionary(HanLP.Config.CustomDictionaryPath); } } } @@ -90,7 +88,7 @@ public class HanlpHelper { final long startTime = System.currentTimeMillis(); - if (CustomDictionaryPath == null || CustomDictionaryPath.length == 0) { + if (HanLP.Config.CustomDictionaryPath == null || HanLP.Config.CustomDictionaryPath.length == 0) { return false; } if (HanLP.Config.IOAdapter instanceof HadoopFileIOAdapter) { diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/HdfsFileHelper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/HdfsFileHelper.java similarity index 82% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/HdfsFileHelper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/HdfsFileHelper.java index 829553d66..eb9192717 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/HdfsFileHelper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/HdfsFileHelper.java @@ -1,8 +1,6 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.helper; +package com.tencent.supersonic.headless.chat.knowledge.helper; -import static com.hankcs.hanlp.HanLP.Config.CustomDictionaryPath; - -import com.hankcs.hanlp.HanLP; +import com.hankcs.hanlp.HanLP.Config; import com.hankcs.hanlp.dictionary.DynamicCustomDictionary; import com.hankcs.hanlp.utility.Predefine; import java.io.IOException; @@ -57,7 +55,7 @@ public class HdfsFileHelper { * @throws IOException */ public static void resetCustomPath(DynamicCustomDictionary customDictionary) throws IOException { - String[] path = HanLP.Config.CustomDictionaryPath; + String[] path = Config.CustomDictionaryPath; FileSystem fs = FileSystem.get(URI.create(path[0]), new Configuration()); String cacheFilePath = path[0] + Predefine.BIN_EXT; int customBase = cacheFilePath.lastIndexOf(FileHelper.FILE_SPILT); @@ -65,11 +63,11 @@ public class HdfsFileHelper { log.info("customPath:{}", customPath); List fileList = getFileList(fs, new Path(customPath)); log.info("CustomDictionaryPath:{}", fileList); - CustomDictionaryPath = fileList.toArray(new String[0]); - customDictionary.path = (CustomDictionaryPath == null || CustomDictionaryPath.length == 0) ? path - : CustomDictionaryPath; - if (CustomDictionaryPath == null || CustomDictionaryPath.length == 0) { - CustomDictionaryPath = path; + Config.CustomDictionaryPath = fileList.toArray(new String[0]); + customDictionary.path = (Config.CustomDictionaryPath == null || Config.CustomDictionaryPath.length == 0) ? path + : Config.CustomDictionaryPath; + if (Config.CustomDictionaryPath == null || Config.CustomDictionaryPath.length == 0) { + Config.CustomDictionaryPath = path; } } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/NatureHelper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/NatureHelper.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/NatureHelper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/NatureHelper.java index dbea11ec3..bfedb3229 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/knowledge/helper/NatureHelper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/helper/NatureHelper.java @@ -1,11 +1,11 @@ -package com.tencent.supersonic.headless.core.chat.knowledge.helper; +package com.tencent.supersonic.headless.chat.knowledge.helper; import com.google.common.collect.Lists; import com.hankcs.hanlp.corpus.tag.Nature; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.chat.knowledge.DataSetInfoStat; +import com.tencent.supersonic.headless.chat.knowledge.DataSetInfoStat; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/BaseMapper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMapper.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/BaseMapper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMapper.java index f77b18578..58f801a33 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/BaseMapper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMapper.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.tencent.supersonic.headless.api.pojo.DataSetSchema; import com.tencent.supersonic.headless.api.pojo.SchemaElement; @@ -6,7 +6,7 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SchemaMapInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/BaseMatchStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java similarity index 96% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/BaseMatchStrategy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java index 75ae4d726..c28f788a1 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/BaseMatchStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java @@ -1,11 +1,10 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.tencent.supersonic.headless.api.pojo.enums.MapModeEnum; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.config.MapperConfig; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.NatureHelper; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.knowledge.helper.NatureHelper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/DatabaseMatchStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/DatabaseMatchStrategy.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/DatabaseMatchStrategy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/DatabaseMatchStrategy.java index 3e5e6a4e0..72eff2092 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/DatabaseMatchStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/DatabaseMatchStrategy.java @@ -1,12 +1,12 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.knowledge.DatabaseMapResult; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.knowledge.DatabaseMapResult; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -20,9 +20,6 @@ import java.util.Map.Entry; import java.util.Set; import java.util.stream.Collectors; -import static com.tencent.supersonic.headless.core.config.MapperConfig.MAPPER_NAME_THRESHOLD; -import static com.tencent.supersonic.headless.core.config.MapperConfig.MAPPER_NAME_THRESHOLD_MIN; - /** * DatabaseMatchStrategy uses SQL LIKE operator to match schema elements. * It currently supports fuzzy matching against names and aliases. @@ -91,8 +88,8 @@ public class DatabaseMatchStrategy extends BaseMatchStrategy } private Double getThreshold(QueryContext queryContext) { - Double threshold = Double.valueOf(mapperConfig.getParameterValue(MAPPER_NAME_THRESHOLD)); - Double minThreshold = Double.valueOf(mapperConfig.getParameterValue(MAPPER_NAME_THRESHOLD_MIN)); + Double threshold = Double.valueOf(mapperConfig.getParameterValue(MapperConfig.MAPPER_NAME_THRESHOLD)); + Double minThreshold = Double.valueOf(mapperConfig.getParameterValue(MapperConfig.MAPPER_NAME_THRESHOLD_MIN)); Map> modelElementMatches = queryContext.getMapInfo().getDataSetElementMatches(); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/EmbeddingMapper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMapper.java similarity index 86% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/EmbeddingMapper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMapper.java index b2de65522..a972a1df5 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/EmbeddingMapper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMapper.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.tencent.supersonic.common.util.ContextUtils; @@ -7,10 +7,10 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.knowledge.EmbeddingResult; -import com.tencent.supersonic.headless.core.chat.knowledge.builder.BaseWordBuilder; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.knowledge.EmbeddingResult; +import com.tencent.supersonic.headless.chat.knowledge.builder.BaseWordBuilder; +import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import java.util.List; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/EmbeddingMatchStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMatchStrategy.java similarity index 87% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/EmbeddingMatchStrategy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMatchStrategy.java index 8bc033eb7..a4cebba9c 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/EmbeddingMatchStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMatchStrategy.java @@ -1,13 +1,13 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.util.embedding.Retrieval; import com.tencent.supersonic.common.util.embedding.RetrieveQuery; import com.tencent.supersonic.common.util.embedding.RetrieveQueryResult; -import com.tencent.supersonic.headless.core.chat.knowledge.EmbeddingResult; -import com.tencent.supersonic.headless.core.chat.knowledge.MetaEmbeddingService; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.knowledge.EmbeddingResult; +import com.tencent.supersonic.headless.chat.knowledge.MetaEmbeddingService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -21,13 +21,10 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import static com.tencent.supersonic.headless.core.config.MapperConfig.EMBEDDING_MAPPER_BATCH; -import static com.tencent.supersonic.headless.core.config.MapperConfig.EMBEDDING_MAPPER_MAX; -import static com.tencent.supersonic.headless.core.config.MapperConfig.EMBEDDING_MAPPER_MIN; -import static com.tencent.supersonic.headless.core.config.MapperConfig.EMBEDDING_MAPPER_NUMBER; -import static com.tencent.supersonic.headless.core.config.MapperConfig.EMBEDDING_MAPPER_ROUND_NUMBER; -import static com.tencent.supersonic.headless.core.config.MapperConfig.EMBEDDING_MAPPER_THRESHOLD; -import static com.tencent.supersonic.headless.core.config.MapperConfig.EMBEDDING_MAPPER_THRESHOLD_MIN; +import static com.tencent.supersonic.headless.chat.mapper.MapperConfig.EMBEDDING_MAPPER_NUMBER; +import static com.tencent.supersonic.headless.chat.mapper.MapperConfig.EMBEDDING_MAPPER_ROUND_NUMBER; +import static com.tencent.supersonic.headless.chat.mapper.MapperConfig.EMBEDDING_MAPPER_THRESHOLD; +import static com.tencent.supersonic.headless.chat.mapper.MapperConfig.EMBEDDING_MAPPER_THRESHOLD_MIN; /** * EmbeddingMatchStrategy uses vector database to perform @@ -60,9 +57,9 @@ public class EmbeddingMatchStrategy extends BaseMatchStrategy { @Override protected void detectByBatch(QueryContext queryContext, Set results, Set detectDataSetIds, Set detectSegments) { - int embedddingMapperMin = Integer.valueOf(mapperConfig.getParameterValue(EMBEDDING_MAPPER_MIN)); - int embedddingMapperMax = Integer.valueOf(mapperConfig.getParameterValue(EMBEDDING_MAPPER_MAX)); - int embeddingMapperBatch = Integer.valueOf(mapperConfig.getParameterValue(EMBEDDING_MAPPER_BATCH)); + int embedddingMapperMin = Integer.valueOf(mapperConfig.getParameterValue(MapperConfig.EMBEDDING_MAPPER_MIN)); + int embedddingMapperMax = Integer.valueOf(mapperConfig.getParameterValue(MapperConfig.EMBEDDING_MAPPER_MAX)); + int embeddingMapperBatch = Integer.valueOf(mapperConfig.getParameterValue(MapperConfig.EMBEDDING_MAPPER_BATCH)); List queryTextsList = detectSegments.stream() .map(detectSegment -> detectSegment.trim()) diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/EntityMapper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EntityMapper.java similarity index 96% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/EntityMapper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EntityMapper.java index b54744349..fd3a87a0e 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/EntityMapper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EntityMapper.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.tencent.supersonic.headless.api.pojo.DataSetSchema; import com.tencent.supersonic.headless.api.pojo.SchemaElement; @@ -6,7 +6,7 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SchemaMapInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/HanlpDictMatchStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/HanlpDictMatchStrategy.java similarity index 85% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/HanlpDictMatchStrategy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/HanlpDictMatchStrategy.java index c7e71c967..14c1f7e80 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/HanlpDictMatchStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/HanlpDictMatchStrategy.java @@ -1,10 +1,10 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.chat.knowledge.HanlpMapResult; -import com.tencent.supersonic.headless.core.chat.knowledge.KnowledgeBaseService; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.knowledge.HanlpMapResult; +import com.tencent.supersonic.headless.chat.knowledge.KnowledgeBaseService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -20,13 +20,9 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; -import static com.tencent.supersonic.headless.core.config.MapperConfig.MAPPER_DETECTION_MAX_SIZE; -import static com.tencent.supersonic.headless.core.config.MapperConfig.MAPPER_DETECTION_SIZE; -import static com.tencent.supersonic.headless.core.config.MapperConfig.MAPPER_DIMENSION_VALUE_SIZE; -import static com.tencent.supersonic.headless.core.config.MapperConfig.MAPPER_NAME_THRESHOLD; -import static com.tencent.supersonic.headless.core.config.MapperConfig.MAPPER_NAME_THRESHOLD_MIN; -import static com.tencent.supersonic.headless.core.config.MapperConfig.MAPPER_VALUE_THRESHOLD; -import static com.tencent.supersonic.headless.core.config.MapperConfig.MAPPER_VALUE_THRESHOLD_MIN; +import static com.tencent.supersonic.headless.chat.mapper.MapperConfig.MAPPER_DETECTION_MAX_SIZE; +import static com.tencent.supersonic.headless.chat.mapper.MapperConfig.MAPPER_DETECTION_SIZE; +import static com.tencent.supersonic.headless.chat.mapper.MapperConfig.MAPPER_DIMENSION_VALUE_SIZE; /** * HanlpDictMatchStrategy uses HanLP to @@ -42,7 +38,7 @@ public class HanlpDictMatchStrategy extends BaseMatchStrategy { @Override public Map> match(QueryContext queryContext, List terms, - Set detectDataSetIds) { + Set detectDataSetIds) { String text = queryContext.getQueryText(); if (Objects.isNull(terms) || StringUtils.isEmpty(text)) { return null; @@ -131,11 +127,11 @@ public class HanlpDictMatchStrategy extends BaseMatchStrategy { } public double getThresholdMatch(List natures, QueryContext queryContext) { - Double threshold = Double.valueOf(mapperConfig.getParameterValue(MAPPER_NAME_THRESHOLD)); - Double minThreshold = Double.valueOf(mapperConfig.getParameterValue(MAPPER_NAME_THRESHOLD_MIN)); + Double threshold = Double.valueOf(mapperConfig.getParameterValue(MapperConfig.MAPPER_NAME_THRESHOLD)); + Double minThreshold = Double.valueOf(mapperConfig.getParameterValue(MapperConfig.MAPPER_NAME_THRESHOLD_MIN)); if (mapperHelper.existDimensionValues(natures)) { - threshold = Double.valueOf(mapperConfig.getParameterValue(MAPPER_VALUE_THRESHOLD)); - minThreshold = Double.valueOf(mapperConfig.getParameterValue(MAPPER_VALUE_THRESHOLD_MIN)); + threshold = Double.valueOf(mapperConfig.getParameterValue(MapperConfig.MAPPER_VALUE_THRESHOLD)); + minThreshold = Double.valueOf(mapperConfig.getParameterValue(MapperConfig.MAPPER_VALUE_THRESHOLD_MIN)); } return getThreshold(threshold, minThreshold, queryContext.getMapModeEnum()); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/KeywordMapper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/KeywordMapper.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/KeywordMapper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/KeywordMapper.java index d531fe00a..4f38af0b7 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/KeywordMapper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/KeywordMapper.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.headless.api.pojo.SchemaElement; @@ -6,12 +6,12 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SchemaMapInfo; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.chat.knowledge.builder.BaseWordBuilder; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.knowledge.DatabaseMapResult; -import com.tencent.supersonic.headless.core.chat.knowledge.HanlpMapResult; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.HanlpHelper; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.NatureHelper; +import com.tencent.supersonic.headless.chat.knowledge.DatabaseMapResult; +import com.tencent.supersonic.headless.chat.knowledge.HanlpMapResult; +import com.tencent.supersonic.headless.chat.knowledge.builder.BaseWordBuilder; +import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.knowledge.helper.NatureHelper; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/MapperConfig.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MapperConfig.java similarity index 99% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/config/MapperConfig.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MapperConfig.java index 2217e7694..e39abc5b5 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/MapperConfig.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MapperConfig.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.config; +package com.tencent.supersonic.headless.chat.mapper; import com.google.common.collect.Lists; import com.tencent.supersonic.common.config.ParameterConfig; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/MapperHelper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MapperHelper.java similarity index 94% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/MapperHelper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MapperHelper.java index a1d022c07..f481056db 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/MapperHelper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MapperHelper.java @@ -1,8 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.hankcs.hanlp.algorithm.EditDistance; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.NatureHelper; +import com.tencent.supersonic.headless.chat.knowledge.helper.NatureHelper; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/MatchStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MatchStrategy.java similarity index 76% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/MatchStrategy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MatchStrategy.java index a283dde58..0612eaae0 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/MatchStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MatchStrategy.java @@ -1,8 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import java.util.List; import java.util.Map; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/MatchText.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MatchText.java similarity index 92% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/MatchText.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MatchText.java index bd8453e93..8313feae3 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/MatchText.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/MatchText.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import lombok.Builder; import lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/ModelWithSemanticType.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/ModelWithSemanticType.java similarity index 88% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/ModelWithSemanticType.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/ModelWithSemanticType.java index 7d0e8c696..072b0a39b 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/ModelWithSemanticType.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/ModelWithSemanticType.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/QueryFilterMapper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/QueryFilterMapper.java similarity index 95% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/QueryFilterMapper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/QueryFilterMapper.java index 913877070..94db33bd1 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/QueryFilterMapper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/QueryFilterMapper.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.Constants; @@ -8,8 +8,8 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SchemaMapInfo; import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; import com.tencent.supersonic.headless.api.pojo.request.QueryFilters; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.knowledge.builder.BaseWordBuilder; +import com.tencent.supersonic.headless.chat.knowledge.builder.BaseWordBuilder; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/SchemaMapper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/SchemaMapper.java similarity index 67% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/SchemaMapper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/SchemaMapper.java index c903ff45e..4afcba726 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/SchemaMapper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/SchemaMapper.java @@ -1,7 +1,7 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; /** * A schema mapper identifies references to schema elements(metrics/dimensions/entities/values) diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/SearchMatchStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/SearchMatchStrategy.java similarity index 90% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/SearchMatchStrategy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/SearchMatchStrategy.java index 2d28789e7..f9cf8b88e 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/mapper/SearchMatchStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/SearchMatchStrategy.java @@ -1,12 +1,12 @@ -package com.tencent.supersonic.headless.core.chat.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.response.S2Term; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.knowledge.HanlpMapResult; -import com.tencent.supersonic.headless.core.chat.knowledge.KnowledgeBaseService; -import com.tencent.supersonic.headless.core.chat.knowledge.SearchService; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.knowledge.HanlpMapResult; +import com.tencent.supersonic.headless.chat.knowledge.KnowledgeBaseService; +import com.tencent.supersonic.headless.chat.knowledge.SearchService; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -33,7 +33,7 @@ public class SearchMatchStrategy extends BaseMatchStrategy { @Override public Map> match(QueryContext queryContext, List originals, - Set detectDataSetIds) { + Set detectDataSetIds) { String text = queryContext.getQueryText(); Map regOffsetToLength = getRegOffsetToLength(originals); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/ParserConfig.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/config/ParserConfig.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java index b6c71edde..eb0360bad 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/ParserConfig.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/ParserConfig.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.config; +package com.tencent.supersonic.headless.chat.parser; import com.google.common.collect.Lists; import com.tencent.supersonic.common.config.ParameterConfig; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/QueryTypeParser.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/QueryTypeParser.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/QueryTypeParser.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/QueryTypeParser.java index c92c8ea61..862942159 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/QueryTypeParser.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/QueryTypeParser.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.parser; +package com.tencent.supersonic.headless.chat.parser; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.common.pojo.enums.QueryType; @@ -8,11 +8,11 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.SqlInfo; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMSqlQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.RuleSemanticQuery; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlQuery; +import com.tencent.supersonic.headless.chat.query.rule.RuleSemanticQuery; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/SatisfactionChecker.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/SatisfactionChecker.java similarity index 80% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/SatisfactionChecker.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/SatisfactionChecker.java index 53543f510..875bd54f4 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/SatisfactionChecker.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/SatisfactionChecker.java @@ -1,16 +1,16 @@ -package com.tencent.supersonic.headless.core.chat.parser; +package com.tencent.supersonic.headless.chat.parser; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.headless.core.config.ParserConfig; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMSqlQuery; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlQuery; import lombok.extern.slf4j.Slf4j; -import static com.tencent.supersonic.headless.core.config.ParserConfig.PARSER_TEXT_LENGTH_THRESHOLD; -import static com.tencent.supersonic.headless.core.config.ParserConfig.PARSER_TEXT_LENGTH_THRESHOLD_LONG; -import static com.tencent.supersonic.headless.core.config.ParserConfig.PARSER_TEXT_LENGTH_THRESHOLD_SHORT; +import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_TEXT_LENGTH_THRESHOLD; +import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_TEXT_LENGTH_THRESHOLD_LONG; +import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_TEXT_LENGTH_THRESHOLD_SHORT; + /** * This checker can be used by semantic parsers to check if query intent diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/SemanticParser.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/SemanticParser.java similarity index 63% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/SemanticParser.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/SemanticParser.java index 93554ebe1..75d12073c 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/SemanticParser.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/SemanticParser.java @@ -1,7 +1,7 @@ -package com.tencent.supersonic.headless.core.chat.parser; +package com.tencent.supersonic.headless.chat.parser; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; /** * A semantic parser understands user queries and generates semantic query statement. diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/DataSetMatchResult.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/DataSetMatchResult.java similarity index 67% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/DataSetMatchResult.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/DataSetMatchResult.java index 54f59ec0d..bb612b6f4 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/DataSetMatchResult.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/DataSetMatchResult.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/DataSetResolver.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/DataSetResolver.java similarity index 52% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/DataSetResolver.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/DataSetResolver.java index 636ceed80..6adfb7cbe 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/DataSetResolver.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/DataSetResolver.java @@ -1,6 +1,7 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; -import com.tencent.supersonic.headless.core.pojo.QueryContext; + +import com.tencent.supersonic.headless.chat.QueryContext; import java.util.Set; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/Exemplar.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/Exemplar.java similarity index 81% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/Exemplar.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/Exemplar.java index 480c5fb5d..7d924c317 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/Exemplar.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/Exemplar.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/ExemplarManager.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/ExemplarManager.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/ExemplarManager.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/ExemplarManager.java index d6579036d..a776ebd2e 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/ExemplarManager.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/ExemplarManager.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/HeuristicDataSetResolver.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/HeuristicDataSetResolver.java similarity index 97% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/HeuristicDataSetResolver.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/HeuristicDataSetResolver.java index 33fcdaf92..ec50edded 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/HeuristicDataSetResolver.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/HeuristicDataSetResolver.java @@ -1,10 +1,10 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SchemaMapInfo; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import java.util.ArrayList; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/InputFormat.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/InputFormat.java similarity index 95% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/InputFormat.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/InputFormat.java index cd36db063..17155e481 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/InputFormat.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/InputFormat.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import lombok.extern.slf4j.Slf4j; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/JavaLLMProxy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/JavaLLMProxy.java similarity index 73% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/JavaLLMProxy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/JavaLLMProxy.java index 88550ed15..e6d1fe3f0 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/JavaLLMProxy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/JavaLLMProxy.java @@ -1,8 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/LLMParserConfig.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMParserConfig.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/config/LLMParserConfig.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMParserConfig.java index 066629ba1..ad32c9fa5 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/config/LLMParserConfig.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMParserConfig.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.config; +package com.tencent.supersonic.headless.chat.parser.llm; import lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMProxy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMProxy.java similarity index 53% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMProxy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMProxy.java index 63779c55a..3f7537d92 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMProxy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMProxy.java @@ -1,8 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; /** * LLMProxy encapsulates functions performed by LLMs so that multiple diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMRequestService.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMRequestService.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMRequestService.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMRequestService.java index cd224d4ae..101ebfa1a 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMRequestService.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMRequestService.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import com.tencent.supersonic.common.pojo.enums.DataFormatTypeEnum; import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum; @@ -7,15 +7,13 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; -import com.tencent.supersonic.headless.core.chat.parser.SatisfactionChecker; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq.ElementValue; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; -import com.tencent.supersonic.headless.core.config.ParserConfig; -import com.tencent.supersonic.headless.core.config.LLMParserConfig; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.utils.ComponentFactory; -import com.tencent.supersonic.headless.core.utils.S2SqlDateHelper; +import com.tencent.supersonic.headless.chat.utils.ComponentFactory; +import com.tencent.supersonic.headless.chat.parser.ParserConfig; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.utils.S2SqlDateHelper; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.parser.SatisfactionChecker; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; @@ -32,8 +30,8 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; -import static com.tencent.supersonic.headless.core.config.ParserConfig.PARSER_LINKING_VALUE_ENABLE; -import static com.tencent.supersonic.headless.core.config.ParserConfig.PARSER_STRATEGY_TYPE; +import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_LINKING_VALUE_ENABLE; +import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_STRATEGY_TYPE; @Slf4j @Service @@ -92,7 +90,7 @@ public class LLMRequestService { String priorExts = getPriorExts(queryCtx, fieldNameList); llmReq.setPriorExts(priorExts); - List linking = new ArrayList<>(); + List linking = new ArrayList<>(); boolean linkingValueEnabled = Boolean.valueOf(parserConfig.getParameterValue(PARSER_LINKING_VALUE_ENABLE)); if (linkingValueEnabled) { @@ -173,13 +171,13 @@ public class LLMRequestService { return extraInfoSb.toString(); } - public List getValues(QueryContext queryCtx, Long dataSetId) { + public List getValues(QueryContext queryCtx, Long dataSetId) { Map itemIdToName = getItemIdToName(queryCtx, dataSetId); List matchedElements = queryCtx.getMapInfo().getMatchedElements(dataSetId); if (CollectionUtils.isEmpty(matchedElements)) { return new ArrayList<>(); } - Set valueMatches = matchedElements + Set valueMatches = matchedElements .stream() .filter(elementMatch -> !elementMatch.isInherited()) .filter(schemaElementMatch -> { @@ -187,7 +185,7 @@ public class LLMRequestService { return SchemaElementType.VALUE.equals(type) || SchemaElementType.ID.equals(type); }) .map(elementMatch -> { - ElementValue elementValue = new ElementValue(); + LLMReq.ElementValue elementValue = new LLMReq.ElementValue(); elementValue.setFieldName(itemIdToName.get(elementMatch.getElement().getId())); elementValue.setFieldValue(elementMatch.getWord()); return elementValue; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMResponseService.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMResponseService.java similarity index 80% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMResponseService.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMResponseService.java index 7317f133c..0ab9fa3fa 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMResponseService.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMResponseService.java @@ -1,14 +1,14 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.util.jsqlparser.SqlEqualHelper; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.QueryManager; -import com.tencent.supersonic.headless.core.chat.query.llm.LLMSemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMSqlQuery; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMSqlResp; +import com.tencent.supersonic.headless.chat.query.QueryManager; +import com.tencent.supersonic.headless.chat.query.llm.LLMSemanticQuery; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlQuery; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlResp; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMSqlParser.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMSqlParser.java similarity index 85% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMSqlParser.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMSqlParser.java index 4f530654c..330d3aab8 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMSqlParser.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/LLMSqlParser.java @@ -1,14 +1,14 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; -import com.tencent.supersonic.headless.core.chat.parser.SemanticParser; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMSqlResp; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlResp; +import com.tencent.supersonic.headless.chat.parser.SemanticParser; +import com.tencent.supersonic.headless.chat.ChatContext; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/OnePassSCSqlGenStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java similarity index 95% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/OnePassSCSqlGenStrategy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java index a50c91484..15b04680e 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/OnePassSCSqlGenStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java @@ -1,8 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import com.google.common.collect.Lists; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; import dev.langchain4j.data.message.AiMessage; import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.input.Prompt; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/OutputFormat.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OutputFormat.java similarity index 96% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/OutputFormat.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OutputFormat.java index 082a8b989..d9849dc4e 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/OutputFormat.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OutputFormat.java @@ -1,6 +1,6 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMSqlResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlResp; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.tuple.Pair; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/ParseResult.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/ParseResult.java similarity index 54% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/ParseResult.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/ParseResult.java index 7a006e4b4..840622005 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/ParseResult.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/ParseResult.java @@ -1,9 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import com.tencent.supersonic.headless.api.pojo.request.QueryReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq.ElementValue; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -25,5 +24,5 @@ public class ParseResult { private QueryReq request; - private List linkingValues; + private List linkingValues; } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/PromptHelper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/PromptHelper.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/PromptHelper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/PromptHelper.java index 0a4a24e5c..23f5953b8 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/PromptHelper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/PromptHelper.java @@ -1,8 +1,7 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq.ElementValue; -import com.tencent.supersonic.headless.core.config.ParserConfig; +import com.tencent.supersonic.headless.chat.parser.ParserConfig; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; @@ -15,9 +14,9 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import static com.tencent.supersonic.headless.core.config.ParserConfig.PARSER_EXEMPLAR_RECALL_NUMBER; -import static com.tencent.supersonic.headless.core.config.ParserConfig.PARSER_FEW_SHOT_NUMBER; -import static com.tencent.supersonic.headless.core.config.ParserConfig.PARSER_SELF_CONSISTENCY_NUMBER; +import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_EXEMPLAR_RECALL_NUMBER; +import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_FEW_SHOT_NUMBER; +import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_SELF_CONSISTENCY_NUMBER; @Component @Slf4j @@ -58,7 +57,7 @@ public class PromptHelper { String dbSchema = "Table: " + tableName + ", Columns = " + fieldNameList; List priorLinkingList = new ArrayList<>(); - for (ElementValue value : linkedValues) { + for (LLMReq.ElementValue value : linkedValues) { String fieldName = value.getFieldName(); String fieldValue = value.getFieldValue(); priorLinkingList.add("‘" + fieldValue + "‘是一个‘" + fieldName + "‘"); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/PythonLLMProxy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/PythonLLMProxy.java similarity index 89% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/PythonLLMProxy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/PythonLLMProxy.java index 7c5dfcd73..6440ddd66 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/PythonLLMProxy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/PythonLLMProxy.java @@ -1,10 +1,9 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.JsonUtil; -import com.tencent.supersonic.headless.core.config.LLMParserConfig; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.slf4j.Logger; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/SqlEmbeddingListener.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/SqlEmbeddingListener.java similarity index 76% rename from headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/SqlEmbeddingListener.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/SqlEmbeddingListener.java index afc94f2bc..b5c3468eb 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/SqlEmbeddingListener.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/SqlEmbeddingListener.java @@ -1,10 +1,7 @@ -package com.tencent.supersonic.headless.server.listener; +package com.tencent.supersonic.headless.chat.parser.llm; import com.tencent.supersonic.common.config.EmbeddingConfig; -import com.tencent.supersonic.headless.core.chat.parser.llm.JavaLLMProxy; -import com.tencent.supersonic.headless.core.chat.parser.llm.ExemplarManager; -import com.tencent.supersonic.headless.core.chat.parser.llm.Exemplar; -import com.tencent.supersonic.headless.core.utils.ComponentFactory; +import com.tencent.supersonic.headless.chat.utils.ComponentFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/SqlGenStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/SqlGenStrategy.java similarity index 81% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/SqlGenStrategy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/SqlGenStrategy.java index d47d61dcb..861b0c7db 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/SqlGenStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/SqlGenStrategy.java @@ -1,8 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import com.tencent.supersonic.common.config.LLMConfig; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; import com.tencent.supersonic.common.util.S2ChatModelProvider; import dev.langchain4j.model.chat.ChatLanguageModel; import org.slf4j.Logger; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/SqlGenStrategyFactory.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/SqlGenStrategyFactory.java similarity index 79% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/SqlGenStrategyFactory.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/SqlGenStrategyFactory.java index 1036ac0c8..80b363d22 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/SqlGenStrategyFactory.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/SqlGenStrategyFactory.java @@ -1,6 +1,6 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/TwoPassSCSqlGenStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/TwoPassSCSqlGenStrategy.java similarity index 93% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/TwoPassSCSqlGenStrategy.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/TwoPassSCSqlGenStrategy.java index 4126f3682..c45667792 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/TwoPassSCSqlGenStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/TwoPassSCSqlGenStrategy.java @@ -1,9 +1,8 @@ -package com.tencent.supersonic.headless.core.chat.parser.llm; +package com.tencent.supersonic.headless.chat.parser.llm; import com.tencent.supersonic.common.util.JsonUtil; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq.SqlGenType; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; import dev.langchain4j.data.message.AiMessage; import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.input.Prompt; @@ -115,6 +114,6 @@ public class TwoPassSCSqlGenStrategy extends SqlGenStrategy { @Override public void afterPropertiesSet() { - SqlGenStrategyFactory.addSqlGenerationForFactory(SqlGenType.TWO_PASS_AUTO_COT_SELF_CONSISTENCY, this); + SqlGenStrategyFactory.addSqlGenerationForFactory(LLMReq.SqlGenType.TWO_PASS_AUTO_COT_SELF_CONSISTENCY, this); } } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/AggregateTypeParser.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/AggregateTypeParser.java similarity index 70% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/AggregateTypeParser.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/AggregateTypeParser.java index b482f5298..f6f2c1d93 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/AggregateTypeParser.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/AggregateTypeParser.java @@ -1,10 +1,10 @@ -package com.tencent.supersonic.headless.core.chat.parser.rule; +package com.tencent.supersonic.headless.chat.parser.rule; import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum; -import com.tencent.supersonic.headless.core.chat.parser.SemanticParser; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.parser.SemanticParser; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -17,12 +17,8 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; -import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.AVG; -import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.MAX; -import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.MIN; -import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.NONE; -import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.SUM; -import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.TOPN; +import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.COUNT; +import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.DISTINCT; /** * AggregateTypeParser extracts aggregation type specified in the user query @@ -34,12 +30,14 @@ import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.TOPN; public class AggregateTypeParser implements SemanticParser { private static final Map REGX_MAP = Stream.of( - new AbstractMap.SimpleEntry<>(MAX, Pattern.compile("(?i)(最大值|最大|max|峰值|最高|最多)")), - new AbstractMap.SimpleEntry<>(MIN, Pattern.compile("(?i)(最小值|最小|min|最低|最少)")), - new AbstractMap.SimpleEntry<>(SUM, Pattern.compile("(?i)(汇总|总和|sum)")), - new AbstractMap.SimpleEntry<>(AVG, Pattern.compile("(?i)(平均值|日均|平均|avg)")), - new AbstractMap.SimpleEntry<>(TOPN, Pattern.compile("(?i)(top)")), - new AbstractMap.SimpleEntry<>(NONE, Pattern.compile("(?i)(明细)")) + new AbstractMap.SimpleEntry<>(AggregateTypeEnum.MAX, Pattern.compile("(?i)(最大值|最大|max|峰值|最高|最多)")), + new AbstractMap.SimpleEntry<>(AggregateTypeEnum.MIN, Pattern.compile("(?i)(最小值|最小|min|最低|最少)")), + new AbstractMap.SimpleEntry<>(AggregateTypeEnum.SUM, Pattern.compile("(?i)(汇总|总和|sum)")), + new AbstractMap.SimpleEntry<>(AggregateTypeEnum.AVG, Pattern.compile("(?i)(平均值|日均|平均|avg)")), + new AbstractMap.SimpleEntry<>(AggregateTypeEnum.TOPN, Pattern.compile("(?i)(top)")), + new AbstractMap.SimpleEntry<>(DISTINCT, Pattern.compile("(?i)(uv)")), + new AbstractMap.SimpleEntry<>(COUNT, Pattern.compile("(?i)(总数|pv)")), + new AbstractMap.SimpleEntry<>(AggregateTypeEnum.NONE, Pattern.compile("(?i)(明细)")) ).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (k1, k2) -> k2)); @Override @@ -85,7 +83,7 @@ public class AggregateTypeParser implements SemanticParser { } AggregateTypeEnum type = aggregateCount.entrySet().stream().max(Map.Entry.comparingByValue()) - .map(entry -> entry.getKey()).orElse(NONE); + .map(entry -> entry.getKey()).orElse(AggregateTypeEnum.NONE); String detectWord = aggregateWord.get(type); return new AggregateConf(type, detectWord); } diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/ContextInheritParser.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/ContextInheritParser.java similarity index 87% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/ContextInheritParser.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/ContextInheritParser.java index 65039f195..a3fa00366 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/ContextInheritParser.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/ContextInheritParser.java @@ -1,16 +1,16 @@ -package com.tencent.supersonic.headless.core.chat.parser.rule; +package com.tencent.supersonic.headless.chat.parser.rule; import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; -import com.tencent.supersonic.headless.core.chat.parser.SemanticParser; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.QueryManager; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.RuleSemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.metric.MetricModelQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.metric.MetricSemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.metric.MetricIdQuery; +import com.tencent.supersonic.headless.chat.query.QueryManager; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.query.rule.RuleSemanticQuery; +import com.tencent.supersonic.headless.chat.parser.SemanticParser; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.query.rule.metric.MetricModelQuery; +import com.tencent.supersonic.headless.chat.query.rule.metric.MetricSemanticQuery; +import com.tencent.supersonic.headless.chat.query.rule.metric.MetricIdQuery; import lombok.extern.slf4j.Slf4j; import java.util.AbstractMap; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/RuleSqlParser.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/RuleSqlParser.java similarity index 81% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/RuleSqlParser.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/RuleSqlParser.java index cd948b37c..46f55f041 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/RuleSqlParser.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/RuleSqlParser.java @@ -1,11 +1,11 @@ -package com.tencent.supersonic.headless.core.chat.parser.rule; +package com.tencent.supersonic.headless.chat.parser.rule; import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.SchemaMapInfo; -import com.tencent.supersonic.headless.core.chat.parser.SemanticParser; -import com.tencent.supersonic.headless.core.chat.query.rule.RuleSemanticQuery; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.query.rule.RuleSemanticQuery; +import com.tencent.supersonic.headless.chat.parser.SemanticParser; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; import lombok.extern.slf4j.Slf4j; import java.util.Arrays; import java.util.List; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/TimeRangeParser.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/TimeRangeParser.java similarity index 93% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/TimeRangeParser.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/TimeRangeParser.java index 2adb57613..8e95d97f1 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/rule/TimeRangeParser.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/rule/TimeRangeParser.java @@ -1,13 +1,13 @@ -package com.tencent.supersonic.headless.core.chat.parser.rule; +package com.tencent.supersonic.headless.chat.parser.rule; import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.DateConf; -import com.tencent.supersonic.headless.core.chat.parser.SemanticParser; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.QueryManager; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.RuleSemanticQuery; +import com.tencent.supersonic.headless.chat.query.QueryManager; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.query.rule.RuleSemanticQuery; +import com.tencent.supersonic.headless.chat.parser.SemanticParser; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; import com.xkzhangsan.time.nlp.TimeNLP; import com.xkzhangsan.time.nlp.TimeNLPUtil; import lombok.extern.slf4j.Slf4j; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/BaseSemanticQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/BaseSemanticQuery.java similarity index 93% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/BaseSemanticQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/BaseSemanticQuery.java index 6b86ad4b0..1474ca56d 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/BaseSemanticQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/BaseSemanticQuery.java @@ -1,5 +1,5 @@ -package com.tencent.supersonic.headless.core.chat.query; +package com.tencent.supersonic.headless.chat.query; import com.tencent.supersonic.common.pojo.Aggregator; import com.tencent.supersonic.common.pojo.Filter; @@ -10,8 +10,8 @@ import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq; import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq; -import com.tencent.supersonic.headless.core.config.ParserConfig; -import com.tencent.supersonic.headless.core.utils.QueryReqBuilder; +import com.tencent.supersonic.headless.chat.parser.ParserConfig; +import com.tencent.supersonic.headless.chat.utils.QueryReqBuilder; import lombok.ToString; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -21,7 +21,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static com.tencent.supersonic.headless.core.config.ParserConfig.PARSER_S2SQL_ENABLE; +import static com.tencent.supersonic.headless.chat.parser.ParserConfig.PARSER_S2SQL_ENABLE; @Slf4j @ToString diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/QueryManager.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/QueryManager.java similarity index 87% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/QueryManager.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/QueryManager.java index 43dedb4d9..91de9690b 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/QueryManager.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/QueryManager.java @@ -1,9 +1,9 @@ -package com.tencent.supersonic.headless.core.chat.query; +package com.tencent.supersonic.headless.chat.query; -import com.tencent.supersonic.headless.core.chat.query.llm.LLMSemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.RuleSemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.metric.MetricSemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.detail.DetailSemanticQuery; +import com.tencent.supersonic.headless.chat.query.llm.LLMSemanticQuery; +import com.tencent.supersonic.headless.chat.query.rule.RuleSemanticQuery; +import com.tencent.supersonic.headless.chat.query.rule.metric.MetricSemanticQuery; +import com.tencent.supersonic.headless.chat.query.rule.detail.DetailSemanticQuery; import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/SemanticQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/SemanticQuery.java similarity index 92% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/SemanticQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/SemanticQuery.java index 3fb03c28e..a4859b8b1 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/SemanticQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/SemanticQuery.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.query; +package com.tencent.supersonic.headless.chat.query; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/LLMSemanticQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/LLMSemanticQuery.java new file mode 100644 index 000000000..df8b48745 --- /dev/null +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/LLMSemanticQuery.java @@ -0,0 +1,8 @@ +package com.tencent.supersonic.headless.chat.query.llm; + +import com.tencent.supersonic.headless.chat.query.BaseSemanticQuery; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public abstract class LLMSemanticQuery extends BaseSemanticQuery { +} diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMReq.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMReq.java similarity index 96% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMReq.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMReq.java index 001fa5ef7..9e9b78b25 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMReq.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMReq.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.query.llm.s2sql; +package com.tencent.supersonic.headless.chat.query.llm.s2sql; import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.collect.Lists; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMResp.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMResp.java similarity index 85% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMResp.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMResp.java index d8d6aafaa..f7e1a672c 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMResp.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMResp.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.query.llm.s2sql; +package com.tencent.supersonic.headless.chat.query.llm.s2sql; import lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMSqlQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMSqlQuery.java similarity index 79% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMSqlQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMSqlQuery.java index 7d1b09883..75466c71c 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMSqlQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMSqlQuery.java @@ -1,12 +1,12 @@ -package com.tencent.supersonic.headless.core.chat.query.llm.s2sql; +package com.tencent.supersonic.headless.chat.query.llm.s2sql; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.SqlInfo; import com.tencent.supersonic.headless.api.pojo.request.SemanticQueryReq; -import com.tencent.supersonic.headless.core.chat.query.QueryManager; -import com.tencent.supersonic.headless.core.chat.query.llm.LLMSemanticQuery; -import com.tencent.supersonic.headless.core.utils.QueryReqBuilder; +import com.tencent.supersonic.headless.chat.utils.QueryReqBuilder; +import com.tencent.supersonic.headless.chat.query.QueryManager; +import com.tencent.supersonic.headless.chat.query.llm.LLMSemanticQuery; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMSqlResp.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMSqlResp.java similarity index 82% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMSqlResp.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMSqlResp.java index c84f3702a..0ee93feb2 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/s2sql/LLMSqlResp.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/llm/s2sql/LLMSqlResp.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.query.llm.s2sql; +package com.tencent.supersonic.headless.chat.query.llm.s2sql; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/QueryMatchOption.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/QueryMatchOption.java similarity index 95% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/QueryMatchOption.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/QueryMatchOption.java index bbcbd40fd..e87d02d46 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/QueryMatchOption.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/QueryMatchOption.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.query.rule; +package com.tencent.supersonic.headless.chat.query.rule; import lombok.Data; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/QueryMatcher.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/QueryMatcher.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/QueryMatcher.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/QueryMatcher.java index 2bc9482da..066f42ec3 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/QueryMatcher.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/QueryMatcher.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.query.rule; +package com.tencent.supersonic.headless.chat.query.rule; import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/RuleSemanticQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/RuleSemanticQuery.java similarity index 96% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/RuleSemanticQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/RuleSemanticQuery.java index cf0c516ff..92d5a28d4 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/RuleSemanticQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/RuleSemanticQuery.java @@ -1,5 +1,5 @@ -package com.tencent.supersonic.headless.core.chat.query.rule; +package com.tencent.supersonic.headless.chat.query.rule; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum; @@ -12,11 +12,11 @@ import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; import com.tencent.supersonic.headless.api.pojo.request.QueryMultiStructReq; import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq; import com.tencent.supersonic.headless.api.pojo.request.SemanticQueryReq; -import com.tencent.supersonic.headless.core.chat.query.BaseSemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.QueryManager; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.utils.QueryReqBuilder; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.utils.QueryReqBuilder; +import com.tencent.supersonic.headless.chat.query.BaseSemanticQuery; +import com.tencent.supersonic.headless.chat.query.QueryManager; +import com.tencent.supersonic.headless.chat.ChatContext; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailFilterQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailFilterQuery.java similarity index 64% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailFilterQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailFilterQuery.java index 7d396f253..fa1d6d228 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailFilterQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailFilterQuery.java @@ -1,11 +1,11 @@ -package com.tencent.supersonic.headless.core.chat.query.rule.detail; +package com.tencent.supersonic.headless.chat.query.rule.detail; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.VALUE; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; @Slf4j @Component diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailIdQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailIdQuery.java similarity index 61% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailIdQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailIdQuery.java index 426f9abb6..2f88cf5da 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailIdQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailIdQuery.java @@ -1,10 +1,10 @@ -package com.tencent.supersonic.headless.core.chat.query.rule.detail; +package com.tencent.supersonic.headless.chat.query.rule.detail; import org.springframework.stereotype.Component; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.ID; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; @Component public class DetailIdQuery extends DetailListQuery { diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailListQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailListQuery.java similarity index 94% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailListQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailListQuery.java index 677aa02f0..c646aed1b 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailListQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailListQuery.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.query.rule.detail; +package com.tencent.supersonic.headless.chat.query.rule.detail; import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.Order; @@ -7,8 +7,8 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.TagTypeDefaultConfig; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; import org.apache.commons.collections.CollectionUtils; import java.util.LinkedHashSet; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailSemanticQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailSemanticQuery.java similarity index 79% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailSemanticQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailSemanticQuery.java index f9fb2a3b6..2d872ab01 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/detail/DetailSemanticQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/detail/DetailSemanticQuery.java @@ -1,24 +1,22 @@ -package com.tencent.supersonic.headless.core.chat.query.rule.detail; +package com.tencent.supersonic.headless.chat.query.rule.detail; import com.tencent.supersonic.common.pojo.DateConf; import com.tencent.supersonic.common.pojo.enums.QueryType; import com.tencent.supersonic.common.pojo.enums.TimeMode; import com.tencent.supersonic.headless.api.pojo.DataSetSchema; import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; +import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.TimeDefaultConfig; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.rule.RuleSemanticQuery; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption; +import com.tencent.supersonic.headless.chat.query.rule.RuleSemanticQuery; +import com.tencent.supersonic.headless.chat.ChatContext; import lombok.extern.slf4j.Slf4j; import java.time.LocalDate; import java.util.List; import java.util.Objects; -import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.ENTITY; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; - @Slf4j public abstract class DetailSemanticQuery extends RuleSemanticQuery { @@ -26,7 +24,8 @@ public abstract class DetailSemanticQuery extends RuleSemanticQuery { public DetailSemanticQuery() { super(); - queryMatcher.addOption(ENTITY, REQUIRED, AT_LEAST, 1); + queryMatcher.addOption(SchemaElementType.ENTITY, QueryMatchOption.OptionType.REQUIRED, + QueryMatchOption.RequireNumberType.AT_LEAST, 1); } @Override diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricFilterQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricFilterQuery.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricFilterQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricFilterQuery.java index 135deb9df..965e8bc20 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricFilterQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricFilterQuery.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.query.rule.metric; +package com.tencent.supersonic.headless.chat.query.rule.metric; import com.tencent.supersonic.common.pojo.Filter; import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum; @@ -16,8 +16,8 @@ import java.util.Set; import java.util.stream.Collectors; import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.VALUE; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; @Slf4j diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricGroupByQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricGroupByQuery.java similarity index 61% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricGroupByQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricGroupByQuery.java index 70380c83f..b920bbea0 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricGroupByQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricGroupByQuery.java @@ -1,12 +1,12 @@ -package com.tencent.supersonic.headless.core.chat.query.rule.metric; +package com.tencent.supersonic.headless.chat.query.rule.metric; import org.springframework.stereotype.Component; import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.DIMENSION; import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.VALUE; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.OPTIONAL; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.OptionType.OPTIONAL; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; @Component public class MetricGroupByQuery extends MetricSemanticQuery { diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricIdQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricIdQuery.java similarity index 91% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricIdQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricIdQuery.java index a128bb04e..d64bf0b48 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricIdQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricIdQuery.java @@ -1,9 +1,9 @@ -package com.tencent.supersonic.headless.core.chat.query.rule.metric; +package com.tencent.supersonic.headless.chat.query.rule.metric; import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.ENTITY; import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.ID; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; import com.tencent.supersonic.common.pojo.Filter; import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum; @@ -16,6 +16,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; + import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricModelQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricModelQuery.java new file mode 100644 index 000000000..ce1958e1f --- /dev/null +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricModelQuery.java @@ -0,0 +1,24 @@ +package com.tencent.supersonic.headless.chat.query.rule.metric; + +import org.springframework.stereotype.Component; + +import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.DATASET; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.OptionType.OPTIONAL; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.RequireNumberType.AT_MOST; + +@Component +public class MetricModelQuery extends MetricSemanticQuery { + + public static final String QUERY_MODE = "METRIC_MODEL"; + + public MetricModelQuery() { + super(); + queryMatcher.addOption(DATASET, OPTIONAL, AT_MOST, 1); + } + + @Override + public String getQueryMode() { + return QUERY_MODE; + } + +} diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricSemanticQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricSemanticQuery.java similarity index 83% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricSemanticQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricSemanticQuery.java index e2fa6eee9..7b02ab1a6 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricSemanticQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricSemanticQuery.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.chat.query.rule.metric; +package com.tencent.supersonic.headless.chat.query.rule.metric; import com.tencent.supersonic.common.pojo.DateConf; @@ -6,9 +6,9 @@ import com.tencent.supersonic.common.pojo.enums.TimeMode; import com.tencent.supersonic.headless.api.pojo.DataSetSchema; import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; import com.tencent.supersonic.headless.api.pojo.TimeDefaultConfig; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.rule.RuleSemanticQuery; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.query.rule.RuleSemanticQuery; +import com.tencent.supersonic.headless.chat.ChatContext; import lombok.extern.slf4j.Slf4j; import java.time.LocalDate; @@ -16,8 +16,9 @@ import java.util.List; import java.util.Objects; import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.METRIC; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; + @Slf4j public abstract class MetricSemanticQuery extends RuleSemanticQuery { diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricTopNQuery.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricTopNQuery.java similarity index 77% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricTopNQuery.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricTopNQuery.java index 1bbf35f6e..97fbafb33 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricTopNQuery.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/query/rule/metric/MetricTopNQuery.java @@ -1,11 +1,12 @@ -package com.tencent.supersonic.headless.core.chat.query.rule.metric; +package com.tencent.supersonic.headless.chat.query.rule.metric; +import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.Order; import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum; import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SchemaElementMatch; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.ChatContext; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -13,12 +14,11 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static com.tencent.supersonic.common.pojo.Constants.DESC_UPPER; import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.DIMENSION; import static com.tencent.supersonic.headless.api.pojo.SchemaElementType.VALUE; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.OPTIONAL; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.OptionType.OPTIONAL; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.OptionType.REQUIRED; +import static com.tencent.supersonic.headless.chat.query.rule.QueryMatchOption.RequireNumberType.AT_LEAST; @Component public class MetricTopNQuery extends MetricSemanticQuery { @@ -58,7 +58,7 @@ public class MetricTopNQuery extends MetricSemanticQuery { parseInfo.setAggType(AggregateTypeEnum.SUM); SchemaElement metric = parseInfo.getMetrics().iterator().next(); - parseInfo.getOrders().add(new Order(metric.getBizName(), DESC_UPPER)); + parseInfo.getOrders().add(new Order(metric.getBizName(), Constants.DESC_UPPER)); } } diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/ComponentFactory.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/ComponentFactory.java new file mode 100644 index 000000000..c8c9d04c5 --- /dev/null +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/ComponentFactory.java @@ -0,0 +1,64 @@ +package com.tencent.supersonic.headless.chat.utils; + +import com.tencent.supersonic.common.util.ContextUtils; +import com.tencent.supersonic.headless.chat.parser.llm.DataSetResolver; +import com.tencent.supersonic.headless.chat.parser.llm.JavaLLMProxy; +import com.tencent.supersonic.headless.chat.parser.llm.LLMProxy; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.core.io.support.SpringFactoriesLoader; + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * HeadlessConverter QueryOptimizer QueryExecutor object factory + */ +@Slf4j +public class ComponentFactory { + + private static LLMProxy llmProxy; + private static DataSetResolver modelResolver; + + public static LLMProxy getLLMProxy() { + //1.Preferentially retrieve from environment variables + String llmProxyEnv = System.getenv("llmProxy"); + if (StringUtils.isNotBlank(llmProxyEnv)) { + Map implementations = ContextUtils.getBeansOfType(LLMProxy.class); + llmProxy = implementations.entrySet().stream() + .filter(entry -> entry.getKey().equalsIgnoreCase(llmProxyEnv)) + .map(Map.Entry::getValue) + .findFirst() + .orElse(null); + } + //2.default JavaLLMProxy + if (Objects.isNull(llmProxy)) { + llmProxy = ContextUtils.getBean(JavaLLMProxy.class); + } + return llmProxy; + } + + public static DataSetResolver getModelResolver() { + if (Objects.isNull(modelResolver)) { + modelResolver = init(DataSetResolver.class); + } + return modelResolver; + } + + public static T getBean(String name, Class tClass) { + return ContextUtils.getContext().getBean(name, tClass); + } + + private static List init(Class factoryType, List list) { + list.addAll(SpringFactoriesLoader.loadFactories(factoryType, + Thread.currentThread().getContextClassLoader())); + return list; + } + + private static T init(Class factoryType) { + return SpringFactoriesLoader.loadFactories(factoryType, + Thread.currentThread().getContextClassLoader()).get(0); + } + +} diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/QueryReqBuilder.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/QueryReqBuilder.java similarity index 98% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/QueryReqBuilder.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/QueryReqBuilder.java index 3f3e5cfe9..6a224f378 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/QueryReqBuilder.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/QueryReqBuilder.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.utils; +package com.tencent.supersonic.headless.chat.utils; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.Aggregator; @@ -16,7 +16,7 @@ import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; import com.tencent.supersonic.headless.api.pojo.request.QueryMultiStructReq; import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq; import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq; -import com.tencent.supersonic.headless.core.chat.query.QueryManager; +import com.tencent.supersonic.headless.chat.query.QueryManager; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.util.Strings; diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/S2SqlDateHelper.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/S2SqlDateHelper.java similarity index 96% rename from headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/S2SqlDateHelper.java rename to headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/S2SqlDateHelper.java index a1f8c058a..82b92c161 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/S2SqlDateHelper.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/utils/S2SqlDateHelper.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.headless.core.utils; +package com.tencent.supersonic.headless.chat.utils; import com.tencent.supersonic.common.pojo.enums.QueryType; import com.tencent.supersonic.common.pojo.enums.TimeMode; @@ -6,7 +6,7 @@ import com.tencent.supersonic.common.util.DatePeriodEnum; import com.tencent.supersonic.common.util.DateUtils; import com.tencent.supersonic.headless.api.pojo.DataSetSchema; import com.tencent.supersonic.headless.api.pojo.TimeDefaultConfig; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; import org.apache.commons.lang3.tuple.Pair; import java.util.Objects; diff --git a/headless/core/src/test/java/com/tencent/supersonic/chat/core/corrector/AggCorrectorTest.java b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/corrector/AggCorrectorTest.java similarity index 89% rename from headless/core/src/test/java/com/tencent/supersonic/chat/core/corrector/AggCorrectorTest.java rename to headless/chat/src/test/java/com/tencent/supersonic/headless/chat/corrector/AggCorrectorTest.java index cc5d5d5ef..f81e886df 100644 --- a/headless/core/src/test/java/com/tencent/supersonic/chat/core/corrector/AggCorrectorTest.java +++ b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/corrector/AggCorrectorTest.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.core.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.headless.api.pojo.DataSetSchema; import com.tencent.supersonic.headless.api.pojo.QueryConfig; @@ -6,15 +6,14 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.SqlInfo; -import com.tencent.supersonic.headless.core.chat.corrector.AggCorrector; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; +import org.junit.Assert; import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; -import static org.testng.Assert.assertEquals; class AggCorrectorTest { @@ -35,7 +34,7 @@ class AggCorrectorTest { sqlInfo.setCorrectS2SQL(sql); semanticParseInfo.setSqlInfo(sqlInfo); corrector.correct(queryContext, semanticParseInfo); - assertEquals("SELECT 用户, SUM(访问次数) FROM 超音数数据集 WHERE 部门 = 'sales'" + Assert.assertEquals("SELECT 用户, SUM(访问次数) FROM 超音数数据集 WHERE 部门 = 'sales'" + " AND datediff('day', 数据日期, '2024-06-04') <= 7 GROUP BY 用户" + " ORDER BY SUM(访问次数) DESC LIMIT 1", semanticParseInfo.getSqlInfo().getCorrectS2SQL()); diff --git a/headless/core/src/test/java/com/tencent/supersonic/chat/core/corrector/SchemaCorrectorTest.java b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/corrector/SchemaCorrectorTest.java similarity index 83% rename from headless/core/src/test/java/com/tencent/supersonic/chat/core/corrector/SchemaCorrectorTest.java rename to headless/chat/src/test/java/com/tencent/supersonic/headless/chat/corrector/SchemaCorrectorTest.java index f8cbb7e35..f2e76e4a2 100644 --- a/headless/core/src/test/java/com/tencent/supersonic/chat/core/corrector/SchemaCorrectorTest.java +++ b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/corrector/SchemaCorrectorTest.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.core.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -9,10 +9,10 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.SqlInfo; -import com.tencent.supersonic.headless.core.chat.corrector.SchemaCorrector; -import com.tencent.supersonic.headless.core.chat.parser.llm.ParseResult; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMReq; +import com.tencent.supersonic.headless.chat.parser.llm.ParseResult; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMReq; +import org.junit.Assert; import org.junit.jupiter.api.Test; import java.util.ArrayList; @@ -20,8 +20,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import static org.testng.Assert.assertEquals; - class SchemaCorrectorTest { private String json = "{\n" @@ -47,17 +45,9 @@ class SchemaCorrectorTest { + " ],\n" + " \"currentDate\": \"2024-02-24\",\n" + " \"priorExts\": \"播放份额是小数; \",\n" - + " \"sqlGenerationMode\": \"2_pass_auto_cot\"\n" + + " \"sqlGenType\": \"1_pass_self_consistency\"\n" + " },\n" + " \"request\": null,\n" - + " \"commonAgentTool\": {\n" - + " \"id\": \"y3LqVSRL\",\n" - + " \"name\": \"大模型语义解析\",\n" - + " \"type\": \"NL2SQL_LLM\",\n" - + " \"dataSetIds\": [\n" - + " 1\n" - + " ]\n" - + " },\n" + " \"linkingValues\": [\n" + "\n" + " ]\n" @@ -89,7 +79,7 @@ class SchemaCorrectorTest { SchemaCorrector schemaCorrector = new SchemaCorrector(); schemaCorrector.removeFilterIfNotInLinkingValue(queryContext, semanticParseInfo); - assertEquals("SELECT 歌曲名 FROM 歌曲 WHERE 发行日期 >= '2024-01-01' " + Assert.assertEquals("SELECT 歌曲名 FROM 歌曲 WHERE 发行日期 >= '2024-01-01' " + "ORDER BY 播放量 DESC LIMIT 10", semanticParseInfo.getSqlInfo().getCorrectS2SQL()); parseResult = objectMapper.readValue(json, ParseResult.class); @@ -105,7 +95,7 @@ class SchemaCorrectorTest { semanticParseInfo.getSqlInfo().setCorrectS2SQL(sql); semanticParseInfo.getSqlInfo().setS2SQL(sql); schemaCorrector.removeFilterIfNotInLinkingValue(queryContext, semanticParseInfo); - assertEquals("SELECT 歌曲名 FROM 歌曲 WHERE 发行日期 >= '2024-01-01' " + Assert.assertEquals("SELECT 歌曲名 FROM 歌曲 WHERE 发行日期 >= '2024-01-01' " + "AND 商务组 = 'xxx' ORDER BY 播放量 DESC LIMIT 10", semanticParseInfo.getSqlInfo().getCorrectS2SQL()); } diff --git a/headless/core/src/test/java/com/tencent/supersonic/chat/core/corrector/TimeCorrectorTest.java b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/corrector/TimeCorrectorTest.java similarity index 95% rename from headless/core/src/test/java/com/tencent/supersonic/chat/core/corrector/TimeCorrectorTest.java rename to headless/chat/src/test/java/com/tencent/supersonic/headless/chat/corrector/TimeCorrectorTest.java index 69681c0a5..0e54ad5a0 100644 --- a/headless/core/src/test/java/com/tencent/supersonic/chat/core/corrector/TimeCorrectorTest.java +++ b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/corrector/TimeCorrectorTest.java @@ -1,12 +1,13 @@ -package com.tencent.supersonic.chat.core.corrector; +package com.tencent.supersonic.headless.chat.corrector; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.SqlInfo; -import com.tencent.supersonic.headless.core.chat.corrector.TimeCorrector; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.QueryContext; +import org.junit.Assert; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import org.testng.Assert; +@Disabled class TimeCorrectorTest { @Test diff --git a/headless/core/src/test/java/com/tencent/supersonic/chat/core/mapper/LoadRemoveServiceTest.java b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/mapper/LoadRemoveServiceTest.java similarity index 85% rename from headless/core/src/test/java/com/tencent/supersonic/chat/core/mapper/LoadRemoveServiceTest.java rename to headless/chat/src/test/java/com/tencent/supersonic/headless/chat/mapper/LoadRemoveServiceTest.java index 9f14540c4..d4ea9dc2c 100644 --- a/headless/core/src/test/java/com/tencent/supersonic/chat/core/mapper/LoadRemoveServiceTest.java +++ b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/mapper/LoadRemoveServiceTest.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.core.mapper; +package com.tencent.supersonic.headless.chat.mapper; import com.hankcs.hanlp.algorithm.EditDistance; diff --git a/headless/core/src/test/java/com/tencent/supersonic/chat/core/parser/aggregate/AggregateTypeParserTest.java b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/parser/AggregateTypeParserTest.java similarity index 90% rename from headless/core/src/test/java/com/tencent/supersonic/chat/core/parser/aggregate/AggregateTypeParserTest.java rename to headless/chat/src/test/java/com/tencent/supersonic/headless/chat/parser/AggregateTypeParserTest.java index 2c850beea..383a42096 100644 --- a/headless/core/src/test/java/com/tencent/supersonic/chat/core/parser/aggregate/AggregateTypeParserTest.java +++ b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/parser/AggregateTypeParserTest.java @@ -1,9 +1,9 @@ -package com.tencent.supersonic.chat.core.parser.aggregate; +package com.tencent.supersonic.headless.chat.parser; import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum; -import com.tencent.supersonic.headless.core.chat.parser.rule.AggregateTypeParser; +import com.tencent.supersonic.headless.chat.parser.rule.AggregateTypeParser; +import org.junit.Assert; import org.junit.jupiter.api.Test; -import org.testng.Assert; class AggregateTypeParserTest { diff --git a/headless/core/src/test/java/com/tencent/supersonic/chat/core/s2sql/LLMResponseServiceTest.java b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/s2sql/LLMResponseServiceTest.java similarity index 87% rename from headless/core/src/test/java/com/tencent/supersonic/chat/core/s2sql/LLMResponseServiceTest.java rename to headless/chat/src/test/java/com/tencent/supersonic/headless/chat/s2sql/LLMResponseServiceTest.java index 8565427f3..76b787c01 100644 --- a/headless/core/src/test/java/com/tencent/supersonic/chat/core/s2sql/LLMResponseServiceTest.java +++ b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/s2sql/LLMResponseServiceTest.java @@ -1,10 +1,10 @@ -package com.tencent.supersonic.chat.core.s2sql; +package com.tencent.supersonic.headless.chat.s2sql; -import com.tencent.supersonic.headless.core.chat.parser.llm.LLMResponseService; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMResp; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMSqlResp; +import com.tencent.supersonic.headless.chat.parser.llm.LLMResponseService; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMResp; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlResp; +import org.junit.Assert; import org.junit.jupiter.api.Test; -import org.testng.Assert; import java.util.HashMap; import java.util.Map; diff --git a/headless/core/src/test/java/com/tencent/supersonic/chat/core/s2sql/LLMSqlParserTest.java b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/s2sql/LLMSqlParserTest.java similarity index 97% rename from headless/core/src/test/java/com/tencent/supersonic/chat/core/s2sql/LLMSqlParserTest.java rename to headless/chat/src/test/java/com/tencent/supersonic/headless/chat/s2sql/LLMSqlParserTest.java index 9f47b258c..c3155ebfb 100644 --- a/headless/core/src/test/java/com/tencent/supersonic/chat/core/s2sql/LLMSqlParserTest.java +++ b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/s2sql/LLMSqlParserTest.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.core.s2sql; +package com.tencent.supersonic.headless.chat.s2sql; import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SchemaValueMap; diff --git a/headless/core/src/test/java/com/tencent/supersonic/chat/core/utils/S2SqlDateHelperTest.java b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/utils/S2SqlDateHelperTest.java similarity index 95% rename from headless/core/src/test/java/com/tencent/supersonic/chat/core/utils/S2SqlDateHelperTest.java rename to headless/chat/src/test/java/com/tencent/supersonic/headless/chat/utils/S2SqlDateHelperTest.java index 1f8556f06..c1d51d577 100644 --- a/headless/core/src/test/java/com/tencent/supersonic/chat/core/utils/S2SqlDateHelperTest.java +++ b/headless/chat/src/test/java/com/tencent/supersonic/headless/chat/utils/S2SqlDateHelperTest.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.core.utils; +package com.tencent.supersonic.headless.chat.utils; import com.tencent.supersonic.common.pojo.Constants; @@ -10,15 +10,16 @@ import com.tencent.supersonic.headless.api.pojo.QueryConfig; import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.TimeDefaultConfig; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.utils.S2SqlDateHelper; +import com.tencent.supersonic.headless.chat.QueryContext; import org.apache.commons.lang3.tuple.Pair; import org.junit.Assert; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; +@Disabled class S2SqlDateHelperTest { @Test @@ -62,8 +63,8 @@ class S2SqlDateHelperTest { Assert.assertEquals(startEndDate.getRight(), DateUtils.getBeforeDate(0)); startEndDate = S2SqlDateHelper.getStartEndDate(queryContext, dataSetId, QueryType.DETAIL); - Assert.assertNull(startEndDate.getLeft()); - Assert.assertNull(startEndDate.getRight()); + Assert.assertNotNull(startEndDate.getLeft()); + Assert.assertNotNull(startEndDate.getRight()); DataSetSchema dataSetSchema = queryContext.getSemanticSchema().getDataSetSchemaMap().get(dataSetId); QueryConfig queryConfig = dataSetSchema.getQueryConfig(); diff --git a/headless/core/pom.xml b/headless/core/pom.xml index 0c1b0d0d2..3ded675e0 100644 --- a/headless/core/pom.xml +++ b/headless/core/pom.xml @@ -111,83 +111,17 @@ - - org.apache.hadoop - hadoop-common - ${hadoop.version} - - - org.slf4j - slf4j-log4j12 - - - log4j - log4j - - - org.apache.zookeeper - zookeeper - - - org.apache.curator - * - - - javax.servlet - servlet-api - - - - - org.apache.hadoop - hadoop-hdfs - ${hadoop.version} - - - org.slf4j - slf4j-log4j12 - - - log4j - log4j - - - org.apache.zookeeper - zookeeper - - - org.apache.curator - * - - - javax.servlet - servlet-api - - - org.apache.commons commons-compress ${commons.compress.version} compile - - - com.github.xkzhangsan - xk-time - ${xk.time.version} - org.duckdb duckdb_jdbc ${duckdb_jdbc.version} - - com.tencent.supersonic - launchers-common - 0.9.2-SNAPSHOT - compile - diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/LLMSemanticQuery.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/LLMSemanticQuery.java deleted file mode 100644 index 9a839d9c4..000000000 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/llm/LLMSemanticQuery.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.tencent.supersonic.headless.core.chat.query.llm; - -import com.tencent.supersonic.headless.core.chat.query.BaseSemanticQuery; -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public abstract class LLMSemanticQuery extends BaseSemanticQuery { -} diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricModelQuery.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricModelQuery.java deleted file mode 100644 index f937a105d..000000000 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/query/rule/metric/MetricModelQuery.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.tencent.supersonic.headless.core.chat.query.rule.metric; - -import com.tencent.supersonic.headless.api.pojo.SchemaElementType; -import org.springframework.stereotype.Component; - -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.OptionType.OPTIONAL; -import static com.tencent.supersonic.headless.core.chat.query.rule.QueryMatchOption.RequireNumberType.AT_MOST; -@Component -public class MetricModelQuery extends MetricSemanticQuery { - - public static final String QUERY_MODE = "METRIC_MODEL"; - - public MetricModelQuery() { - super(); - queryMatcher.addOption(SchemaElementType.DATASET, OPTIONAL, AT_MOST, 1); - } - - @Override - public String getQueryMode() { - return QUERY_MODE; - } - -} diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/ComponentFactory.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/ComponentFactory.java index d49dcec7d..04afd24f9 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/ComponentFactory.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/utils/ComponentFactory.java @@ -2,9 +2,6 @@ package com.tencent.supersonic.headless.core.utils; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.headless.core.cache.QueryCache; -import com.tencent.supersonic.headless.core.chat.parser.llm.DataSetResolver; -import com.tencent.supersonic.headless.core.chat.parser.llm.JavaLLMProxy; -import com.tencent.supersonic.headless.core.chat.parser.llm.LLMProxy; import com.tencent.supersonic.headless.core.executor.QueryExecutor; import com.tencent.supersonic.headless.core.executor.accelerator.QueryAccelerator; import com.tencent.supersonic.headless.core.parser.SqlParser; @@ -14,10 +11,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.core.io.support.SpringFactoriesLoader; /** @@ -33,9 +28,6 @@ public class ComponentFactory { private static SqlParser sqlParser; private static QueryCache queryCache; - private static LLMProxy llmProxy; - private static DataSetResolver modelResolver; - static { initSemanticConverter(); initQueryOptimizer(); @@ -84,10 +76,6 @@ public class ComponentFactory { return queryCache; } - public static void setSqlParser(SqlParser parser) { - sqlParser = parser; - } - public static void addQueryOptimizer(String name, QueryOptimizer queryOptimizer) { queryOptimizers.put(name, queryOptimizer); } @@ -122,31 +110,6 @@ public class ComponentFactory { queryCache = init(QueryCache.class); } - public static LLMProxy getLLMProxy() { - //1.Preferentially retrieve from environment variables - String llmProxyEnv = System.getenv("llmProxy"); - if (StringUtils.isNotBlank(llmProxyEnv)) { - Map implementations = ContextUtils.getBeansOfType(LLMProxy.class); - llmProxy = implementations.entrySet().stream() - .filter(entry -> entry.getKey().equalsIgnoreCase(llmProxyEnv)) - .map(Map.Entry::getValue) - .findFirst() - .orElse(null); - } - //2.default JavaLLMProxy - if (Objects.isNull(llmProxy)) { - llmProxy = ContextUtils.getBean(JavaLLMProxy.class); - } - return llmProxy; - } - - public static DataSetResolver getModelResolver() { - if (Objects.isNull(modelResolver)) { - modelResolver = init(DataSetResolver.class); - } - return modelResolver; - } - public static T getBean(String name, Class tClass) { return ContextUtils.getContext().getBean(name, tClass); } diff --git a/headless/core/src/main/resources/META-INF/spring.factories b/headless/core/src/main/resources/META-INF/spring.factories deleted file mode 100644 index bde7179af..000000000 --- a/headless/core/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -com.tencent.supersonic.headless.core.file.FileHandler=\ - com.tencent.supersonic.headless.core.file.FileHandlerImpl \ No newline at end of file diff --git a/headless/pom.xml b/headless/pom.xml index 51d066630..f365658a5 100644 --- a/headless/pom.xml +++ b/headless/pom.xml @@ -16,6 +16,7 @@ api server core + chat diff --git a/headless/server/pom.xml b/headless/server/pom.xml index 353db2ccf..5100f944b 100644 --- a/headless/server/pom.xml +++ b/headless/server/pom.xml @@ -44,6 +44,11 @@ headless-core ${project.version} + + com.tencent.supersonic + headless-chat + ${project.version} + com.fasterxml.jackson.datatype jackson-datatype-jsr310 diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/FullMetaEmbeddingListener.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/FullMetaEmbeddingListener.java index 1fa30b0b7..766fe2b43 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/FullMetaEmbeddingListener.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/FullMetaEmbeddingListener.java @@ -1,7 +1,7 @@ package com.tencent.supersonic.headless.server.listener; -import com.tencent.supersonic.headless.core.chat.parser.llm.JavaLLMProxy; -import com.tencent.supersonic.headless.core.utils.ComponentFactory; +import com.tencent.supersonic.headless.chat.utils.ComponentFactory; +import com.tencent.supersonic.headless.chat.parser.llm.JavaLLMProxy; import com.tencent.supersonic.headless.server.schedule.EmbeddingTask; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/SchemaDictUpdateListener.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/SchemaDictUpdateListener.java index 59666051e..6561821e0 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/SchemaDictUpdateListener.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/listener/SchemaDictUpdateListener.java @@ -4,8 +4,8 @@ import com.tencent.supersonic.common.pojo.Constants; import com.tencent.supersonic.common.pojo.DataEvent; import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.common.pojo.enums.EventType; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationListener; import org.springframework.scheduling.annotation.Async; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/ChatContextRepository.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/ChatContextRepository.java index 7e50a45af..fac96356f 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/ChatContextRepository.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/ChatContextRepository.java @@ -1,6 +1,6 @@ package com.tencent.supersonic.headless.server.persistence.repository; -import com.tencent.supersonic.headless.core.pojo.ChatContext; +import com.tencent.supersonic.headless.chat.ChatContext; public interface ChatContextRepository { diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/ChatContextRepositoryImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/ChatContextRepositoryImpl.java index f687cecea..8c94d2b37 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/ChatContextRepositoryImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/ChatContextRepositoryImpl.java @@ -3,7 +3,7 @@ package com.tencent.supersonic.headless.server.persistence.repository.impl; import com.google.gson.Gson; import com.tencent.supersonic.common.util.JsonUtil; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.headless.core.pojo.ChatContext; +import com.tencent.supersonic.headless.chat.ChatContext; import com.tencent.supersonic.headless.server.persistence.dataobject.ChatContextDO; import com.tencent.supersonic.headless.server.persistence.mapper.ChatContextMapper; import com.tencent.supersonic.headless.server.persistence.repository.ChatContextRepository; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/ParseInfoProcessor.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/ParseInfoProcessor.java index 007e3895d..6c34b0079 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/ParseInfoProcessor.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/ParseInfoProcessor.java @@ -14,9 +14,9 @@ import com.tencent.supersonic.headless.api.pojo.SemanticSchema; import com.tencent.supersonic.headless.api.pojo.SqlInfo; import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; import com.tencent.supersonic.headless.server.service.impl.SemanticService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/ResultProcessor.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/ResultProcessor.java index 35202640f..f05e3211c 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/ResultProcessor.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/ResultProcessor.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.headless.server.processor; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; /** * A ParseResultProcessor wraps things up before returning results to users in parse stage. diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/SqlInfoProcessor.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/SqlInfoProcessor.java index 19ac8121c..bcc420d1f 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/SqlInfoProcessor.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/processor/SqlInfoProcessor.java @@ -8,11 +8,11 @@ import com.tencent.supersonic.headless.api.pojo.request.ExplainSqlReq; import com.tencent.supersonic.headless.api.pojo.request.SemanticQueryReq; import com.tencent.supersonic.headless.api.pojo.response.ExplainResp; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; -import com.tencent.supersonic.headless.core.chat.query.QueryManager; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMSqlQuery; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.query.QueryManager; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlQuery; import com.tencent.supersonic.headless.server.service.QueryService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/ChatContextService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/ChatContextService.java index fc450e492..aff83cc81 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/ChatContextService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/ChatContextService.java @@ -1,6 +1,6 @@ package com.tencent.supersonic.headless.server.service; -import com.tencent.supersonic.headless.core.pojo.ChatContext; +import com.tencent.supersonic.headless.chat.ChatContext; public interface ChatContextService { diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/WorkflowService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/WorkflowService.java index 2edfafe49..8dc164f79 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/WorkflowService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/WorkflowService.java @@ -1,8 +1,8 @@ package com.tencent.supersonic.headless.server.service; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; public interface WorkflowService { void startWorkflow(QueryContext queryCtx, ChatContext chatCtx, ParseResp parseResult); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ChatContextServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ChatContextServiceImpl.java index 5e412040e..5323e82cf 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ChatContextServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ChatContextServiceImpl.java @@ -1,7 +1,7 @@ package com.tencent.supersonic.headless.server.service.impl; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.headless.core.pojo.ChatContext; +import com.tencent.supersonic.headless.chat.ChatContext; import com.tencent.supersonic.headless.server.persistence.repository.ChatContextRepository; import com.tencent.supersonic.headless.server.service.ChatContextService; import lombok.extern.slf4j.Slf4j; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ChatQueryServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ChatQueryServiceImpl.java index e274d643b..5b64c1bc1 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ChatQueryServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/ChatQueryServiceImpl.java @@ -40,18 +40,18 @@ import com.tencent.supersonic.headless.api.pojo.response.ParseResp; import com.tencent.supersonic.headless.api.pojo.response.QueryResult; import com.tencent.supersonic.headless.api.pojo.response.QueryState; import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; -import com.tencent.supersonic.headless.core.chat.corrector.GrammarCorrector; -import com.tencent.supersonic.headless.core.chat.corrector.SchemaCorrector; -import com.tencent.supersonic.headless.core.chat.knowledge.HanlpMapResult; -import com.tencent.supersonic.headless.core.chat.knowledge.KnowledgeBaseService; -import com.tencent.supersonic.headless.core.chat.knowledge.SearchService; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.HanlpHelper; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.NatureHelper; -import com.tencent.supersonic.headless.core.chat.query.QueryManager; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.llm.s2sql.LLMSqlQuery; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.corrector.GrammarCorrector; +import com.tencent.supersonic.headless.chat.corrector.SchemaCorrector; +import com.tencent.supersonic.headless.chat.knowledge.HanlpMapResult; +import com.tencent.supersonic.headless.chat.knowledge.KnowledgeBaseService; +import com.tencent.supersonic.headless.chat.knowledge.SearchService; +import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.knowledge.helper.NatureHelper; +import com.tencent.supersonic.headless.chat.query.QueryManager; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlQuery; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; import com.tencent.supersonic.headless.server.persistence.dataobject.StatisticsDO; import com.tencent.supersonic.headless.server.service.ChatContextService; import com.tencent.supersonic.headless.server.service.ChatQueryService; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictTaskServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictTaskServiceImpl.java index 1151dabbc..92d0eac77 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictTaskServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictTaskServiceImpl.java @@ -8,9 +8,9 @@ import com.tencent.supersonic.headless.api.pojo.request.DictItemFilter; import com.tencent.supersonic.headless.api.pojo.request.DictSingleTaskReq; import com.tencent.supersonic.headless.api.pojo.response.DictItemResp; import com.tencent.supersonic.headless.api.pojo.response.DictTaskResp; -import com.tencent.supersonic.headless.core.file.FileHandler; -import com.tencent.supersonic.headless.core.chat.knowledge.KnowledgeBaseService; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.knowledge.KnowledgeBaseService; +import com.tencent.supersonic.headless.chat.knowledge.file.FileHandler; +import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper; import com.tencent.supersonic.headless.server.persistence.dataobject.DictTaskDO; import com.tencent.supersonic.headless.server.persistence.repository.DictRepository; import com.tencent.supersonic.headless.server.service.DictTaskService; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictWordService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictWordService.java index 08369d5bb..fdc5429ac 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictWordService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictWordService.java @@ -4,9 +4,9 @@ import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SemanticSchema; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; -import com.tencent.supersonic.headless.core.chat.knowledge.KnowledgeBaseService; -import com.tencent.supersonic.headless.core.chat.knowledge.builder.WordBuilderFactory; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.KnowledgeBaseService; +import com.tencent.supersonic.headless.chat.knowledge.builder.WordBuilderFactory; import com.tencent.supersonic.headless.server.service.SchemaService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetaDiscoveryServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetaDiscoveryServiceImpl.java index d7cadcad5..ba0338d37 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetaDiscoveryServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetaDiscoveryServiceImpl.java @@ -14,7 +14,7 @@ import com.tencent.supersonic.headless.api.pojo.response.DataSetMapInfo; import com.tencent.supersonic.headless.api.pojo.response.DataSetResp; import com.tencent.supersonic.headless.api.pojo.response.MapInfoResp; import com.tencent.supersonic.headless.api.pojo.response.MapResp; -import com.tencent.supersonic.headless.core.chat.knowledge.builder.BaseWordBuilder; +import com.tencent.supersonic.headless.chat.knowledge.builder.BaseWordBuilder; import com.tencent.supersonic.headless.server.pojo.MetaFilter; import com.tencent.supersonic.headless.server.service.ChatQueryService; import com.tencent.supersonic.headless.server.service.DataSetService; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SearchServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SearchServiceImpl.java index 781dc5783..5e8e919b8 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SearchServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SearchServiceImpl.java @@ -11,16 +11,16 @@ import com.tencent.supersonic.headless.api.pojo.request.QueryFilters; import com.tencent.supersonic.headless.api.pojo.request.QueryReq; import com.tencent.supersonic.headless.api.pojo.response.S2Term; import com.tencent.supersonic.headless.api.pojo.response.SearchResult; -import com.tencent.supersonic.headless.core.chat.mapper.MatchText; -import com.tencent.supersonic.headless.core.chat.mapper.ModelWithSemanticType; -import com.tencent.supersonic.headless.core.chat.mapper.SearchMatchStrategy; -import com.tencent.supersonic.headless.core.pojo.QueryContext; -import com.tencent.supersonic.headless.core.chat.knowledge.DataSetInfoStat; -import com.tencent.supersonic.headless.core.chat.knowledge.DictWord; -import com.tencent.supersonic.headless.core.chat.knowledge.HanlpMapResult; -import com.tencent.supersonic.headless.core.chat.knowledge.KnowledgeBaseService; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.HanlpHelper; -import com.tencent.supersonic.headless.core.chat.knowledge.helper.NatureHelper; +import com.tencent.supersonic.headless.chat.mapper.MatchText; +import com.tencent.supersonic.headless.chat.mapper.ModelWithSemanticType; +import com.tencent.supersonic.headless.chat.mapper.SearchMatchStrategy; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.knowledge.DataSetInfoStat; +import com.tencent.supersonic.headless.chat.knowledge.DictWord; +import com.tencent.supersonic.headless.chat.knowledge.HanlpMapResult; +import com.tencent.supersonic.headless.chat.knowledge.KnowledgeBaseService; +import com.tencent.supersonic.headless.chat.knowledge.helper.HanlpHelper; +import com.tencent.supersonic.headless.chat.knowledge.helper.NatureHelper; import com.tencent.supersonic.headless.server.service.ChatContextService; import com.tencent.supersonic.headless.server.service.DataSetService; import com.tencent.supersonic.headless.server.service.SearchService; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SemanticService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SemanticService.java index 5f0a29f03..2c6484f09 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SemanticService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SemanticService.java @@ -18,7 +18,7 @@ import com.tencent.supersonic.headless.api.pojo.TimeDefaultConfig; import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq; import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; -import com.tencent.supersonic.headless.core.utils.QueryReqBuilder; +import com.tencent.supersonic.headless.chat.utils.QueryReqBuilder; import com.tencent.supersonic.headless.server.service.QueryService; import com.tencent.supersonic.headless.server.service.SchemaService; import lombok.extern.slf4j.Slf4j; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/WorkflowServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/WorkflowServiceImpl.java index 0ff3ed01b..4da96b3fa 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/WorkflowServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/WorkflowServiceImpl.java @@ -3,13 +3,13 @@ package com.tencent.supersonic.headless.server.service.impl; import com.tencent.supersonic.common.util.JsonUtil; import com.tencent.supersonic.headless.api.pojo.enums.WorkflowState; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; -import com.tencent.supersonic.headless.core.chat.corrector.SemanticCorrector; -import com.tencent.supersonic.headless.core.chat.mapper.SchemaMapper; -import com.tencent.supersonic.headless.core.chat.parser.SemanticParser; -import com.tencent.supersonic.headless.core.chat.query.SemanticQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.RuleSemanticQuery; -import com.tencent.supersonic.headless.core.pojo.ChatContext; -import com.tencent.supersonic.headless.core.pojo.QueryContext; +import com.tencent.supersonic.headless.chat.ChatContext; +import com.tencent.supersonic.headless.chat.QueryContext; +import com.tencent.supersonic.headless.chat.corrector.SemanticCorrector; +import com.tencent.supersonic.headless.chat.mapper.SchemaMapper; +import com.tencent.supersonic.headless.chat.parser.SemanticParser; +import com.tencent.supersonic.headless.chat.query.SemanticQuery; +import com.tencent.supersonic.headless.chat.query.rule.RuleSemanticQuery; import com.tencent.supersonic.headless.server.processor.ResultProcessor; import com.tencent.supersonic.headless.server.service.WorkflowService; import com.tencent.supersonic.headless.server.utils.ComponentFactory; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ComponentFactory.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ComponentFactory.java index 8219cb1da..4d1d111ec 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ComponentFactory.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ComponentFactory.java @@ -1,9 +1,9 @@ package com.tencent.supersonic.headless.server.utils; import com.tencent.supersonic.common.util.ContextUtils; -import com.tencent.supersonic.headless.core.chat.corrector.SemanticCorrector; -import com.tencent.supersonic.headless.core.chat.mapper.SchemaMapper; -import com.tencent.supersonic.headless.core.chat.parser.SemanticParser; +import com.tencent.supersonic.headless.chat.corrector.SemanticCorrector; +import com.tencent.supersonic.headless.chat.mapper.SchemaMapper; +import com.tencent.supersonic.headless.chat.parser.SemanticParser; import com.tencent.supersonic.headless.server.processor.ResultProcessor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; diff --git a/launchers/standalone/src/main/resources/META-INF/spring.factories b/launchers/standalone/src/main/resources/META-INF/spring.factories index e0750b1e4..2bf4aa1dc 100644 --- a/launchers/standalone/src/main/resources/META-INF/spring.factories +++ b/launchers/standalone/src/main/resources/META-INF/spring.factories @@ -1,18 +1,29 @@ -com.tencent.supersonic.headless.core.chat.mapper.SchemaMapper=\ - com.tencent.supersonic.headless.core.chat.mapper.EmbeddingMapper, \ - com.tencent.supersonic.headless.core.chat.mapper.KeywordMapper, \ - com.tencent.supersonic.headless.core.chat.mapper.QueryFilterMapper, \ - com.tencent.supersonic.headless.core.chat.mapper.EntityMapper +### headless-chat SPIs -com.tencent.supersonic.headless.core.chat.parser.SemanticParser=\ - com.tencent.supersonic.headless.core.chat.parser.rule.RuleSqlParser, \ - com.tencent.supersonic.headless.core.chat.parser.llm.LLMSqlParser, \ - com.tencent.supersonic.headless.core.chat.parser.QueryTypeParser +com.tencent.supersonic.headless.chat.mapper.SchemaMapper=\ + com.tencent.supersonic.headless.chat.mapper.EmbeddingMapper, \ + com.tencent.supersonic.headless.chat.mapper.KeywordMapper, \ + com.tencent.supersonic.headless.chat.mapper.QueryFilterMapper, \ + com.tencent.supersonic.headless.chat.mapper.EntityMapper -com.tencent.supersonic.headless.core.chat.corrector.SemanticCorrector=\ - com.tencent.supersonic.headless.core.chat.corrector.SchemaCorrector, \ - com.tencent.supersonic.headless.core.chat.corrector.TimeCorrector, \ - com.tencent.supersonic.headless.core.chat.corrector.GrammarCorrector +com.tencent.supersonic.headless.chat.parser.SemanticParser=\ + com.tencent.supersonic.headless.chat.parser.rule.RuleSqlParser, \ + com.tencent.supersonic.headless.chat.parser.llm.LLMSqlParser, \ + com.tencent.supersonic.headless.chat.parser.QueryTypeParser + +com.tencent.supersonic.headless.chat.corrector.SemanticCorrector=\ + com.tencent.supersonic.headless.chat.corrector.SchemaCorrector, \ + com.tencent.supersonic.headless.chat.corrector.TimeCorrector, \ + com.tencent.supersonic.headless.chat.corrector.GrammarCorrector + +com.tencent.supersonic.headless.chat.knowledge.file.FileHandler=\ + com.tencent.supersonic.headless.chat.knowledge.file.FileHandlerImpl + +com.tencent.supersonic.headless.chat.parser.llm.DataSetResolver=\ + com.tencent.supersonic.headless.chat.parser.llm.HeuristicDataSetResolver + + +### headless-core SPIs com.tencent.supersonic.headless.core.parser.converter.HeadlessConverter=\ com.tencent.supersonic.headless.core.parser.converter.DefaultDimValueConverter,\ @@ -32,18 +43,15 @@ com.tencent.supersonic.headless.core.parser.SqlParser=\ com.tencent.supersonic.headless.core.cache.QueryCache=\ com.tencent.supersonic.headless.core.cache.DefaultQueryCache -com.tencent.supersonic.headless.core.chat.parser.llm.DataSetResolver=\ - com.tencent.supersonic.headless.core.chat.parser.llm.HeuristicDataSetResolver + +### headless-server SPIs com.tencent.supersonic.headless.server.processor.ResultProcessor=\ com.tencent.supersonic.headless.server.processor.ParseInfoProcessor, \ com.tencent.supersonic.headless.server.processor.SqlInfoProcessor -com.tencent.supersonic.auth.authentication.interceptor.AuthenticationInterceptor=\ - com.tencent.supersonic.auth.authentication.interceptor.DefaultAuthenticationInterceptor -com.tencent.supersonic.auth.api.authentication.adaptor.UserAdaptor=\ - com.tencent.supersonic.auth.authentication.adaptor.DefaultUserAdaptor +### chat-server SPIs com.tencent.supersonic.chat.server.parser.ChatParser=\ com.tencent.supersonic.chat.server.parser.NL2PluginParser, \ @@ -67,5 +75,16 @@ com.tencent.supersonic.chat.server.processor.execute.ExecuteResultProcessor=\ com.tencent.supersonic.chat.server.processor.execute.DimensionRecommendProcessor,\ com.tencent.supersonic.chat.server.processor.execute.MetricRatioProcessor +### auth-authentication SPIs + +com.tencent.supersonic.auth.authentication.interceptor.AuthenticationInterceptor=\ + com.tencent.supersonic.auth.authentication.interceptor.DefaultAuthenticationInterceptor + +com.tencent.supersonic.auth.api.authentication.adaptor.UserAdaptor=\ + com.tencent.supersonic.auth.authentication.adaptor.DefaultUserAdaptor + + +### common SPIs + com.tencent.supersonic.common.util.embedding.S2EmbeddingStore=\ com.tencent.supersonic.common.util.embedding.InMemoryS2EmbeddingStore diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java index 1e3b5cc59..a47755a46 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java @@ -7,10 +7,10 @@ import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; import com.tencent.supersonic.headless.api.pojo.response.ParseResp; import com.tencent.supersonic.headless.api.pojo.response.QueryResult; -import com.tencent.supersonic.headless.core.chat.query.rule.metric.MetricFilterQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.metric.MetricGroupByQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.metric.MetricModelQuery; -import com.tencent.supersonic.headless.core.chat.query.rule.metric.MetricTopNQuery; +import com.tencent.supersonic.headless.chat.query.rule.metric.MetricFilterQuery; +import com.tencent.supersonic.headless.chat.query.rule.metric.MetricGroupByQuery; +import com.tencent.supersonic.headless.chat.query.rule.metric.MetricModelQuery; +import com.tencent.supersonic.headless.chat.query.rule.metric.MetricTopNQuery; import com.tencent.supersonic.util.DataUtils; import org.junit.Assert; import org.junit.jupiter.api.Test; diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MultiTurnsTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MultiTurnsTest.java index 444f10cf4..508108656 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MultiTurnsTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MultiTurnsTest.java @@ -5,7 +5,7 @@ import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum; import com.tencent.supersonic.common.pojo.enums.QueryType; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.response.QueryResult; -import com.tencent.supersonic.headless.core.chat.query.rule.metric.MetricFilterQuery; +import com.tencent.supersonic.headless.chat.query.rule.metric.MetricFilterQuery; import com.tencent.supersonic.util.DataUtils; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/TagTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/TagTest.java index c7ebad16d..9a8086819 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/TagTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/TagTest.java @@ -8,7 +8,7 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElement; import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo; import com.tencent.supersonic.headless.api.pojo.request.QueryFilter; import com.tencent.supersonic.headless.api.pojo.response.QueryResult; -import com.tencent.supersonic.headless.core.chat.query.rule.detail.DetailFilterQuery; +import com.tencent.supersonic.headless.chat.query.rule.detail.DetailFilterQuery; import com.tencent.supersonic.util.DataUtils; import org.junit.jupiter.api.Test; diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/evaluation/Text2SQLEval.java b/launchers/standalone/src/test/java/com/tencent/supersonic/evaluation/Text2SQLEval.java index 2958e5f56..2f28323e0 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/evaluation/Text2SQLEval.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/evaluation/Text2SQLEval.java @@ -141,7 +141,6 @@ public class Text2SQLEval extends BaseTest { apiKey = "REPLACE_WITH_YOUR_KEY"; modelName = "gpt-3.5-turbo"; temperature = 0.0; - break; } return new LLMConfig("open_ai", diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/ExplainTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/ExplainTest.java index a39b97a06..ed662eab3 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/ExplainTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/ExplainTest.java @@ -7,7 +7,7 @@ import com.tencent.supersonic.headless.api.pojo.request.ExplainSqlReq; import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq; import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq; import com.tencent.supersonic.headless.api.pojo.response.ExplainResp; -import com.tencent.supersonic.headless.core.utils.QueryReqBuilder; +import com.tencent.supersonic.headless.chat.utils.QueryReqBuilder; import com.tencent.supersonic.util.DataUtils; import org.junit.jupiter.api.Test; diff --git a/launchers/standalone/src/test/resources/META-INF/spring.factories b/launchers/standalone/src/test/resources/META-INF/spring.factories index e8efe39a2..eb2fc868f 100644 --- a/launchers/standalone/src/test/resources/META-INF/spring.factories +++ b/launchers/standalone/src/test/resources/META-INF/spring.factories @@ -1,13 +1,13 @@ -com.tencent.supersonic.headless.core.chat.mapper.SchemaMapper=\ - com.tencent.supersonic.headless.core.chat.mapper.EmbeddingMapper, \ - com.tencent.supersonic.headless.core.chat.mapper.KeywordMapper, \ - com.tencent.supersonic.headless.core.chat.mapper.QueryFilterMapper, \ - com.tencent.supersonic.headless.core.chat.mapper.EntityMapper +com.tencent.supersonic.headless.chat.mapper.SchemaMapper=\ + com.tencent.supersonic.headless.chat.mapper.EmbeddingMapper, \ + com.tencent.supersonic.headless.chat.mapper.KeywordMapper, \ + com.tencent.supersonic.headless.chat.mapper.QueryFilterMapper, \ + com.tencent.supersonic.headless.chat.mapper.EntityMapper -com.tencent.supersonic.headless.core.chat.parser.SemanticParser=\ - com.tencent.supersonic.headless.core.chat.parser.rule.RuleSqlParser, \ - com.tencent.supersonic.headless.core.chat.parser.llm.LLMSqlParser, \ - com.tencent.supersonic.headless.core.chat.parser.QueryTypeParser +com.tencent.supersonic.headless.chat.parser.SemanticParser=\ + com.tencent.supersonic.headless.chat.parser.rule.RuleSqlParser, \ + com.tencent.supersonic.headless.chat.parser.llm.LLMSqlParser, \ + com.tencent.supersonic.headless.chat.parser.QueryTypeParser com.tencent.supersonic.chat.server.parser.ChatParser=\ com.tencent.supersonic.chat.server.parser.NL2PluginParser, \ @@ -17,10 +17,10 @@ com.tencent.supersonic.chat.server.executor.ChatExecutor=\ com.tencent.supersonic.chat.server.executor.PluginExecutor, \ com.tencent.supersonic.chat.server.executor.SqlExecutor -com.tencent.supersonic.headless.core.chat.corrector.SemanticCorrector=\ - com.tencent.supersonic.headless.core.chat.corrector.SchemaCorrector, \ - com.tencent.supersonic.headless.core.chat.corrector.TimeCorrector, \ - com.tencent.supersonic.headless.core.chat.corrector.GrammarCorrector +com.tencent.supersonic.headless.chat.corrector.SemanticCorrector=\ + com.tencent.supersonic.headless.chat.corrector.SchemaCorrector, \ + com.tencent.supersonic.headless.chat.corrector.TimeCorrector, \ + com.tencent.supersonic.headless.chat.corrector.GrammarCorrector com.tencent.supersonic.headless.core.parser.converter.HeadlessConverter=\ com.tencent.supersonic.headless.core.parser.converter.DefaultDimValueConverter,\ @@ -44,8 +44,8 @@ com.tencent.supersonic.headless.server.processor.ResultProcessor=\ com.tencent.supersonic.headless.server.processor.ParseInfoProcessor, \ com.tencent.supersonic.headless.server.processor.SqlInfoProcessor -com.tencent.supersonic.headless.core.chat.parser.llm.DataSetResolver=\ - com.tencent.supersonic.headless.core.chat.parser.llm.HeuristicDataSetResolver +com.tencent.supersonic.headless.chat.parser.llm.DataSetResolver=\ + com.tencent.supersonic.headless.chat.parser.llm.HeuristicDataSetResolver com.tencent.supersonic.auth.authentication.interceptor.AuthenticationInterceptor=\ com.tencent.supersonic.auth.authentication.interceptor.DefaultAuthenticationInterceptor