From 710f120e38ee16ec39e17661cde2abe0aa89ec99 Mon Sep 17 00:00:00 2001 From: jerryjzhang Date: Fri, 17 May 2024 15:53:10 +0800 Subject: [PATCH] (improvement)(assembly)Improve build scripts --- assembly/bin/supersonic-build.sh | 11 ++++++----- .../headless/core/chat/parser/SemanticParser.java | 6 +++--- .../core/chat/parser/llm/LLMSqlParser.java | 15 ++++++++++----- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/assembly/bin/supersonic-build.sh b/assembly/bin/supersonic-build.sh index 4aeae14e2..39fd75a7e 100755 --- a/assembly/bin/supersonic-build.sh +++ b/assembly/bin/supersonic-build.sh @@ -48,7 +48,7 @@ function packageRelease { # package webapp tar xvf supersonic-webapp.tar.gz mv supersonic-webapp webapp - json='{"env": "'$model_name'"}' + json='{"env": "''"}' echo $json > webapp/supersonic.config.json mv webapp $release_dir/ # package java service @@ -57,9 +57,8 @@ function packageRelease { # generate zip file zip -r $release_dir.zip $release_dir # delete intermediate files - rm -rf supersonic-webapp.tar.gz - rm -rf $service_name-bin.tar.gz - rm -rf $service_name + rm supersonic-webapp.tar.gz $service_name-bin.tar.gz + rm -rf webapp $service_name $release_dir echo "finished packaging supersonic release" } @@ -71,7 +70,9 @@ if [ "$service" == $PYLLM_SERVICE ]; then echo "install python modules success" elif [ "$service" == "webapp" ]; then buildWebapp - cp -fr webapp $projectDir/launchers/$STANDALONE_SERVICE/target/classes + target_path=$projectDir/launchers/$STANDALONE_SERVICE/target/classes + tar xvf $projectDir/webapp/supersonic-webapp.tar.gz -C $target_path + mv $target_path/supersonic_webapp $target_path/webapp else buildJavaService $service buildWebapp diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/SemanticParser.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/SemanticParser.java index 8e57cb973..93554ebe1 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/SemanticParser.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/SemanticParser.java @@ -4,9 +4,9 @@ import com.tencent.supersonic.headless.core.pojo.ChatContext; import com.tencent.supersonic.headless.core.pojo.QueryContext; /** - * A semantic parser understands user queries and extracts semantic information. - * It could leverage either rule-based or LLM-based approach to identify query intent - * and extract related semantic items from the query. + * A semantic parser understands user queries and generates semantic query statement. + * SuperSonic leverages a combination of rule-based and LLM-based parsers, + * each of which deals with specific scenarios. */ public interface SemanticParser { diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMSqlParser.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMSqlParser.java index a813f8cc9..d84a65712 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMSqlParser.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/chat/parser/llm/LLMSqlParser.java @@ -17,6 +17,10 @@ import java.util.List; import java.util.Map; import java.util.Objects; +/** + * LLMSqlParser uses large language model to understand query semantics and + * generate S2SQL statements to be executed by the semantic query engine. + */ @Slf4j public class LLMSqlParser implements SemanticParser { @@ -30,20 +34,21 @@ public class LLMSqlParser implements SemanticParser { try { //2.get dataSetId from queryCtx and chatCtx. Long dataSetId = requestService.getDataSetId(queryCtx); - log.info("dataSetId:{}", dataSetId); if (dataSetId == null) { return; } - //3.construct a request, call the API for the large model, and retrieve the results. + log.info("Generate query statement for dataSetId:{}", dataSetId); + + //3.invoke LLM service to do parsing. List linkingValues = requestService.getValueList(queryCtx, dataSetId); SemanticSchema semanticSchema = queryCtx.getSemanticSchema(); LLMReq llmReq = requestService.getLlmReq(queryCtx, dataSetId, semanticSchema, linkingValues); LLMResp llmResp = requestService.requestLLM(llmReq, dataSetId); - if (Objects.isNull(llmResp)) { return; } - //4. deduplicate the SQL result list and build parserInfo + + //4. deduplicate the S2SQL result list and build parserInfo LLMResponseService responseService = ContextUtils.getBean(LLMResponseService.class); Map deduplicationSqlResp = responseService.getDeduplicationSqlResp(llmResp); ParseResult parseResult = ParseResult.builder() @@ -66,7 +71,7 @@ public class LLMSqlParser implements SemanticParser { } } catch (Exception e) { - log.error("parse", e); + log.error("Failed to parse query:", e); } }