mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 20:51:48 +00:00
[improvement][chat] Remove deprecated executeQuery method
This commit is contained in:
@@ -3,8 +3,10 @@ package com.tencent.supersonic.chat.api.pojo.request;
|
|||||||
|
|
||||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||||
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
|
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Builder
|
||||||
@Data
|
@Data
|
||||||
public class ExecuteQueryReq {
|
public class ExecuteQueryReq {
|
||||||
private User user;
|
private User user;
|
||||||
|
|||||||
@@ -41,13 +41,6 @@ public class ChatQueryController {
|
|||||||
return searchService.search(queryCtx);
|
return searchService.search(queryCtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("query")
|
|
||||||
public Object query(@RequestBody QueryReq queryCtx, HttpServletRequest request, HttpServletResponse response)
|
|
||||||
throws Exception {
|
|
||||||
queryCtx.setUser(UserHolder.findUser(request, response));
|
|
||||||
return queryService.executeQuery(queryCtx);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("parse")
|
@PostMapping("parse")
|
||||||
public Object parse(@RequestBody QueryReq queryCtx, HttpServletRequest request, HttpServletResponse response)
|
public Object parse(@RequestBody QueryReq queryCtx, HttpServletRequest request, HttpServletResponse response)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ public interface QueryService {
|
|||||||
|
|
||||||
QueryResult performExecution(ExecuteQueryReq queryReq) throws Exception;
|
QueryResult performExecution(ExecuteQueryReq queryReq) throws Exception;
|
||||||
|
|
||||||
QueryResult executeQuery(QueryReq queryReq) throws Exception;
|
|
||||||
|
|
||||||
SemanticParseInfo queryContext(QueryReq queryReq);
|
SemanticParseInfo queryContext(QueryReq queryReq);
|
||||||
|
|
||||||
QueryResult executeDirectQuery(QueryDataReq queryData, User user) throws SqlParseException;
|
QueryResult executeDirectQuery(QueryDataReq queryData, User user) throws SqlParseException;
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ public class QueryServiceImpl implements QueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// save time cost data
|
// save time cost data
|
||||||
public void saveInfo(List<StatisticsDO> timeCostDOList,
|
private void saveInfo(List<StatisticsDO> timeCostDOList,
|
||||||
String queryText, Long queryId,
|
String queryText, Long queryId,
|
||||||
String userName, Long chatId) {
|
String userName, Long chatId) {
|
||||||
List<StatisticsDO> list = timeCostDOList.stream()
|
List<StatisticsDO> list = timeCostDOList.stream()
|
||||||
@@ -284,47 +284,6 @@ public class QueryServiceImpl implements QueryService {
|
|||||||
.queryText(queryReq.getQueryText()).build());
|
.queryText(queryReq.getQueryText()).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public QueryResult executeQuery(QueryReq queryReq) throws Exception {
|
|
||||||
QueryContext queryCtx = new QueryContext(queryReq);
|
|
||||||
// in order to support multi-turn conversation, chat context is needed
|
|
||||||
ChatContext chatCtx = chatService.getOrCreateContext(queryReq.getChatId());
|
|
||||||
|
|
||||||
schemaMappers.stream().forEach(mapper -> {
|
|
||||||
mapper.map(queryCtx);
|
|
||||||
log.info("{} result:{}", mapper.getClass().getSimpleName(), JsonUtil.toString(queryCtx));
|
|
||||||
});
|
|
||||||
|
|
||||||
semanticParsers.stream().forEach(parser -> {
|
|
||||||
parser.parse(queryCtx, chatCtx);
|
|
||||||
log.info("{} result:{}", parser.getClass().getSimpleName(), JsonUtil.toString(queryCtx));
|
|
||||||
});
|
|
||||||
|
|
||||||
QueryResult queryResult = null;
|
|
||||||
if (queryCtx.getCandidateQueries().size() > 0) {
|
|
||||||
log.info("pick before [{}]", queryCtx.getCandidateQueries().stream().collect(
|
|
||||||
Collectors.toList()));
|
|
||||||
List<SemanticQuery> selectedQueries = querySelector.select(queryCtx.getCandidateQueries(), queryReq);
|
|
||||||
log.info("pick after [{}]", selectedQueries.stream().collect(
|
|
||||||
Collectors.toList()));
|
|
||||||
|
|
||||||
SemanticQuery semanticQuery = selectedQueries.get(0);
|
|
||||||
queryResult = semanticQuery.execute(queryReq.getUser());
|
|
||||||
if (queryResult != null) {
|
|
||||||
chatCtx.setQueryText(queryReq.getQueryText());
|
|
||||||
// update chat context after a successful semantic query
|
|
||||||
if (queryReq.isSaveAnswer() && QueryState.SUCCESS.equals(queryResult.getQueryState())) {
|
|
||||||
chatCtx.setParseInfo(semanticQuery.getParseInfo());
|
|
||||||
chatService.updateContext(chatCtx);
|
|
||||||
}
|
|
||||||
queryResult.setChatContext(chatCtx.getParseInfo());
|
|
||||||
chatService.addQuery(queryResult, chatCtx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return queryResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SemanticParseInfo queryContext(QueryReq queryCtx) {
|
public SemanticParseInfo queryContext(QueryReq queryCtx) {
|
||||||
ChatContext context = chatService.getOrCreateContext(queryCtx.getChatId());
|
ChatContext context = chatService.getOrCreateContext(queryCtx.getChatId());
|
||||||
@@ -463,7 +422,7 @@ public class QueryServiceImpl implements QueryService {
|
|||||||
parseInfo.setDateInfo(queryData.getDateInfo());
|
parseInfo.setDateInfo(queryData.getDateInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends ComparisonOperator> void addTimeFilters(String date,
|
private <T extends ComparisonOperator> void addTimeFilters(String date,
|
||||||
T comparisonExpression,
|
T comparisonExpression,
|
||||||
List<Expression> addConditions) {
|
List<Expression> addConditions) {
|
||||||
Column column = new Column(TimeDimensionEnum.DAY.getChName());
|
Column column = new Column(TimeDimensionEnum.DAY.getChName());
|
||||||
@@ -513,7 +472,7 @@ public class QueryServiceImpl implements QueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// add in condition to sql where condition
|
// add in condition to sql where condition
|
||||||
public void addWhereInFilters(QueryFilter dslQueryFilter,
|
private void addWhereInFilters(QueryFilter dslQueryFilter,
|
||||||
InExpression inExpression,
|
InExpression inExpression,
|
||||||
Set<QueryFilter> contextMetricFilters,
|
Set<QueryFilter> contextMetricFilters,
|
||||||
List<Expression> addConditions) {
|
List<Expression> addConditions) {
|
||||||
@@ -542,7 +501,7 @@ public class QueryServiceImpl implements QueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// add where filter
|
// add where filter
|
||||||
public <T extends ComparisonOperator> void addWhereFilters(QueryFilter dslQueryFilter,
|
private <T extends ComparisonOperator> void addWhereFilters(QueryFilter dslQueryFilter,
|
||||||
T comparisonExpression,
|
T comparisonExpression,
|
||||||
Set<QueryFilter> contextMetricFilters,
|
Set<QueryFilter> contextMetricFilters,
|
||||||
List<Expression> addConditions) {
|
List<Expression> addConditions) {
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ package com.tencent.supersonic.integration;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.tencent.supersonic.StandaloneLauncher;
|
import com.tencent.supersonic.StandaloneLauncher;
|
||||||
|
import com.tencent.supersonic.chat.api.pojo.request.ExecuteQueryReq;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.QueryReq;
|
import com.tencent.supersonic.chat.api.pojo.request.QueryReq;
|
||||||
|
import com.tencent.supersonic.chat.api.pojo.response.ParseResp;
|
||||||
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||||
import com.tencent.supersonic.common.config.EmbeddingConfig;
|
import com.tencent.supersonic.common.config.EmbeddingConfig;
|
||||||
import com.tencent.supersonic.chat.plugin.PluginManager;
|
import com.tencent.supersonic.chat.plugin.PluginManager;
|
||||||
@@ -49,7 +51,15 @@ public class MetricInterpretTest {
|
|||||||
ResponseEntity.ok(JSONObject.toJSONString(lLmAnswerResp)));
|
ResponseEntity.ok(JSONObject.toJSONString(lLmAnswerResp)));
|
||||||
QueryReq queryReq = DataUtils.getQueryReqWithAgent(1000, "能不能帮我解读分析下最近alice在超音数的访问情况",
|
QueryReq queryReq = DataUtils.getQueryReqWithAgent(1000, "能不能帮我解读分析下最近alice在超音数的访问情况",
|
||||||
DataUtils.getAgent().getId());
|
DataUtils.getAgent().getId());
|
||||||
QueryResult queryResult = queryService.executeQuery(queryReq);
|
|
||||||
|
ParseResp parseResp = queryService.performParsing(queryReq);
|
||||||
|
ExecuteQueryReq executeReq = ExecuteQueryReq.builder().user(queryReq.getUser())
|
||||||
|
.chatId(parseResp.getChatId())
|
||||||
|
.queryId(parseResp.getQueryId())
|
||||||
|
.queryText(parseResp.getQueryText())
|
||||||
|
.parseInfo(parseResp.getSelectedParses().get(0))
|
||||||
|
.build();
|
||||||
|
QueryResult queryResult = queryService.performExecution(executeReq);
|
||||||
Assert.assertEquals(queryResult.getQueryResults().get(0).get("answer"), lLmAnswerResp.getAssistantMessage());
|
Assert.assertEquals(queryResult.getQueryResults().get(0).get("answer"), lLmAnswerResp.getAssistantMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.tencent.supersonic.integration.plugin;
|
package com.tencent.supersonic.integration.plugin;
|
||||||
|
|
||||||
|
import com.tencent.supersonic.chat.api.pojo.request.ExecuteQueryReq;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.QueryFilter;
|
import com.tencent.supersonic.chat.api.pojo.request.QueryFilter;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.QueryFilters;
|
import com.tencent.supersonic.chat.api.pojo.request.QueryFilters;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.QueryReq;
|
import com.tencent.supersonic.chat.api.pojo.request.QueryReq;
|
||||||
@@ -37,7 +38,16 @@ public class PluginRecognizeTest extends BasePluginTest {
|
|||||||
MockConfiguration.mockEmbeddingRecognize(pluginManager, "alice最近的访问情况怎么样", "1");
|
MockConfiguration.mockEmbeddingRecognize(pluginManager, "alice最近的访问情况怎么样", "1");
|
||||||
MockConfiguration.mockEmbeddingUrl(embeddingConfig);
|
MockConfiguration.mockEmbeddingUrl(embeddingConfig);
|
||||||
QueryReq queryContextReq = DataUtils.getQueryReqWithAgent(1000, "alice最近的访问情况怎么样", 1);
|
QueryReq queryContextReq = DataUtils.getQueryReqWithAgent(1000, "alice最近的访问情况怎么样", 1);
|
||||||
QueryResult queryResult = queryService.executeQuery(queryContextReq);
|
|
||||||
|
ParseResp parseResp = queryService.performParsing(queryContextReq);
|
||||||
|
ExecuteQueryReq executeReq = ExecuteQueryReq.builder().user(queryContextReq.getUser())
|
||||||
|
.chatId(parseResp.getChatId())
|
||||||
|
.queryId(parseResp.getQueryId())
|
||||||
|
.queryText(parseResp.getQueryText())
|
||||||
|
.parseInfo(parseResp.getSelectedParses().get(0))
|
||||||
|
.build();
|
||||||
|
QueryResult queryResult = queryService.performExecution(executeReq);
|
||||||
|
|
||||||
assertPluginRecognizeResult(queryResult);
|
assertPluginRecognizeResult(queryResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,7 +63,16 @@ public class PluginRecognizeTest extends BasePluginTest {
|
|||||||
queryRequest.setModelId(1L);
|
queryRequest.setModelId(1L);
|
||||||
queryFilters.getFilters().add(queryFilter);
|
queryFilters.getFilters().add(queryFilter);
|
||||||
queryRequest.setQueryFilters(queryFilters);
|
queryRequest.setQueryFilters(queryFilters);
|
||||||
QueryResult queryResult = queryService.executeQuery(queryRequest);
|
|
||||||
|
ParseResp parseResp = queryService.performParsing(queryRequest);
|
||||||
|
ExecuteQueryReq executeReq = ExecuteQueryReq.builder().user(queryRequest.getUser())
|
||||||
|
.chatId(parseResp.getChatId())
|
||||||
|
.queryId(parseResp.getQueryId())
|
||||||
|
.queryText(parseResp.getQueryText())
|
||||||
|
.parseInfo(parseResp.getSelectedParses().get(0))
|
||||||
|
.build();
|
||||||
|
QueryResult queryResult = queryService.performExecution(executeReq);
|
||||||
|
|
||||||
assertPluginRecognizeResult(queryResult);
|
assertPluginRecognizeResult(queryResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user