mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 04:27:39 +00:00
(improvement)(chat) Fix agent filter rule query (#777)
Co-authored-by: jolunoluo
This commit is contained in:
@@ -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()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user