diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java index bf34b1408..18894ba6a 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java @@ -362,7 +362,8 @@ public class DimensionServiceImpl extends ServiceImpl mockAlias(DimensionReq dimensionReq, String mockType, User user) { String mockAlias = aliasGenerateHelper.generateAlias(mockType, dimensionReq.getName(), dimensionReq.getBizName(), "", dimensionReq.getDescription(), false); - return JSONObject.parseObject(mockAlias, new TypeReference>() { + String ret = mockAlias.replaceAll("`", "").replace("json", "").replace("\n", "").replace(" ", ""); + return JSONObject.parseObject(ret, new TypeReference>() { }); } @@ -380,13 +381,13 @@ public class DimensionServiceImpl extends ServiceImpl> resultList = semanticQueryResp.getResultList(); List valueList = new ArrayList<>(); for (Map stringObjectMap : resultList) { - String value = (String) stringObjectMap.get(dimensionReq.getBizName()); + String value = String.valueOf(stringObjectMap.get(dimensionReq.getBizName())); valueList.add(value); } String json = aliasGenerateHelper.generateDimensionValueAlias(JSON.toJSONString(valueList)); log.info("return llm res is :{}", json); - - JSONObject jsonObject = JSON.parseObject(json); + String ret = json.replaceAll("`", "").replace("json", "").replace("\n", "").replace(" ", ""); + JSONObject jsonObject = JSON.parseObject(ret); List dimValueMapsResp = new ArrayList<>(); int i = 0; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java index dfae76ce6..c27528524 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java @@ -553,7 +553,8 @@ public class MetricServiceImpl extends ServiceImpl String mockAlias = aliasGenerateHelper.generateAlias(mockType, metricReq.getName(), metricReq.getBizName(), "", metricReq.getDescription(), !"".equals(metricReq.getDataFormatType())); - return JSONObject.parseObject(mockAlias, new TypeReference>() { + String ret = mockAlias.replaceAll("`", "").replace("json", "").replace("\n", "").replace(" ", ""); + return JSONObject.parseObject(ret, new TypeReference>() { }); } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/AliasGenerateHelper.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/AliasGenerateHelper.java index 6cf0c31b1..087bc3c8f 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/AliasGenerateHelper.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/AliasGenerateHelper.java @@ -61,6 +61,14 @@ public class AliasGenerateHelper { + "},\n" + "\"additionalProperties\":false}\n" + "Please double-check whether the answer conforms to the format described in the JSON-schema.\n" + + "回答格式示例:" + + "[\n" + + " \"人数\",\n" + + " \"员工人数\",\n" + + " \"员工数量\",\n" + + " \"员工总数\"\n" + + "]\n" + + "请严格按照示例格式进行生成。" + "ANSWER JSON:"; log.info("msg:{}", msg); return getChatCompletion(msg); @@ -68,15 +76,22 @@ public class AliasGenerateHelper { public String generateDimensionValueAlias(String json) { String msg = "Assuming you are a professional data analyst specializing in indicators,for you a json list," - + "the required content to follow is as follows: " - + "1. The format of JSON," - + "2. Only return in JSON format," - + "3. the array item > 1 and < 5,more alias," - + "for example:input:[\"qq_music\",\"kugou_music\"]," - + "out:{\"tran\":[\"qq音乐\",\"酷狗音乐\"],\"alias\":{\"qq_music\":[\"q音\",\"qq音乐\"]," - + "\"kugou_music\":[\"kugou\",\"酷狗\"]}}," + + "the required content to follow is as follows: \n" + + "1. The format of JSON,\n" + + "2. Only return in JSON format,\n" + + "3. the array item > 1 and < 5,more alias,\n" + + "for example:\n" + + "input:[\"qq_music\",\"kugou_music\"],\n" + + "out:{\"tran\":[\"qq音乐\",\"酷狗音乐\"]," + + "\"alias\":{\"qq_music\":[\"q音\",\"qq音乐\"],\"kugou_music\":[\"kugou\",\"酷狗\"]}},\n" + + "input:[\"qq_music\",\"kugou_music\"],\n" + + "out:{\"tran\":[\"qq音乐\",\"酷狗音乐\"]," + + "\"alias\":{\"qq_music\":[\"q音\",\"qq音乐\"],\"kugou_music\":[\"kugou\",\"酷狗\"]}},\n" + + "input:[\"大专\",\"本科\",\"硕士研究生\"],\n" + + "out:{\"tran\":[\"大专\",\"本科\",\"硕士研究生\"]," + + "\"alias\":{\"大专\":[\"专科\",\"大学专科\"],\"本科\":[\"学士\",\"本科生\"],\"硕士研究生\":[\"硕士\",\"研究生\"]}},\n" + "now input: " - + json + "," + + json + ",\n" + "answer json:"; log.info("msg:{}", msg); return getChatCompletion(msg);