(improvement)(chat)Add PostProcessor to do some logic after parser and corrector (#403)

* (improvement)(chat) Add PostProcessor to do some logic after parser and corrector

* (improvement)(chat) Add MetricCheckPostProcessor used to verify whether the dimensions involved in the query in metric mode can drill down on the metric

---------

Co-authored-by: jolunoluo
This commit is contained in:
LXW
2023-11-20 09:58:25 +08:00
committed by GitHub
parent dd115f9d37
commit 0143b0a1b2
24 changed files with 690 additions and 249 deletions

View File

@@ -44,4 +44,33 @@ public class ModelSchema {
}
}
public SchemaElement getElement(SchemaElementType elementType, String name) {
Optional<SchemaElement> element = Optional.empty();
switch (elementType) {
case ENTITY:
element = Optional.ofNullable(entity);
break;
case MODEL:
element = Optional.of(model);
break;
case METRIC:
element = metrics.stream().filter(e -> name.equals(e.getName())).findFirst();
break;
case DIMENSION:
element = dimensions.stream().filter(e -> name.equals(e.getName())).findFirst();
break;
case VALUE:
element = dimensionValues.stream().filter(e -> name.equals(e.getName())).findFirst();
break;
default:
}
if (element.isPresent()) {
return element.get();
} else {
return null;
}
}
}

View File

@@ -1,9 +1,15 @@
package com.tencent.supersonic.chat.api.pojo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RelateSchemaElement {
private Long dimensionId;

View File

@@ -1,21 +1,11 @@
package com.tencent.supersonic.chat.api.pojo.response;
import cn.hutool.core.collection.CollectionUtil;
import com.google.common.collect.Lists;
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
import lombok.Data;
import lombok.Getter;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.util.List;
@Data
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ParseResp {
private Integer chatId;
private String queryText;
@@ -23,8 +13,7 @@ public class ParseResp {
private ParseState state;
private List<SemanticParseInfo> selectedParses = Lists.newArrayList();
private List<SemanticParseInfo> candidateParses = Lists.newArrayList();
private List<SolvedQueryRecallResp> similarSolvedQuery;
private ParseTimeCostDO parseTimeCost;
private ParseTimeCostDO parseTimeCost = new ParseTimeCostDO();
public enum ParseState {
COMPLETED,
@@ -32,12 +21,4 @@ public class ParseResp {
FAILED
}
public List<SemanticParseInfo> getSelectedParses() {
selectedParses = Lists.newArrayList();
if (CollectionUtil.isNotEmpty(candidateParses)) {
selectedParses.addAll(candidateParses);
candidateParses.clear();
}
return selectedParses;
}
}

View File

@@ -4,6 +4,12 @@ import lombok.Data;
@Data
public class ParseTimeCostDO {
private Long parseTime;
private Long sqlTime;
private long parseStartTime;
private long parseTime;
private long sqlTime;
public ParseTimeCostDO() {
this.parseStartTime = System.currentTimeMillis();
}
}