diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatConfigBaseReq.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatConfigBaseReq.java index e2e8c0492..4e0f9f4ee 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatConfigBaseReq.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatConfigBaseReq.java @@ -32,6 +32,11 @@ public class ChatConfigBaseReq { */ private List recommendedQuestions; + /** + * the llm examples about the model + */ + private String llmExamples; + /** * available status */ diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigResp.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigResp.java index 5914855a4..9b5734794 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigResp.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/response/ChatConfigResp.java @@ -23,6 +23,8 @@ public class ChatConfigResp { private List recommendedQuestions; + private String llmExamples; + /** * available status */ diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatConfigDO.java b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatConfigDO.java index aa9dcd3f6..1498094ba 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatConfigDO.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/persistence/dataobject/ChatConfigDO.java @@ -25,6 +25,8 @@ public class ChatConfigDO { private Integer status; + private String llmExamples; + /** * record info */ diff --git a/chat/core/src/main/resources/mapper/ChatConfigMapper.xml b/chat/core/src/main/resources/mapper/ChatConfigMapper.xml index ae71b8c79..6d289934b 100644 --- a/chat/core/src/main/resources/mapper/ChatConfigMapper.xml +++ b/chat/core/src/main/resources/mapper/ChatConfigMapper.xml @@ -13,6 +13,7 @@ + @@ -24,11 +25,11 @@ useGeneratedKeys="true" keyProperty="id"> insert into s2_chat_config ( - model_id, `chat_detail_config`, chat_agg_config, recommended_questions, status, created_by, updated_by, created_at, updated_at + model_id, `chat_detail_config`, chat_agg_config, recommended_questions, status, llm_examples, created_by, updated_by, created_at, updated_at ) values ( - #{modelId}, #{chatDetailConfig}, #{chatAggConfig}, #{recommendedQuestions}, #{status}, #{createdBy}, #{updatedBy}, #{createdAt}, #{updatedAt} + #{modelId}, #{chatDetailConfig}, #{chatAggConfig}, #{recommendedQuestions}, #{status}, #{llmExamples}, #{createdBy}, #{updatedBy}, #{createdAt}, #{updatedAt} ) @@ -52,6 +53,9 @@ updated_by = #{updatedBy} , + + llm_examples = #{llmExamples} , + diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/SysParameter.java b/common/src/main/java/com/tencent/supersonic/common/pojo/SysParameter.java index 28429de4b..49c554314 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/SysParameter.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/SysParameter.java @@ -34,6 +34,8 @@ public class SysParameter { public void init() { parameters = Lists.newArrayList(); admins = Lists.newArrayList("admin"); + parameters.add(new Parameter("llm.model.name", "gpt4", "模型名称", "string")); + parameters.add(new Parameter("llm.api.key", "sk-afdasdasd", "模型密钥", "string")); parameters.add(new Parameter("one.detection.size", "8", "一次探测个数", "number")); parameters.add(new Parameter("one.detection.max.size", "20", "阈值", "number")); parameters.add(new Parameter("metric.dimension.min.threshold", "0.3", "指标名、维度名最小文本相似度", "number")); @@ -44,6 +46,7 @@ public class SysParameter { parameters.add(new Parameter("embedding.mapper.batch", "0.3", "批量向量召回文本请求个数", "number")); parameters.add(new Parameter("embedding.mapper.number", "0.3", "批量向量召回文本返回结果个数", "number")); parameters.add(new Parameter("embedding.mapper.distance.threshold", "0.3", "Mapper阶段向量召回相似度阈值", "number")); + parameters.add(new Parameter("use.s2SQL.switch", "true", "是否打开S2SQL开关", "bool")); } } diff --git a/common/src/main/java/com/tencent/supersonic/common/rest/SysParameterController.java b/common/src/main/java/com/tencent/supersonic/common/rest/SysParameterController.java index f6b12fab0..c39b62a86 100644 --- a/common/src/main/java/com/tencent/supersonic/common/rest/SysParameterController.java +++ b/common/src/main/java/com/tencent/supersonic/common/rest/SysParameterController.java @@ -23,7 +23,7 @@ public class SysParameterController { } @GetMapping - SysParameter get() { + public SysParameter get() { return sysParameterService.getSysParameter(); } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/SysParameterServiceImpl.java b/common/src/main/java/com/tencent/supersonic/common/service/impl/SysParameterServiceImpl.java similarity index 97% rename from chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/SysParameterServiceImpl.java rename to common/src/main/java/com/tencent/supersonic/common/service/impl/SysParameterServiceImpl.java index 84c18acd1..97c00e198 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/SysParameterServiceImpl.java +++ b/common/src/main/java/com/tencent/supersonic/common/service/impl/SysParameterServiceImpl.java @@ -1,4 +1,4 @@ -package com.tencent.supersonic.chat.service.impl; +package com.tencent.supersonic.common.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; diff --git a/launchers/standalone/src/main/java/com/tencent/supersonic/ConfigureDemo.java b/launchers/standalone/src/main/java/com/tencent/supersonic/ConfigureDemo.java index 80a8f93f3..ac60b5922 100644 --- a/launchers/standalone/src/main/java/com/tencent/supersonic/ConfigureDemo.java +++ b/launchers/standalone/src/main/java/com/tencent/supersonic/ConfigureDemo.java @@ -99,11 +99,11 @@ public class ConfigureDemo implements ApplicationListener parseAndExecute(2, "访问次数最高的部门"); } - public void addChatParameter() { - SysParameter chatParameter = new SysParameter(); - chatParameter.setId(1); - chatParameter.init(); - sysParameterService.save(chatParameter); + public void addSysParameter() { + SysParameter sysParameter = new SysParameter(); + sysParameter.setId(1); + sysParameter.init(); + sysParameterService.save(sysParameter); } public void addDemoChatConfig_1() { @@ -306,7 +306,7 @@ public class ConfigureDemo implements ApplicationListener return; } try { - addChatParameter(); + addSysParameter(); addDemoChatConfig_1(); addDemoChatConfig_2(); addPlugin_1(); diff --git a/launchers/standalone/src/main/resources/db/schema-h2.sql b/launchers/standalone/src/main/resources/db/schema-h2.sql index 75cb40629..1c4c96d89 100644 --- a/launchers/standalone/src/main/resources/db/schema-h2.sql +++ b/launchers/standalone/src/main/resources/db/schema-h2.sql @@ -75,6 +75,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_config` ( `created_by` varchar(100) NOT NULL , `updated_by` varchar(100) NOT NULL , `status` INT NOT NULL DEFAULT '0' , -- domain extension information status : 0 is normal, 1 is off the shelf, 2 is deleted + `llm_examples` TEXT, PRIMARY KEY (`id`) ) ; COMMENT ON TABLE s2_chat_config IS 'chat config information table '; diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql index c3c140691..95e1555db 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql @@ -63,6 +63,7 @@ CREATE TABLE `s2_chat_config` ( `created_by` varchar(100) NOT NULL COMMENT '创建人', `updated_by` varchar(100) NOT NULL COMMENT '更新人', `status` int(10) NOT NULL COMMENT '主题域扩展信息状态, 0-删除,1-生效', + `llm_examples` text COMMENT 'llm examples', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='主题域扩展信息表'; diff --git a/launchers/standalone/src/test/resources/db/schema-h2.sql b/launchers/standalone/src/test/resources/db/schema-h2.sql index 0fac6e562..5d2cfdddd 100644 --- a/launchers/standalone/src/test/resources/db/schema-h2.sql +++ b/launchers/standalone/src/test/resources/db/schema-h2.sql @@ -75,6 +75,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_config` ( `created_by` varchar(100) NOT NULL , `updated_by` varchar(100) NOT NULL , `status` INT NOT NULL DEFAULT '0' , -- domain extension information status : 0 is normal, 1 is off the shelf, 2 is deleted + `llm_examples` TEXT, PRIMARY KEY (`id`) ) ; COMMENT ON TABLE s2_chat_config IS 'chat config information table '; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/Measure.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/Measure.java index 00cfc89d5..926373173 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/Measure.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/pojo/Measure.java @@ -28,6 +28,8 @@ public class Measure { private Long datasourceId; + private String datasourceName; + public Measure(String name, String bizName, String agg, Integer isCreateMetric) { this.name = name; this.agg = agg; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java index 3179dcb8d..c05aed014 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java @@ -5,6 +5,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.tencent.supersonic.common.pojo.DataFormat; import com.tencent.supersonic.semantic.api.model.pojo.DrillDownDimension; +import com.tencent.supersonic.semantic.api.model.pojo.Measure; import com.tencent.supersonic.semantic.api.model.pojo.MetricTypeParams; import com.tencent.supersonic.semantic.api.model.pojo.RelateDimension; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; @@ -72,4 +73,11 @@ public class MetricResp extends SchemaItem { .map(String::valueOf) .collect(Collectors.joining(",")); } + + public List getMeasures() { + if (typeParams == null) { + return Lists.newArrayList(); + } + return typeParams.getMeasures(); + } } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java index f97b638c3..2a2805d12 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java @@ -20,9 +20,11 @@ import com.tencent.supersonic.semantic.api.model.pojo.MetricTypeParams; import com.tencent.supersonic.semantic.api.model.request.MetaBatchReq; import com.tencent.supersonic.semantic.api.model.request.MetricReq; import com.tencent.supersonic.semantic.api.model.request.PageMetricReq; +import com.tencent.supersonic.semantic.api.model.response.DatasourceResp; import com.tencent.supersonic.semantic.api.model.response.DomainResp; import com.tencent.supersonic.semantic.api.model.response.MetricResp; import com.tencent.supersonic.semantic.api.model.response.ModelResp; +import com.tencent.supersonic.semantic.model.domain.DatasourceService; import com.tencent.supersonic.semantic.model.domain.DomainService; import com.tencent.supersonic.semantic.model.domain.ModelService; import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDO; @@ -57,6 +59,8 @@ public class MetricServiceImpl implements MetricService { private DomainService domainService; + private DatasourceService datasourceService; + private ChatGptHelper chatGptHelper; private ApplicationEventPublisher eventPublisher; @@ -64,11 +68,13 @@ public class MetricServiceImpl implements MetricService { public MetricServiceImpl(MetricRepository metricRepository, ModelService modelService, DomainService domainService, + DatasourceService datasourceService, ChatGptHelper chatGptHelper, ApplicationEventPublisher eventPublisher) { this.domainService = domainService; this.metricRepository = metricRepository; this.modelService = modelService; + this.datasourceService = datasourceService; this.chatGptHelper = chatGptHelper; this.eventPublisher = eventPublisher; } @@ -222,6 +228,7 @@ public class MetricServiceImpl implements MetricService { } } + @Deprecated @Override public MetricResp getMetric(Long modelId, String bizName) { MetricFilter metricFilter = new MetricFilter(); @@ -250,7 +257,20 @@ public class MetricServiceImpl implements MetricService { if (metricDO == null) { return null; } - return MetricConverter.convert2MetricResp(metricDO, new HashMap<>()); + MetricResp metricResp = MetricConverter.convert2MetricResp(metricDO, new HashMap<>()); + List measures = metricResp.getMeasures(); + if (CollectionUtils.isEmpty(measures)) { + return metricResp; + } + Map datasourceResps = datasourceService.getDatasourceList().stream() + .collect(Collectors.toMap(DatasourceResp::getId, datasourceResp -> datasourceResp)); + measures.forEach(measure -> { + DatasourceResp datasourceResp = datasourceResps.get(measure.getDatasourceId()); + if (datasourceResp != null) { + measure.setDatasourceName(datasourceResp.getName()); + } + }); + return metricResp; } @Override