[improvement][headless-chat]Incorporate Request into Context objects, removing unnecessary copy.

This commit is contained in:
jerryjzhang
2024-10-27 18:47:34 +08:00
parent bd82b0904b
commit bb363a0286
33 changed files with 87 additions and 112 deletions

View File

@@ -93,19 +93,6 @@ public class S2ChatLayerService implements ChatLayerService {
return parseResult;
}
private ChatQueryContext buildChatQueryContext(QueryNLReq queryNLReq) {
SemanticSchema semanticSchema = schemaService.getSemanticSchema(queryNLReq.getDataSetIds());
Map<Long, List<Long>> modelIdToDataSetIds = dataSetService.getModelIdToDataSetIds();
ChatQueryContext queryCtx = ChatQueryContext.builder()
.queryFilters(queryNLReq.getQueryFilters()).semanticSchema(semanticSchema)
.candidateQueries(new ArrayList<>()).mapInfo(new SchemaMapInfo())
.modelIdToDataSetIds(modelIdToDataSetIds).text2SQLType(queryNLReq.getText2SQLType())
.mapModeEnum(queryNLReq.getMapModeEnum()).dataSetIds(queryNLReq.getDataSetIds())
.build();
BeanUtils.copyProperties(queryNLReq, queryCtx);
return queryCtx;
}
public void correct(QuerySqlReq querySqlReq, User user) {
SemanticParseInfo semanticParseInfo = correctSqlReq(querySqlReq, user);
querySqlReq.setSql(semanticParseInfo.getSqlInfo().getCorrectedS2SQL());
@@ -122,6 +109,15 @@ public class S2ChatLayerService implements ChatLayerService {
return retrieveService.retrieve(queryNLReq);
}
private ChatQueryContext buildChatQueryContext(QueryNLReq queryNLReq) {
ChatQueryContext queryCtx = new ChatQueryContext(queryNLReq);
SemanticSchema semanticSchema = schemaService.getSemanticSchema(queryNLReq.getDataSetIds());
Map<Long, List<Long>> modelIdToDataSetIds = dataSetService.getModelIdToDataSetIds();
queryCtx.setSemanticSchema(semanticSchema);
queryCtx.setModelIdToDataSetIds(modelIdToDataSetIds);
return queryCtx;
}
private SemanticParseInfo correctSqlReq(QuerySqlReq querySqlReq, User user) {
ChatQueryContext queryCtx = new ChatQueryContext();
SemanticSchema semanticSchema =

View File

@@ -26,7 +26,7 @@ public class EntityInfoProcessor implements ResultProcessor {
DataSetSchema dataSetSchema =
semanticService.getDataSetSchema(parseInfo.getDataSetId());
EntityInfo entityInfo = semanticService.getEntityInfo(parseInfo, dataSetSchema,
chatQueryContext.getUser());
chatQueryContext.getRequest().getUser());
parseInfo.setEntityInfo(entityInfo);
});
}

View File

@@ -24,7 +24,6 @@ import com.tencent.supersonic.headless.server.service.RetrieveService;
import com.tencent.supersonic.headless.server.service.SchemaService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -75,8 +74,7 @@ public class RetrieveServiceImpl implements RetrieveService {
log.debug("originals terms: {}", originals);
Set<Long> dataSetIds = queryNLReq.getDataSetIds();
ChatQueryContext chatQueryContext = new ChatQueryContext();
BeanUtils.copyProperties(queryNLReq, chatQueryContext);
ChatQueryContext chatQueryContext = new ChatQueryContext(queryNLReq);
chatQueryContext.setModelIdToDataSetIds(dataSetService.getModelIdToDataSetIds());
Map<MatchText, List<HanlpMapResult>> regTextMap =

View File

@@ -140,7 +140,7 @@ public class ChatWorkflowEngine {
SemanticLayerService queryService =
ContextUtils.getBean(SemanticLayerService.class);
SemanticTranslateResp explain =
queryService.translate(semanticQueryReq, queryCtx.getUser());
queryService.translate(semanticQueryReq, queryCtx.getRequest().getUser());
parseInfo.getSqlInfo().setQuerySQL(explain.getQuerySQL());
if (StringUtils.isNotBlank(explain.getErrMsg())) {
errorMsg.add(explain.getErrMsg());