Skip to content

Commit be0447a

Browse files
BigdataQIJIunknown
andauthored
修复headless中字段查询及多轮对话使用问题 (#2252)
* (fix)(headless)修复生成的SQL字段不在数据集内,导致查询异常的问题,由原来的字段数量判断更改为查询字段是否包含维度和度量字段 * (fix)(headless) <修复开启多轮对话会使用默认的gpt-4o-mini账号去进行过程检测而不是使用配置好的本地大模型的问题> * 修复维度值导入字典时,维度值和度量值为英文名导致字段不匹配的问题 修复维度值导入字典时,维度值和度量值为英文名导致字段不匹配的问题。 维度值导入字典时会遍历调用到SqlQueryParser方法,这时的维度值或度量值为Bizname而非name,新增一个set用于添加Bizname,并在判断中新加入Bizname名的判断,只要两个条件符合一个即可 --------- Co-authored-by: unknown <qiji2@DC=corp,DC=conbagroup,DC=com.com> Co-authored-by: QJ_wonder <38885395+xinpiannanhai@users.noreply.github.com>
1 parent 1b8cd7f commit be0447a

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/EmbeddingMatchStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ public List<EmbeddingResult> detectByBatch(ChatQueryContext chatQueryContext,
167167
variable.put("retrievedInfo", JSONObject.toJSONString(results));
168168

169169
Prompt prompt = PromptTemplate.from(LLM_FILTER_PROMPT).apply(variable);
170-
ChatLanguageModel chatLanguageModel = ModelProvider.getChatModel();
170+
ChatLanguageModel chatLanguageModel = ModelProvider.getChatModel(chatQueryContext.getRequest().getChatAppConfig().get("REWRITE_MULTI_TURN").getChatModelConfig());
171171
String response = chatLanguageModel.generate(prompt.toUserMessage().singleText());
172172

173173
if (StringUtils.isBlank(response)) {

headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/SqlQueryParser.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,17 @@ public void parse(QueryStatement queryStatement) throws Exception {
4747
SqlQuery sqlQuery = queryStatement.getSqlQuery();
4848
List<String> queryFields = SqlSelectHelper.getAllSelectFields(sqlQuery.getSql());
4949
Set<String> queryAliases = SqlSelectHelper.getAliasFields(sqlQuery.getSql());
50+
Set<String> ontologyMetricsDimensions = Collections.synchronizedSet(new HashSet<String>());
51+
Set<String> ontologyBizNameMetricsDimensions = Collections.synchronizedSet(new HashSet<String>());
5052
queryFields.removeAll(queryAliases);
5153
Ontology ontology = queryStatement.getOntology();
5254
OntologyQuery ontologyQuery = buildOntologyQuery(ontology, queryFields);
55+
Set<String> queryFieldsSet = new HashSet<>(queryFields);
56+
ontologyQuery.getMetrics().forEach(m -> {ontologyMetricsDimensions.add(m.getName()); ontologyBizNameMetricsDimensions.add(m.getBizName());});
57+
ontologyQuery.getDimensions().forEach(d -> {ontologyMetricsDimensions.add(d.getName()); ontologyBizNameMetricsDimensions.add(d.getBizName());});
5358
// check if there are fields not matched with any metric or dimension
54-
if (queryFields.size() > ontologyQuery.getMetrics().size()
55-
+ ontologyQuery.getDimensions().size()) {
59+
60+
if (!(queryFieldsSet.containsAll(ontologyMetricsDimensions)||queryFieldsSet.containsAll(ontologyBizNameMetricsDimensions))) {
5661
List<String> semanticFields = Lists.newArrayList();
5762
ontologyQuery.getMetrics().forEach(m -> semanticFields.add(m.getName()));
5863
ontologyQuery.getDimensions().forEach(d -> semanticFields.add(d.getName()));

0 commit comments

Comments
 (0)