(improvement)(chat) Fix agent filter rule query (#777)

Co-authored-by: jolunoluo
This commit is contained in:
LXW
2024-02-29 12:45:11 +08:00
committed by GitHub
parent 895f38b6f7
commit 532a00518c

View File

@@ -23,20 +23,22 @@ public class AgentCheckParser implements SemanticParser {
@Override @Override
public void parse(QueryContext queryContext, ChatContext chatContext) { public void parse(QueryContext queryContext, ChatContext chatContext) {
List<SemanticQuery> queries = queryContext.getCandidateQueries(); List<SemanticQuery> queries = queryContext.getCandidateQueries();
agentCanSupport(queryContext, queries); log.info("query size before agent filter:{}", queryContext.getCandidateQueries().size());
filterQueries(queryContext, queries);
log.info("query size after agent filter: {}", queryContext.getCandidateQueries().size());
} }
private void agentCanSupport(QueryContext queryContext, List<SemanticQuery> queries) { private void filterQueries(QueryContext queryContext, List<SemanticQuery> queries) {
Agent agent = queryContext.getAgent(); Agent agent = queryContext.getAgent();
if (agent == null) { if (agent == null) {
return; return;
} }
List<RuleParserTool> queryTools = getRuleTools(agent); List<RuleParserTool> queryTools = getRuleTools(agent);
if (CollectionUtils.isEmpty(queryTools)) { if (CollectionUtils.isEmpty(queryTools)) {
queries.clear(); queryContext.setCandidateQueries(Lists.newArrayList());
return; return;
} }
log.info("queries resolved:{} {}", agent.getName(), log.info("agent name :{}, queries resolved: {}", agent.getName(),
queries.stream().map(SemanticQuery::getQueryMode).collect(Collectors.toList())); queries.stream().map(SemanticQuery::getQueryMode).collect(Collectors.toList()));
queries.removeIf(query -> { queries.removeIf(query -> {
for (RuleParserTool tool : queryTools) { for (RuleParserTool tool : queryTools) {
@@ -46,10 +48,14 @@ public class AgentCheckParser implements SemanticParser {
} }
if (CollectionUtils.isNotEmpty(tool.getQueryTypes())) { if (CollectionUtils.isNotEmpty(tool.getQueryTypes())) {
if (QueryManager.isTagQuery(query.getQueryMode())) { if (QueryManager.isTagQuery(query.getQueryMode())) {
return !tool.getQueryTypes().contains(QueryType.TAG.name()); if (!tool.getQueryTypes().contains(QueryType.TAG.name())) {
return true;
}
} }
if (QueryManager.isMetricQuery(query.getQueryMode())) { if (QueryManager.isMetricQuery(query.getQueryMode())) {
return !tool.getQueryTypes().contains(QueryType.METRIC.name()); if (!tool.getQueryTypes().contains(QueryType.METRIC.name())) {
return true;
}
} }
} }
if (CollectionUtils.isEmpty(tool.getViewIds())) { if (CollectionUtils.isEmpty(tool.getViewIds())) {
@@ -62,7 +68,8 @@ public class AgentCheckParser implements SemanticParser {
} }
return true; return true;
}); });
log.info("rule queries witch can be supported by agent :{} {}", agent.getName(), queryContext.setCandidateQueries(queries);
log.info("agent name :{}, rule queries witch can be supported by agent :{}", agent.getName(),
queries.stream().map(SemanticQuery::getQueryMode).collect(Collectors.toList())); queries.stream().map(SemanticQuery::getQueryMode).collect(Collectors.toList()));
} }