mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 12:07:42 +00:00
(improvement)(headless)Introduce side_information to the prompt and exemplar.
This commit is contained in:
@@ -6,7 +6,9 @@ import com.tencent.supersonic.chat.server.pojo.ExecuteContext;
|
|||||||
import com.tencent.supersonic.chat.server.service.MemoryService;
|
import com.tencent.supersonic.chat.server.service.MemoryService;
|
||||||
import com.tencent.supersonic.chat.server.util.ResultFormatter;
|
import com.tencent.supersonic.chat.server.util.ResultFormatter;
|
||||||
import com.tencent.supersonic.common.pojo.QueryColumn;
|
import com.tencent.supersonic.common.pojo.QueryColumn;
|
||||||
|
import com.tencent.supersonic.common.pojo.SqlExemplar;
|
||||||
import com.tencent.supersonic.common.util.ContextUtils;
|
import com.tencent.supersonic.common.util.ContextUtils;
|
||||||
|
import com.tencent.supersonic.common.util.JsonUtil;
|
||||||
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||||
import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
|
import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.QueryResult;
|
import com.tencent.supersonic.headless.api.pojo.response.QueryResult;
|
||||||
@@ -39,13 +41,18 @@ public class SqlExecutor implements ChatQueryExecutor {
|
|||||||
|
|
||||||
if (queryResult.getQueryState().equals(QueryState.SUCCESS)
|
if (queryResult.getQueryState().equals(QueryState.SUCCESS)
|
||||||
&& queryResult.getQueryMode().equals(LLMSqlQuery.QUERY_MODE)) {
|
&& queryResult.getQueryMode().equals(LLMSqlQuery.QUERY_MODE)) {
|
||||||
|
SqlExemplar exemplar = JsonUtil.toObject(JsonUtil.toString(
|
||||||
|
executeContext.getParseInfo().getProperties()
|
||||||
|
.get(SqlExemplar.PROPERTY_KEY)), SqlExemplar.class);
|
||||||
|
|
||||||
MemoryService memoryService = ContextUtils.getBean(MemoryService.class);
|
MemoryService memoryService = ContextUtils.getBean(MemoryService.class);
|
||||||
memoryService.createMemory(ChatMemoryDO.builder()
|
memoryService.createMemory(ChatMemoryDO.builder()
|
||||||
.agentId(executeContext.getAgent().getId())
|
.agentId(executeContext.getAgent().getId())
|
||||||
.status(MemoryStatus.PENDING)
|
.status(MemoryStatus.PENDING)
|
||||||
.question(executeContext.getQueryText())
|
.question(exemplar.getQuestion())
|
||||||
.s2sql(executeContext.getParseInfo().getSqlInfo().getParsedS2SQL())
|
.sideInfo(exemplar.getSideInfo())
|
||||||
.dbSchema(buildSchemaStr(executeContext.getParseInfo()))
|
.dbSchema(exemplar.getDbSchema())
|
||||||
|
.s2sql(exemplar.getSql())
|
||||||
.createdBy(executeContext.getUser().getName())
|
.createdBy(executeContext.getUser().getName())
|
||||||
.updatedBy(executeContext.getUser().getName())
|
.updatedBy(executeContext.getUser().getName())
|
||||||
.createdAt(new Date())
|
.createdAt(new Date())
|
||||||
@@ -98,36 +105,4 @@ public class SqlExecutor implements ChatQueryExecutor {
|
|||||||
return queryResult;
|
return queryResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String buildSchemaStr(SemanticParseInfo parseInfo) {
|
|
||||||
String tableStr = parseInfo.getDataSet().getName();
|
|
||||||
StringBuilder metricStr = new StringBuilder();
|
|
||||||
StringBuilder dimensionStr = new StringBuilder();
|
|
||||||
|
|
||||||
parseInfo.getMetrics().stream().forEach(
|
|
||||||
metric -> {
|
|
||||||
metricStr.append(metric.getName());
|
|
||||||
if (StringUtils.isNotEmpty(metric.getDescription())) {
|
|
||||||
metricStr.append(" COMMENT '" + metric.getDescription() + "'");
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotEmpty(metric.getDefaultAgg())) {
|
|
||||||
metricStr.append(" AGGREGATE '" + metric.getDefaultAgg().toUpperCase() + "'");
|
|
||||||
}
|
|
||||||
metricStr.append(",");
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
parseInfo.getDimensions().stream().forEach(
|
|
||||||
dimension -> {
|
|
||||||
dimensionStr.append(dimension.getName());
|
|
||||||
if (StringUtils.isNotEmpty(dimension.getDescription())) {
|
|
||||||
dimensionStr.append(" COMMENT '" + dimension.getDescription() + "'");
|
|
||||||
}
|
|
||||||
dimensionStr.append(",");
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
String template = "Table: %s, Metrics: [%s], Dimensions: [%s]";
|
|
||||||
return String.format(template, tableStr, metricStr, dimensionStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ public class MemoryReviewTask {
|
|||||||
+ "2.ALWAYS recognize `数据日期` as the date field.\n"
|
+ "2.ALWAYS recognize `数据日期` as the date field.\n"
|
||||||
+ "#Question: %s\n"
|
+ "#Question: %s\n"
|
||||||
+ "#Schema: %s\n"
|
+ "#Schema: %s\n"
|
||||||
|
+ "#SideInfo: %s\n"
|
||||||
+ "#SQL: %s\n"
|
+ "#SQL: %s\n"
|
||||||
+ "#Response: ";
|
+ "#Response: ";
|
||||||
|
|
||||||
@@ -52,7 +53,8 @@ public class MemoryReviewTask {
|
|||||||
.forEach(m -> {
|
.forEach(m -> {
|
||||||
Agent chatAgent = agentService.getAgent(m.getAgentId());
|
Agent chatAgent = agentService.getAgent(m.getAgentId());
|
||||||
if (Objects.nonNull(chatAgent) && chatAgent.enableMemoryReview()) {
|
if (Objects.nonNull(chatAgent) && chatAgent.enableMemoryReview()) {
|
||||||
String promptStr = String.format(INSTRUCTION, m.getQuestion(), m.getDbSchema(), m.getS2sql());
|
String promptStr = String.format(INSTRUCTION, m.getQuestion(), m.getDbSchema(),
|
||||||
|
m.getSideInfo(), m.getS2sql());
|
||||||
Prompt prompt = PromptTemplate.from(promptStr).apply(Collections.EMPTY_MAP);
|
Prompt prompt = PromptTemplate.from(promptStr).apply(Collections.EMPTY_MAP);
|
||||||
|
|
||||||
keyPipelineLog.info("MemoryReviewTask reqPrompt:{}", promptStr);
|
keyPipelineLog.info("MemoryReviewTask reqPrompt:{}", promptStr);
|
||||||
|
|||||||
@@ -20,11 +20,14 @@ public class ChatMemoryDO {
|
|||||||
@TableId(type = IdType.AUTO)
|
@TableId(type = IdType.AUTO)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
@TableField("agent_id")
|
||||||
|
private Integer agentId;
|
||||||
|
|
||||||
@TableField("question")
|
@TableField("question")
|
||||||
private String question;
|
private String question;
|
||||||
|
|
||||||
@TableField("agent_id")
|
@TableField("side_info")
|
||||||
private Integer agentId;
|
private String sideInfo;
|
||||||
|
|
||||||
@TableField("db_schema")
|
@TableField("db_schema")
|
||||||
private String dbSchema;
|
private String dbSchema;
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ public class MemoryServiceImpl implements MemoryService {
|
|||||||
exemplarService.storeExemplar(embeddingConfig.getMemoryCollectionName(memory.getAgentId()),
|
exemplarService.storeExemplar(embeddingConfig.getMemoryCollectionName(memory.getAgentId()),
|
||||||
SqlExemplar.builder()
|
SqlExemplar.builder()
|
||||||
.question(memory.getQuestion())
|
.question(memory.getQuestion())
|
||||||
|
.sideInfo(memory.getSideInfo())
|
||||||
.dbSchema(memory.getDbSchema())
|
.dbSchema(memory.getDbSchema())
|
||||||
.sql(memory.getS2sql())
|
.sql(memory.getS2sql())
|
||||||
.build());
|
.build());
|
||||||
@@ -113,6 +114,7 @@ public class MemoryServiceImpl implements MemoryService {
|
|||||||
exemplarService.removeExemplar(embeddingConfig.getMemoryCollectionName(memory.getAgentId()),
|
exemplarService.removeExemplar(embeddingConfig.getMemoryCollectionName(memory.getAgentId()),
|
||||||
SqlExemplar.builder()
|
SqlExemplar.builder()
|
||||||
.question(memory.getQuestion())
|
.question(memory.getQuestion())
|
||||||
|
.sideInfo(memory.getSideInfo())
|
||||||
.dbSchema(memory.getDbSchema())
|
.dbSchema(memory.getDbSchema())
|
||||||
.sql(memory.getS2sql())
|
.sql(memory.getS2sql())
|
||||||
.build());
|
.build());
|
||||||
|
|||||||
@@ -11,8 +11,12 @@ import lombok.NoArgsConstructor;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class SqlExemplar {
|
public class SqlExemplar {
|
||||||
|
|
||||||
|
public static final String PROPERTY_KEY = "sql_exemplar";
|
||||||
|
|
||||||
private String question;
|
private String question;
|
||||||
|
|
||||||
|
private String sideInfo;
|
||||||
|
|
||||||
private String dbSchema;
|
private String dbSchema;
|
||||||
|
|
||||||
private String sql;
|
private String sql;
|
||||||
|
|||||||
@@ -120,10 +120,10 @@ public class LLMRequestService {
|
|||||||
|
|
||||||
public LLMResp runText2SQL(LLMReq llmReq) {
|
public LLMResp runText2SQL(LLMReq llmReq) {
|
||||||
SqlGenStrategy sqlGenStrategy = SqlGenStrategyFactory.get(llmReq.getSqlGenType());
|
SqlGenStrategy sqlGenStrategy = SqlGenStrategyFactory.get(llmReq.getSqlGenType());
|
||||||
String modelName = llmReq.getSchema().getDataSetName();
|
String dataSet = llmReq.getSchema().getDataSetName();
|
||||||
LLMResp result = sqlGenStrategy.generate(llmReq);
|
LLMResp result = sqlGenStrategy.generate(llmReq);
|
||||||
result.setQuery(llmReq.getQueryText());
|
result.setQuery(llmReq.getQueryText());
|
||||||
result.setModelName(modelName);
|
result.setDataSet(dataSet);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.tencent.supersonic.headless.chat.parser.llm;
|
|||||||
|
|
||||||
import com.tencent.supersonic.common.pojo.Constants;
|
import com.tencent.supersonic.common.pojo.Constants;
|
||||||
import com.tencent.supersonic.common.jsqlparser.SqlValidHelper;
|
import com.tencent.supersonic.common.jsqlparser.SqlValidHelper;
|
||||||
|
import com.tencent.supersonic.common.pojo.SqlExemplar;
|
||||||
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||||
import com.tencent.supersonic.headless.chat.query.QueryManager;
|
import com.tencent.supersonic.headless.chat.query.QueryManager;
|
||||||
import com.tencent.supersonic.headless.chat.query.llm.LLMSemanticQuery;
|
import com.tencent.supersonic.headless.chat.query.llm.LLMSemanticQuery;
|
||||||
@@ -35,6 +36,13 @@ public class LLMResponseService {
|
|||||||
Map<String, Object> properties = new HashMap<>();
|
Map<String, Object> properties = new HashMap<>();
|
||||||
properties.put(Constants.CONTEXT, parseResult);
|
properties.put(Constants.CONTEXT, parseResult);
|
||||||
properties.put("type", "internal");
|
properties.put("type", "internal");
|
||||||
|
SqlExemplar exemplar = SqlExemplar.builder()
|
||||||
|
.question(queryCtx.getQueryText())
|
||||||
|
.sideInfo(parseResult.getLlmResp().getSideInfo())
|
||||||
|
.dbSchema(parseResult.getLlmResp().getSchema())
|
||||||
|
.sql(parseResult.getLlmResp().getSqlOutput())
|
||||||
|
.build();
|
||||||
|
properties.put(SqlExemplar.PROPERTY_KEY, exemplar);
|
||||||
parseInfo.setProperties(properties);
|
parseInfo.setProperties(properties);
|
||||||
parseInfo.setScore(queryCtx.getQueryText().length() * (1 + weight));
|
parseInfo.setScore(queryCtx.getQueryText().length() * (1 + weight));
|
||||||
parseInfo.setQueryMode(semanticQuery.getQueryMode());
|
parseInfo.setQueryMode(semanticQuery.getQueryMode());
|
||||||
|
|||||||
@@ -34,13 +34,15 @@ public class OnePassSCSqlGenStrategy extends SqlGenStrategy {
|
|||||||
+ "1.ALWAYS use `数据日期` as the date field."
|
+ "1.ALWAYS use `数据日期` as the date field."
|
||||||
+ "2.ALWAYS specify date filter using `>`,`<`,`>=`,`<=` operator."
|
+ "2.ALWAYS specify date filter using `>`,`<`,`>=`,`<=` operator."
|
||||||
+ "3.ALWAYS calculate the absolute date range by yourself."
|
+ "3.ALWAYS calculate the absolute date range by yourself."
|
||||||
+ "4.DO NOT include date filter in the where clause if not explicitly expressed in the question."
|
+ "4.DO NOT include date filter in the where clause if not explicitly expressed in the `Question`."
|
||||||
+ "5.ONLY respond with the converted SQL statement.\n"
|
+ "5.ONLY respond with the converted SQL statement.\n"
|
||||||
+ "#Exemplars:\n{{exemplar}}"
|
+ "#Exemplars:\n{{exemplar}}"
|
||||||
+ "#Question:{{question}} #Schema:{{schema}} #SQL:";
|
+ "#Question:{{question}} #Schema:{{schema}} #SideInfo:{{information}} #SQL:";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LLMResp generate(LLMReq llmReq) {
|
public LLMResp generate(LLMReq llmReq) {
|
||||||
|
LLMResp llmResp = new LLMResp();
|
||||||
|
llmResp.setQuery(llmReq.getQueryText());
|
||||||
//1.recall exemplars
|
//1.recall exemplars
|
||||||
keyPipelineLog.info("OnePassSCSqlGenStrategy llmReq:\n{}", llmReq);
|
keyPipelineLog.info("OnePassSCSqlGenStrategy llmReq:\n{}", llmReq);
|
||||||
List<List<SqlExemplar>> exemplarsList = promptHelper.getFewShotExemplars(llmReq);
|
List<List<SqlExemplar>> exemplarsList = promptHelper.getFewShotExemplars(llmReq);
|
||||||
@@ -48,49 +50,51 @@ public class OnePassSCSqlGenStrategy extends SqlGenStrategy {
|
|||||||
//2.generate sql generation prompt for each self-consistency inference
|
//2.generate sql generation prompt for each self-consistency inference
|
||||||
Map<Prompt, List<SqlExemplar>> prompt2Exemplar = new HashMap<>();
|
Map<Prompt, List<SqlExemplar>> prompt2Exemplar = new HashMap<>();
|
||||||
for (List<SqlExemplar> exemplars : exemplarsList) {
|
for (List<SqlExemplar> exemplars : exemplarsList) {
|
||||||
Prompt prompt = generatePrompt(llmReq, exemplars);
|
llmReq.setDynamicExemplars(exemplars);
|
||||||
|
Prompt prompt = generatePrompt(llmReq, llmResp);
|
||||||
prompt2Exemplar.put(prompt, exemplars);
|
prompt2Exemplar.put(prompt, exemplars);
|
||||||
}
|
}
|
||||||
|
|
||||||
//3.perform multiple self-consistency inferences parallelly
|
//3.perform multiple self-consistency inferences parallelly
|
||||||
Map<Prompt, String> prompt2Output = new ConcurrentHashMap<>();
|
Map<String, Prompt> output2Prompt = new ConcurrentHashMap<>();
|
||||||
prompt2Exemplar.keySet().parallelStream().forEach(prompt -> {
|
prompt2Exemplar.keySet().parallelStream().forEach(prompt -> {
|
||||||
keyPipelineLog.info("OnePassSCSqlGenStrategy reqPrompt:\n{}", prompt.toUserMessage());
|
keyPipelineLog.info("OnePassSCSqlGenStrategy reqPrompt:\n{}", prompt.toUserMessage());
|
||||||
ChatLanguageModel chatLanguageModel = getChatLanguageModel(llmReq.getModelConfig());
|
ChatLanguageModel chatLanguageModel = getChatLanguageModel(llmReq.getModelConfig());
|
||||||
Response<AiMessage> response = chatLanguageModel.generate(prompt.toUserMessage());
|
Response<AiMessage> response = chatLanguageModel.generate(prompt.toUserMessage());
|
||||||
String result = response.content().text();
|
String result = response.content().text();
|
||||||
prompt2Output.put(prompt, result);
|
output2Prompt.put(result, prompt);
|
||||||
keyPipelineLog.info("OnePassSCSqlGenStrategy modelResp:\n{}", result);
|
keyPipelineLog.info("OnePassSCSqlGenStrategy modelResp:\n{}", result);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
//4.format response.
|
//4.format response.
|
||||||
Pair<String, Map<String, Double>> sqlMapPair = ResponseHelper.selfConsistencyVote(
|
Pair<String, Map<String, Double>> sqlMapPair = ResponseHelper.selfConsistencyVote(
|
||||||
Lists.newArrayList(prompt2Output.values()));
|
Lists.newArrayList(output2Prompt.keySet()));
|
||||||
LLMResp llmResp = new LLMResp();
|
|
||||||
llmResp.setQuery(promptHelper.buildAugmentedQuestion(llmReq));
|
|
||||||
llmResp.setDbSchema(promptHelper.buildSchemaStr(llmReq));
|
|
||||||
llmResp.setSqlOutput(sqlMapPair.getLeft());
|
llmResp.setSqlOutput(sqlMapPair.getLeft());
|
||||||
//TODO: should use the same few-shot exemplars as the one chose by self-consistency vote
|
List<SqlExemplar> usedExemplars = prompt2Exemplar.get(output2Prompt.get(sqlMapPair.getLeft()));
|
||||||
llmResp.setSqlRespMap(ResponseHelper.buildSqlRespMap(exemplarsList.get(0), sqlMapPair.getRight()));
|
llmResp.setSqlRespMap(ResponseHelper.buildSqlRespMap(usedExemplars, sqlMapPair.getRight()));
|
||||||
|
|
||||||
return llmResp;
|
return llmResp;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Prompt generatePrompt(LLMReq llmReq, List<SqlExemplar> fewshotExampleList) {
|
private Prompt generatePrompt(LLMReq llmReq, LLMResp llmResp) {
|
||||||
StringBuilder exemplarsStr = new StringBuilder();
|
StringBuilder exemplars = new StringBuilder();
|
||||||
for (SqlExemplar exemplar : fewshotExampleList) {
|
for (SqlExemplar exemplar : llmReq.getDynamicExemplars()) {
|
||||||
String exemplarStr = String.format("#Question:%s #Schema:%s #SQL:%s\n",
|
String exemplarStr = String.format("#Question:%s #Schema:%s #SideInfo:%s #SQL:%s\n",
|
||||||
exemplar.getQuestion(), exemplar.getDbSchema(), exemplar.getSql());
|
exemplar.getQuestion(), exemplar.getDbSchema(),
|
||||||
exemplarsStr.append(exemplarStr);
|
exemplar.getSideInfo(), exemplar.getSql());
|
||||||
|
exemplars.append(exemplarStr);
|
||||||
}
|
}
|
||||||
String dataSemanticsStr = promptHelper.buildSchemaStr(llmReq);
|
String dataSemantics = promptHelper.buildSchemaStr(llmReq);
|
||||||
String questionAugmented = promptHelper.buildAugmentedQuestion(llmReq);
|
String sideInformation = promptHelper.buildSideInformation(llmReq);
|
||||||
|
llmResp.setSchema(dataSemantics);
|
||||||
|
llmResp.setSideInfo(sideInformation);
|
||||||
|
|
||||||
Map<String, Object> variable = new HashMap<>();
|
Map<String, Object> variable = new HashMap<>();
|
||||||
variable.put("exemplar", exemplarsStr);
|
variable.put("exemplar", exemplars);
|
||||||
variable.put("question", questionAugmented);
|
variable.put("question", llmReq.getQueryText());
|
||||||
variable.put("schema", dataSemanticsStr);
|
variable.put("schema", dataSemantics);
|
||||||
|
variable.put("information", sideInformation);
|
||||||
|
|
||||||
// use custom prompt template if provided.
|
// use custom prompt template if provided.
|
||||||
PromptConfig promptConfig = llmReq.getPromptConfig();
|
PromptConfig promptConfig = llmReq.getPromptConfig();
|
||||||
|
|||||||
@@ -73,6 +73,23 @@ public class PromptHelper {
|
|||||||
linkingListStr, currentDataStr, termStr, priorExts);
|
linkingListStr, currentDataStr, termStr, priorExts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String buildSideInformation(LLMReq llmReq) {
|
||||||
|
List<LLMReq.ElementValue> linkedValues = llmReq.getLinking();
|
||||||
|
String currentDate = llmReq.getCurrentDate();
|
||||||
|
String priorExts = llmReq.getPriorExts();
|
||||||
|
|
||||||
|
List<String> priorLinkingList = new ArrayList<>();
|
||||||
|
for (LLMReq.ElementValue value : linkedValues) {
|
||||||
|
String fieldName = value.getFieldName();
|
||||||
|
String fieldValue = value.getFieldValue();
|
||||||
|
priorLinkingList.add("‘" + fieldValue + "‘是一个‘" + fieldName + "‘");
|
||||||
|
}
|
||||||
|
String currentDataStr = "当前的日期是" + currentDate;
|
||||||
|
String linkingListStr = String.join(",", priorLinkingList);
|
||||||
|
String termStr = buildTermStr(llmReq);
|
||||||
|
return String.format("%s;%s;%s;%s", linkingListStr, currentDataStr, termStr, priorExts);
|
||||||
|
}
|
||||||
|
|
||||||
public String buildSchemaStr(LLMReq llmReq) {
|
public String buildSchemaStr(LLMReq llmReq) {
|
||||||
String tableStr = llmReq.getSchema().getDataSetName();
|
String tableStr = llmReq.getSchema().getDataSetName();
|
||||||
StringBuilder metricStr = new StringBuilder();
|
StringBuilder metricStr = new StringBuilder();
|
||||||
|
|||||||
@@ -10,9 +10,11 @@ public class LLMResp {
|
|||||||
|
|
||||||
private String query;
|
private String query;
|
||||||
|
|
||||||
private String modelName;
|
private String sideInfo;
|
||||||
|
|
||||||
private String dbSchema;
|
private String dataSet;
|
||||||
|
|
||||||
|
private String schema;
|
||||||
|
|
||||||
private String sqlOutput;
|
private String sqlOutput;
|
||||||
|
|
||||||
|
|||||||
@@ -357,3 +357,6 @@ alter table s2_agent add `model_config` text null;
|
|||||||
|
|
||||||
--20240710
|
--20240710
|
||||||
alter table s2_agent add `enable_memory_review` tinyint DEFAULT 0;
|
alter table s2_agent add `enable_memory_review` tinyint DEFAULT 0;
|
||||||
|
|
||||||
|
--20240718
|
||||||
|
alter table s2_chat_memory add `side_info` TEXT DEFAULT NULL COMMENT '辅助信息';
|
||||||
@@ -89,6 +89,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_memory` (
|
|||||||
`agent_id` INT ,
|
`agent_id` INT ,
|
||||||
`db_schema` TEXT ,
|
`db_schema` TEXT ,
|
||||||
`s2_sql` TEXT ,
|
`s2_sql` TEXT ,
|
||||||
|
`side_info` TEXT ,
|
||||||
`status` char(10) ,
|
`status` char(10) ,
|
||||||
`llm_review` char(10) ,
|
`llm_review` char(10) ,
|
||||||
`llm_comment` TEXT,
|
`llm_comment` TEXT,
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_config` (
|
|||||||
CREATE TABLE IF NOT EXISTS `s2_chat_memory` (
|
CREATE TABLE IF NOT EXISTS `s2_chat_memory` (
|
||||||
`id` INT NOT NULL AUTO_INCREMENT,
|
`id` INT NOT NULL AUTO_INCREMENT,
|
||||||
`question` varchar(655) COMMENT '用户问题' ,
|
`question` varchar(655) COMMENT '用户问题' ,
|
||||||
|
`side_info` TEXT COMMENT '辅助信息' ,
|
||||||
`agent_id` INT COMMENT '助理ID' ,
|
`agent_id` INT COMMENT '助理ID' ,
|
||||||
`db_schema` TEXT COMMENT 'Schema映射' ,
|
`db_schema` TEXT COMMENT 'Schema映射' ,
|
||||||
`s2_sql` TEXT COMMENT '大模型解析SQL' ,
|
`s2_sql` TEXT COMMENT '大模型解析SQL' ,
|
||||||
|
|||||||
@@ -1,92 +1,62 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"question": "比较jackjchen和robinlee在超音数的访问次数 (补充信息:’'jackjchen'‘是一个’用户名‘,’ 'robinlee'‘是一个’用户名‘。当前的日期是2020-12-01) ",
|
"question": "比较jackjchen和robinlee在超音数的访问次数",
|
||||||
|
"sideInfo": "'jackjchen'是一个'用户名','robinlee'是一个'用户名'。当前的日期是2020-12-01",
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
||||||
"sql": "SELECT 用户名, 访问次数 FROM 超音数产品 WHERE 用户名 IN ('jackjchen', 'robinlee')"
|
"sql": "SELECT 用户名, 访问次数 FROM 超音数产品 WHERE 用户名 IN ('jackjchen', 'robinlee')"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "超音数近12个月访问人数 按部门 (补充信息:。当前的日期是2022-11-06) ",
|
"question": "超音数近12个月访问人数 按部门",
|
||||||
|
"sideInfo": "当前的日期是2022-11-06",
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
||||||
"sql": "SELECT 部门, 数据日期, 访问人数 FROM 超音数产品 WHERE 数据日期 >= '2021-11-06' AND 数据日期 <= '2022-11-06'"
|
"sql": "SELECT 部门, 数据日期, 访问人数 FROM 超音数产品 WHERE 数据日期 >= '2021-11-06' AND 数据日期 <= '2022-11-06'"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "超音数美术部、技术研发部的访问时长 (补充信息:’'美术部'‘是一个’部门‘,’ '技术研发部'‘是一个’部门‘。当前的日期是2023-04-21) ",
|
"question": "超音数美术部、技术研发部的访问时长",
|
||||||
|
"sideInfo": "’'美术部'‘是一个’部门‘,’ '技术研发部'‘是一个’部门‘。当前的日期是2023-04-21",
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
||||||
"sql": "SELECT 部门, 访问时长 FROM 超音数产品 WHERE 部门 IN ('美术部', '技术研发部')"
|
"sql": "SELECT 部门, 访问时长 FROM 超音数产品 WHERE 部门 IN ('美术部', '技术研发部')"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "近3天海田飞系MPPM结算播放份额 (补充信息:’'海田飞系'‘是一个’严选版权归属系‘。当前的日期是2023-08-21) ",
|
"question": "近3天海田飞系MPPM结算播放份额",
|
||||||
|
"sideInfo": "'海田飞系'是一个'严选版权归属系'。当前的日期是2023-08-21",
|
||||||
"dbSchema": "Table: 严选, Columns = [\"严选版权归属系\", \"付费模式\", \"结算播放份额\", \"付费用户结算播放份额\", \"数据日期\"]",
|
"dbSchema": "Table: 严选, Columns = [\"严选版权归属系\", \"付费模式\", \"结算播放份额\", \"付费用户结算播放份额\", \"数据日期\"]",
|
||||||
"sql": "SELECT 严选版权归属系, 结算播放份额 FROM 严选 WHERE 严选版权归属系 = '海田飞系' AND 数据日期 >= '2023-08-19' AND 数据日期 <= '2023-08-21' "
|
"sql": "SELECT 严选版权归属系, 结算播放份额 FROM 严选 WHERE 严选版权归属系 = '海田飞系' AND 数据日期 >= '2023-08-19' AND 数据日期 <= '2023-08-21' "
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "对比近7天翻唱版和纯音乐的歌曲播放量 (补充信息:’'纯音乐'‘是一个’语种‘,’ '翻唱版'‘是一个’歌曲版本‘。当前的日期是2023-05-22) ",
|
"question": "对比近7天翻唱版和纯音乐的歌曲播放量",
|
||||||
|
"sideInfo": "'纯音乐'是一个'语种','翻唱版'是一个'歌曲版本'。当前的日期是2023-05-22",
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"是否潮流人歌曲\", \"C音歌曲ID\", \"C音歌曲MID\", \"歌曲名\", \"歌曲版本\", \"语种\", \"歌曲类型\", \"翻唱类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"结算播放量\", \"运营播放量\", \"付费用户结算播放量\", \"历史累计结算播放量\", \"运营搜播量\", \"结算搜播量\", \"运营完播量\", \"运营推播量\", \"近7日复播率\", \"日均搜播量\", \"数据日期\"]",
|
"dbSchema": "Table: 歌曲库, Columns = [\"是否潮流人歌曲\", \"C音歌曲ID\", \"C音歌曲MID\", \"歌曲名\", \"歌曲版本\", \"语种\", \"歌曲类型\", \"翻唱类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"结算播放量\", \"运营播放量\", \"付费用户结算播放量\", \"历史累计结算播放量\", \"运营搜播量\", \"结算搜播量\", \"运营完播量\", \"运营推播量\", \"近7日复播率\", \"日均搜播量\", \"数据日期\"]",
|
||||||
"sql": "SELECT 歌曲版本, 语种, 结算播放量 FROM 歌曲库 WHERE 歌曲版本 = '翻唱版' AND 语种 = '纯音乐' AND 数据日期 >= '2023-05-16' AND 数据日期 <= '2023-05-22' "
|
"sql": "SELECT 歌曲版本, 语种, 结算播放量 FROM 歌曲库 WHERE 歌曲版本 = '翻唱版' AND 语种 = '纯音乐' AND 数据日期 >= '2023-05-16' AND 数据日期 <= '2023-05-22' "
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "对比一下陈拙悬、孟梅琦、赖媚韵的粉丝数 (补充信息:’'1527896'‘是一个’MPPM歌手ID‘,’ '1565463'‘是一个’MPPM歌手ID‘,’ '2141459'‘是一个’MPPM歌手ID‘。当前的日期是2023-05-31) ",
|
"question": "对比一下陈拙悬、孟梅琦、赖媚韵的粉丝数",
|
||||||
|
"sideInfo": "'1527896'是一个'MPPM歌手ID','1565463'是一个'MPPM歌手ID','2141459'是一个'MPPM歌手ID'。当前的日期是2023-05-31",
|
||||||
"dbSchema": "Table: 艺人库, Columns = [\"上下架状态\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"MPPM潮流人等级\", \"活跃区域\", \"年龄\", \"歌手才能\", \"歌手风格\", \"粉丝数\", \"潮音粉丝数\", \"超声波粉丝数\", \"推博粉丝数\", \"超声波歌曲数\", \"在架歌曲数\", \"超声波分享数\", \"独占歌曲数\", \"超声波在架歌曲评论数\", \"有播放量歌曲数\", \"数据日期\"]",
|
"dbSchema": "Table: 艺人库, Columns = [\"上下架状态\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"MPPM潮流人等级\", \"活跃区域\", \"年龄\", \"歌手才能\", \"歌手风格\", \"粉丝数\", \"潮音粉丝数\", \"超声波粉丝数\", \"推博粉丝数\", \"超声波歌曲数\", \"在架歌曲数\", \"超声波分享数\", \"独占歌曲数\", \"超声波在架歌曲评论数\", \"有播放量歌曲数\", \"数据日期\"]",
|
||||||
"sql": "SELECT 歌手名, 粉丝数 FROM 艺人库 WHERE 歌手名 IN ('陈拙悬', '孟梅琦', '赖媚韵')"
|
"sql": "SELECT 歌手名, 粉丝数 FROM 艺人库 WHERE 歌手名 IN ('陈拙悬', '孟梅琦', '赖媚韵')"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "播放量大于1万的歌曲有多少 (补充信息:。当前的日期是2023-07-31) ",
|
"question": "播放量大于1万的歌曲有多少",
|
||||||
|
"sideInfo": "当前的日期是2023-07-31",
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"是否潮流人歌曲\", \"超声波歌曲ID\", \"C音歌曲ID\", \"C音歌曲MID\", \"结算播放量\", \"运营播放量\", \"分享量\", \"收藏量\", \"运营搜播量\", \"结算搜播量\", \"拉新用户数\", \"拉活用户数\", \"分享率\", \"结算播放份额\", \"数据日期\"]",
|
"dbSchema": "Table: 歌曲库, Columns = [\"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"是否潮流人歌曲\", \"超声波歌曲ID\", \"C音歌曲ID\", \"C音歌曲MID\", \"结算播放量\", \"运营播放量\", \"分享量\", \"收藏量\", \"运营搜播量\", \"结算搜播量\", \"拉新用户数\", \"拉活用户数\", \"分享率\", \"结算播放份额\", \"数据日期\"]",
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 结算播放量 > 10000"
|
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 结算播放量 > 10000"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "超音数访问时长小于1小时,且来自美术部的用户是哪些 (补充信息:’'美术部'‘是一个’部门‘。当前的日期是2023-07-31) ",
|
"question": "超音数访问时长小于1小时,且来自美术部的用户是哪些",
|
||||||
|
"sideInfo": "'美术部'‘是一个’部门‘。当前的日期是2023-07-31",
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]",
|
||||||
"sql": "SELECT 用户名 FROM 超音数产品 WHERE 部门 = '美术部' AND 访问时长 < 1"
|
"sql": "SELECT 用户名 FROM 超音数产品 WHERE 部门 = '美术部' AND 访问时长 < 1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "超音数pv最高的用户有哪些 (补充信息:。当前的日期是2023-08-31) ",
|
"question": "超音数pv最高的用户有哪些",
|
||||||
|
"sideInfo": "当前的日期是2023-08-31",
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]",
|
||||||
"sql": "SELECT 用户名 FROM 超音数产品 ORDER BY 访问次数 DESC LIMIT 1"
|
"sql": "SELECT 用户名 FROM 超音数产品 ORDER BY 访问次数 DESC LIMIT 1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "近90天袁亚伟播放量平均值是多少 (补充信息:’'152789226'‘是一个’MPPM歌手ID‘。当前的日期是2023-08-31) ",
|
"question": "超音数访问次数大于1k的部门是哪些",
|
||||||
"dbSchema": "Table: 艺人库, Columns = [\"播放量层级\", \"播放量单调性\", \"播放量方差\", \"播放量突增类型\", \"播放量集中度\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"MPPM潮流人等级\", \"结算播放量\", \"运营播放量\", \"历史累计结算播放量\", \"有播放量歌曲数\", \"历史累计运营播放量\", \"付费用户结算播放量\", \"结算播放量占比\", \"运营播放份额\", \"免费用户结算播放占比\", \"完播量\", \"数据日期\"]",
|
"sideInfo": "当前的日期是2023-09-14",
|
||||||
"sql": "SELECT AVG(结算播放量) FROM 艺人库 WHERE 歌手名 = '袁亚伟' AND 数据日期 >= '2023-06-02' AND 数据日期 <= '2023-08-31' "
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "周倩倩近7天结算播放量总和是多少 (补充信息:’'199509'‘是一个’MPPM歌手ID‘。当前的日期是2023-08-31) ",
|
|
||||||
"dbSchema": "Table: 艺人库, Columns = [\"播放量层级\", \"播放量单调性\", \"播放量方差\", \"播放量突增类型\", \"播放量集中度\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"MPPM潮流人等级\", \"结算播放量\", \"运营播放量\", \"历史累计结算播放量\", \"有播放量歌曲数\", \"历史累计运营播放量\", \"付费用户结算播放量\", \"结算播放量占比\", \"运营播放份额\", \"免费用户结算播放占比\", \"完播量\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT SUM(结算播放量) FROM 艺人库 WHERE 歌手名 = '周倩倩' AND 数据日期 >= '2023-08-15' AND 数据日期 <= '2023-08-31' "
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "超音数访问次数大于1k的部门是哪些 (补充信息:。当前的日期是2023-09-14) ",
|
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
||||||
"sql": "SELECT 部门 FROM 超音数产品 WHERE 访问次数 > 1000"
|
"sql": "SELECT 部门 FROM 超音数产品 WHERE 访问次数 > 1000"
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "陈亿训唱的所有的播放量大于20k的孤勇者有哪些 (补充信息:’'199509'‘是一个’MPPM歌手ID‘,’ '1527123'‘是一个’MPPM歌曲ID‘。当前的日期是2023-09-18) ",
|
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"歌曲名\", \"MPPM歌手ID\", \"歌曲版本\", \"歌曲类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"是否潮流人歌曲\", \"超声波歌曲ID\", \"C音歌曲ID\", \"C音歌曲MID\", \"结算播放量\", \"运营播放量\", \"分享量\", \"收藏量\", \"运营搜播量\", \"结算搜播量\", \"拉新用户数\", \"拉活用户数\", \"分享率\", \"结算播放份额\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 结算播放量 > 20000 AND 歌手名 = '陈亿训' AND 歌曲名 = '孤勇者'"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "周洁轮去年发布的歌曲有哪些 (补充信息:’'23109'‘是一个’MPPM歌手ID‘。当前的日期是2023-09-18) ",
|
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"歌曲名\", \"歌曲版本\", \"歌手名\", \"歌曲类型\", \"发布时间\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"是否潮流人歌曲\", \"超声波歌曲ID\", \"C音歌曲ID\", \"C音歌曲MID\", \"结算播放量\", \"运营播放量\", \"分享量\", \"收藏量\", \"运营搜播量\", \"结算搜播量\", \"拉新用户数\", \"拉活用户数\", \"分享率\", \"结算播放份额\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 发布时间 >= '2023-01-01' AND 发布时间 <= '2023-12-31' AND 歌手名 = '周洁轮'"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "我想要近半年签约的播放量前十的歌手有哪些 (补充信息:。当前的日期是2023-09-11) ",
|
|
||||||
"dbSchema": "Table: 艺人库, Columns = [\"播放量层级\", \"播放量单调性\", \"播放量方差\", \"播放量突增类型\", \"播放量集中度\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"签约日期\", \"MPPM潮流人等级\", \"结算播放量\", \"运营播放量\", \"历史累计结算播放量\", \"有播放量歌曲数\", \"历史累计运营播放量\", \"付费用户结算播放量\", \"结算播放量占比\", \"运营播放份额\", \"免费用户结算播放占比\", \"完播量\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌手名 FROM 艺人库 WHERE 数据日期 >= '2023-03-15' AND 数据日期 <= '2023-09-11' ORDER BY 结算播放量 DESC LIMIT 10"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "最近一年发行的歌曲中,有哪些在近7天播放超过一千万的 (补充信息:。当前的日期是2023-08-12) ",
|
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"发行日期\", \"歌曲语言\", \"歌曲来源\", \"歌曲流派\", \"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"发行时间\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 发行日期 >= '2022-08-13' AND 发行日期 <= '2023-08-12' AND 数据日期 >= '2023-08-06' AND 数据日期 <= '2023-08-12' AND 结算播放量 > 10000000"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "今年以来发行的歌曲中,有哪些在近7天播放超过一千万的 (补充信息:。当前的日期是2023-08-12) ",
|
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"发行日期\", \"歌曲语言\", \"歌曲来源\", \"歌曲流派\", \"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"发行时间\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 发行日期 >= '2023-01-01' AND 发行日期 <= '2023-08-12' AND 数据日期 >= '2023-08-06' AND 数据日期 <= '2023-08-12' AND 结算播放量 > 10000000"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "2023年以来发行的歌曲中,有哪些在近7天播放超过一千万的 (补充信息:’'514129144'‘是一个’MPPM歌曲ID‘。当前的日期是2023-08-12) ",
|
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"发行日期\", \"歌曲语言\", \"歌曲来源\", \"歌曲流派\", \"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"发行时间\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 发行日期 >= '2023-01-01' AND 发行日期 <= '2023-08-12' AND 数据日期 >= '2023-08-06' AND 数据日期 <= '2023-08-12' AND 结算播放量 > 10000000"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -88,6 +88,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_memory` (
|
|||||||
`question` varchar(655) ,
|
`question` varchar(655) ,
|
||||||
`agent_id` INT ,
|
`agent_id` INT ,
|
||||||
`db_schema` TEXT ,
|
`db_schema` TEXT ,
|
||||||
|
`side_info` TEXT ,
|
||||||
`s2_sql` TEXT ,
|
`s2_sql` TEXT ,
|
||||||
`status` char(10) ,
|
`status` char(10) ,
|
||||||
`llm_review` char(10) ,
|
`llm_review` char(10) ,
|
||||||
|
|||||||
@@ -1,92 +1,62 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"question": "比较jackjchen和robinlee在超音数的访问次数 (补充信息:’'jackjchen'‘是一个’用户名‘,’ 'robinlee'‘是一个’用户名‘。当前的日期是2020-12-01) ",
|
"question": "比较jackjchen和robinlee在超音数的访问次数",
|
||||||
|
"sideInfo": "'jackjchen'是一个'用户名','robinlee'是一个'用户名'。当前的日期是2020-12-01",
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
||||||
"sql": "SELECT 用户名, 访问次数 FROM 超音数产品 WHERE 用户名 IN ('jackjchen', 'robinlee')"
|
"sql": "SELECT 用户名, 访问次数 FROM 超音数产品 WHERE 用户名 IN ('jackjchen', 'robinlee')"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "超音数近12个月访问人数 按部门 (补充信息:。当前的日期是2022-11-06) ",
|
"question": "超音数近12个月访问人数 按部门",
|
||||||
|
"sideInfo": "当前的日期是2022-11-06",
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
||||||
"sql": "SELECT 部门, 数据日期, 访问人数 FROM 超音数产品 WHERE 数据日期 >= '2021-11-06' AND 数据日期 <= '2022-11-06'"
|
"sql": "SELECT 部门, 数据日期, 访问人数 FROM 超音数产品 WHERE 数据日期 >= '2021-11-06' AND 数据日期 <= '2022-11-06'"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "超音数美术部、技术研发部的访问时长 (补充信息:’'美术部'‘是一个’部门‘,’ '技术研发部'‘是一个’部门‘。当前的日期是2023-04-21) ",
|
"question": "超音数美术部、技术研发部的访问时长",
|
||||||
|
"sideInfo": "’'美术部'‘是一个’部门‘,’ '技术研发部'‘是一个’部门‘。当前的日期是2023-04-21",
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
||||||
"sql": "SELECT 部门, 访问时长 FROM 超音数产品 WHERE 部门 IN ('美术部', '技术研发部')"
|
"sql": "SELECT 部门, 访问时长 FROM 超音数产品 WHERE 部门 IN ('美术部', '技术研发部')"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "近3天海田飞系MPPM结算播放份额 (补充信息:’'海田飞系'‘是一个’严选版权归属系‘。当前的日期是2023-08-21) ",
|
"question": "近3天海田飞系MPPM结算播放份额",
|
||||||
|
"sideInfo": "'海田飞系'是一个'严选版权归属系'。当前的日期是2023-08-21",
|
||||||
"dbSchema": "Table: 严选, Columns = [\"严选版权归属系\", \"付费模式\", \"结算播放份额\", \"付费用户结算播放份额\", \"数据日期\"]",
|
"dbSchema": "Table: 严选, Columns = [\"严选版权归属系\", \"付费模式\", \"结算播放份额\", \"付费用户结算播放份额\", \"数据日期\"]",
|
||||||
"sql": "SELECT 严选版权归属系, 结算播放份额 FROM 严选 WHERE 严选版权归属系 = '海田飞系' AND 数据日期 >= '2023-08-19' AND 数据日期 <= '2023-08-21' "
|
"sql": "SELECT 严选版权归属系, 结算播放份额 FROM 严选 WHERE 严选版权归属系 = '海田飞系' AND 数据日期 >= '2023-08-19' AND 数据日期 <= '2023-08-21' "
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "对比近7天翻唱版和纯音乐的歌曲播放量 (补充信息:’'纯音乐'‘是一个’语种‘,’ '翻唱版'‘是一个’歌曲版本‘。当前的日期是2023-05-22) ",
|
"question": "对比近7天翻唱版和纯音乐的歌曲播放量",
|
||||||
|
"sideInfo": "'纯音乐'是一个'语种','翻唱版'是一个'歌曲版本'。当前的日期是2023-05-22",
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"是否潮流人歌曲\", \"C音歌曲ID\", \"C音歌曲MID\", \"歌曲名\", \"歌曲版本\", \"语种\", \"歌曲类型\", \"翻唱类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"结算播放量\", \"运营播放量\", \"付费用户结算播放量\", \"历史累计结算播放量\", \"运营搜播量\", \"结算搜播量\", \"运营完播量\", \"运营推播量\", \"近7日复播率\", \"日均搜播量\", \"数据日期\"]",
|
"dbSchema": "Table: 歌曲库, Columns = [\"是否潮流人歌曲\", \"C音歌曲ID\", \"C音歌曲MID\", \"歌曲名\", \"歌曲版本\", \"语种\", \"歌曲类型\", \"翻唱类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"结算播放量\", \"运营播放量\", \"付费用户结算播放量\", \"历史累计结算播放量\", \"运营搜播量\", \"结算搜播量\", \"运营完播量\", \"运营推播量\", \"近7日复播率\", \"日均搜播量\", \"数据日期\"]",
|
||||||
"sql": "SELECT 歌曲版本, 语种, 结算播放量 FROM 歌曲库 WHERE 歌曲版本 = '翻唱版' AND 语种 = '纯音乐' AND 数据日期 >= '2023-05-16' AND 数据日期 <= '2023-05-22' "
|
"sql": "SELECT 歌曲版本, 语种, 结算播放量 FROM 歌曲库 WHERE 歌曲版本 = '翻唱版' AND 语种 = '纯音乐' AND 数据日期 >= '2023-05-16' AND 数据日期 <= '2023-05-22' "
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "对比一下陈拙悬、孟梅琦、赖媚韵的粉丝数 (补充信息:’'1527896'‘是一个’MPPM歌手ID‘,’ '1565463'‘是一个’MPPM歌手ID‘,’ '2141459'‘是一个’MPPM歌手ID‘。当前的日期是2023-05-31) ",
|
"question": "对比一下陈拙悬、孟梅琦、赖媚韵的粉丝数",
|
||||||
|
"sideInfo": "'1527896'是一个'MPPM歌手ID','1565463'是一个'MPPM歌手ID','2141459'是一个'MPPM歌手ID'。当前的日期是2023-05-31",
|
||||||
"dbSchema": "Table: 艺人库, Columns = [\"上下架状态\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"MPPM潮流人等级\", \"活跃区域\", \"年龄\", \"歌手才能\", \"歌手风格\", \"粉丝数\", \"潮音粉丝数\", \"超声波粉丝数\", \"推博粉丝数\", \"超声波歌曲数\", \"在架歌曲数\", \"超声波分享数\", \"独占歌曲数\", \"超声波在架歌曲评论数\", \"有播放量歌曲数\", \"数据日期\"]",
|
"dbSchema": "Table: 艺人库, Columns = [\"上下架状态\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"MPPM潮流人等级\", \"活跃区域\", \"年龄\", \"歌手才能\", \"歌手风格\", \"粉丝数\", \"潮音粉丝数\", \"超声波粉丝数\", \"推博粉丝数\", \"超声波歌曲数\", \"在架歌曲数\", \"超声波分享数\", \"独占歌曲数\", \"超声波在架歌曲评论数\", \"有播放量歌曲数\", \"数据日期\"]",
|
||||||
"sql": "SELECT 歌手名, 粉丝数 FROM 艺人库 WHERE 歌手名 IN ('陈拙悬', '孟梅琦', '赖媚韵')"
|
"sql": "SELECT 歌手名, 粉丝数 FROM 艺人库 WHERE 歌手名 IN ('陈拙悬', '孟梅琦', '赖媚韵')"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "播放量大于1万的歌曲有多少 (补充信息:。当前的日期是2023-07-31) ",
|
"question": "播放量大于1万的歌曲有多少",
|
||||||
|
"sideInfo": "当前的日期是2023-07-31",
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"是否潮流人歌曲\", \"超声波歌曲ID\", \"C音歌曲ID\", \"C音歌曲MID\", \"结算播放量\", \"运营播放量\", \"分享量\", \"收藏量\", \"运营搜播量\", \"结算搜播量\", \"拉新用户数\", \"拉活用户数\", \"分享率\", \"结算播放份额\", \"数据日期\"]",
|
"dbSchema": "Table: 歌曲库, Columns = [\"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"是否潮流人歌曲\", \"超声波歌曲ID\", \"C音歌曲ID\", \"C音歌曲MID\", \"结算播放量\", \"运营播放量\", \"分享量\", \"收藏量\", \"运营搜播量\", \"结算搜播量\", \"拉新用户数\", \"拉活用户数\", \"分享率\", \"结算播放份额\", \"数据日期\"]",
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 结算播放量 > 10000"
|
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 结算播放量 > 10000"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "超音数访问时长小于1小时,且来自美术部的用户是哪些 (补充信息:’'美术部'‘是一个’部门‘。当前的日期是2023-07-31) ",
|
"question": "超音数访问时长小于1小时,且来自美术部的用户是哪些",
|
||||||
|
"sideInfo": "'美术部'‘是一个’部门‘。当前的日期是2023-07-31",
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]",
|
||||||
"sql": "SELECT 用户名 FROM 超音数产品 WHERE 部门 = '美术部' AND 访问时长 < 1"
|
"sql": "SELECT 用户名 FROM 超音数产品 WHERE 部门 = '美术部' AND 访问时长 < 1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "超音数pv最高的用户有哪些 (补充信息:。当前的日期是2023-08-31) ",
|
"question": "超音数pv最高的用户有哪些",
|
||||||
|
"sideInfo": "当前的日期是2023-08-31",
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"用户名\", \"部门\", \"模块\", \"访问时长\", \"访问次数\", \"访问人数\", \"数据日期\"]",
|
||||||
"sql": "SELECT 用户名 FROM 超音数产品 ORDER BY 访问次数 DESC LIMIT 1"
|
"sql": "SELECT 用户名 FROM 超音数产品 ORDER BY 访问次数 DESC LIMIT 1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question": "近90天袁亚伟播放量平均值是多少 (补充信息:’'152789226'‘是一个’MPPM歌手ID‘。当前的日期是2023-08-31) ",
|
"question": "超音数访问次数大于1k的部门是哪些",
|
||||||
"dbSchema": "Table: 艺人库, Columns = [\"播放量层级\", \"播放量单调性\", \"播放量方差\", \"播放量突增类型\", \"播放量集中度\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"MPPM潮流人等级\", \"结算播放量\", \"运营播放量\", \"历史累计结算播放量\", \"有播放量歌曲数\", \"历史累计运营播放量\", \"付费用户结算播放量\", \"结算播放量占比\", \"运营播放份额\", \"免费用户结算播放占比\", \"完播量\", \"数据日期\"]",
|
"sideInfo": "当前的日期是2023-09-14",
|
||||||
"sql": "SELECT AVG(结算播放量) FROM 艺人库 WHERE 歌手名 = '袁亚伟' AND 数据日期 >= '2023-06-02' AND 数据日期 <= '2023-08-31' "
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "周倩倩近7天结算播放量总和是多少 (补充信息:’'199509'‘是一个’MPPM歌手ID‘。当前的日期是2023-08-31) ",
|
|
||||||
"dbSchema": "Table: 艺人库, Columns = [\"播放量层级\", \"播放量单调性\", \"播放量方差\", \"播放量突增类型\", \"播放量集中度\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"MPPM潮流人等级\", \"结算播放量\", \"运营播放量\", \"历史累计结算播放量\", \"有播放量歌曲数\", \"历史累计运营播放量\", \"付费用户结算播放量\", \"结算播放量占比\", \"运营播放份额\", \"免费用户结算播放占比\", \"完播量\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT SUM(结算播放量) FROM 艺人库 WHERE 歌手名 = '周倩倩' AND 数据日期 >= '2023-08-15' AND 数据日期 <= '2023-08-31' "
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "超音数访问次数大于1k的部门是哪些 (补充信息:。当前的日期是2023-09-14) ",
|
|
||||||
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
"dbSchema": "Table: 超音数产品, Columns = [\"部门\", \"模块\", \"用户名\", \"访问次数\", \"访问人数\", \"访问时长\", \"数据日期\"]",
|
||||||
"sql": "SELECT 部门 FROM 超音数产品 WHERE 访问次数 > 1000"
|
"sql": "SELECT 部门 FROM 超音数产品 WHERE 访问次数 > 1000"
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "陈亿训唱的所有的播放量大于20k的孤勇者有哪些 (补充信息:’'199509'‘是一个’MPPM歌手ID‘,’ '1527123'‘是一个’MPPM歌曲ID‘。当前的日期是2023-09-18) ",
|
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"歌曲名\", \"MPPM歌手ID\", \"歌曲版本\", \"歌曲类型\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"是否潮流人歌曲\", \"超声波歌曲ID\", \"C音歌曲ID\", \"C音歌曲MID\", \"结算播放量\", \"运营播放量\", \"分享量\", \"收藏量\", \"运营搜播量\", \"结算搜播量\", \"拉新用户数\", \"拉活用户数\", \"分享率\", \"结算播放份额\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 结算播放量 > 20000 AND 歌手名 = '陈亿训' AND 歌曲名 = '孤勇者'"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "周洁轮去年发布的歌曲有哪些 (补充信息:’'23109'‘是一个’MPPM歌手ID‘。当前的日期是2023-09-18) ",
|
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"歌曲名\", \"歌曲版本\", \"歌手名\", \"歌曲类型\", \"发布时间\", \"MPPM歌曲ID\", \"是否严选窄口径歌曲\", \"是否严选宽口径歌曲\", \"是否潮流人歌曲\", \"超声波歌曲ID\", \"C音歌曲ID\", \"C音歌曲MID\", \"结算播放量\", \"运营播放量\", \"分享量\", \"收藏量\", \"运营搜播量\", \"结算搜播量\", \"拉新用户数\", \"拉活用户数\", \"分享率\", \"结算播放份额\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 发布时间 >= '2023-01-01' AND 发布时间 <= '2023-12-31' AND 歌手名 = '周洁轮'"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "我想要近半年签约的播放量前十的歌手有哪些 (补充信息:。当前的日期是2023-09-11) ",
|
|
||||||
"dbSchema": "Table: 艺人库, Columns = [\"播放量层级\", \"播放量单调性\", \"播放量方差\", \"播放量突增类型\", \"播放量集中度\", \"歌手名\", \"歌手等级\", \"歌手类型\", \"歌手来源\", \"签约日期\", \"MPPM潮流人等级\", \"结算播放量\", \"运营播放量\", \"历史累计结算播放量\", \"有播放量歌曲数\", \"历史累计运营播放量\", \"付费用户结算播放量\", \"结算播放量占比\", \"运营播放份额\", \"免费用户结算播放占比\", \"完播量\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌手名 FROM 艺人库 WHERE 数据日期 >= '2023-03-15' AND 数据日期 <= '2023-09-11' ORDER BY 结算播放量 DESC LIMIT 10"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "最近一年发行的歌曲中,有哪些在近7天播放超过一千万的 (补充信息:。当前的日期是2023-08-12) ",
|
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"发行日期\", \"歌曲语言\", \"歌曲来源\", \"歌曲流派\", \"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"发行时间\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 发行日期 >= '2022-08-13' AND 发行日期 <= '2023-08-12' AND 数据日期 >= '2023-08-06' AND 数据日期 <= '2023-08-12' AND 结算播放量 > 10000000"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "今年以来发行的歌曲中,有哪些在近7天播放超过一千万的 (补充信息:。当前的日期是2023-08-12) ",
|
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"发行日期\", \"歌曲语言\", \"歌曲来源\", \"歌曲流派\", \"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"发行时间\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 发行日期 >= '2023-01-01' AND 发行日期 <= '2023-08-12' AND 数据日期 >= '2023-08-06' AND 数据日期 <= '2023-08-12' AND 结算播放量 > 10000000"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"question": "2023年以来发行的歌曲中,有哪些在近7天播放超过一千万的 (补充信息:’'514129144'‘是一个’MPPM歌曲ID‘。当前的日期是2023-08-12) ",
|
|
||||||
"dbSchema": "Table: 歌曲库, Columns = [\"发行日期\", \"歌曲语言\", \"歌曲来源\", \"歌曲流派\", \"歌曲名\", \"歌曲版本\", \"歌曲类型\", \"发行时间\", \"数据日期\"]",
|
|
||||||
"sql": "SELECT 歌曲名 FROM 歌曲库 WHERE 发行日期 >= '2023-01-01' AND 发行日期 <= '2023-08-12' AND 数据日期 >= '2023-08-06' AND 数据日期 <= '2023-08-12' AND 结算播放量 > 10000000"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
Reference in New Issue
Block a user