From 53d45c8e0d325bd12ec5f31a83032ec933aab64b Mon Sep 17 00:00:00 2001 From: Wonder Date: Thu, 6 Nov 2025 15:57:44 +0800 Subject: [PATCH] =?UTF-8?q?=20=E2=99=BB=EF=B8=8FRefactor:=20=E8=BE=93?= =?UTF-8?q?=E5=87=BA=20MarkDown=20=E6=A0=BC=E5=BC=8F=E8=A7=81=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wonder/bi/constant/CommonConstant.java | 4 +- .../wonder/bi/controller/ChartController.java | 54 ++++++++----------- 2 files changed, 23 insertions(+), 35 deletions(-) diff --git a/Backend/src/main/java/com/wonder/bi/constant/CommonConstant.java b/Backend/src/main/java/com/wonder/bi/constant/CommonConstant.java index bdd7737..5ea6cf0 100644 --- a/Backend/src/main/java/com/wonder/bi/constant/CommonConstant.java +++ b/Backend/src/main/java/com/wonder/bi/constant/CommonConstant.java @@ -50,8 +50,8 @@ public interface CommonConstant { {csv格式的原始数据,用,作为分隔符} 规则集 {可选,可能为空} - 请根据以上内容,按照以下指定格式生成内容 - {Insight: 结构化见解} + 请根据以上内容,按照以下结构生成内容,格式是 MarkDown + {Insight: 见解} {Rules: 使用到的规则集} """; } diff --git a/Backend/src/main/java/com/wonder/bi/controller/ChartController.java b/Backend/src/main/java/com/wonder/bi/controller/ChartController.java index 45ac461..d0009fe 100644 --- a/Backend/src/main/java/com/wonder/bi/controller/ChartController.java +++ b/Backend/src/main/java/com/wonder/bi/controller/ChartController.java @@ -13,6 +13,8 @@ import com.wonder.bi.constant.CommonConstant; import com.wonder.bi.constant.UserConstant; import com.wonder.bi.exception.BusinessException; import com.wonder.bi.exception.ThrowUtils; +import com.wonder.bi.manager.ChartAgentManager; +import com.wonder.bi.manager.InsightAgentManager; import com.wonder.bi.manager.OpenAiManager; import com.wonder.bi.manager.RedisLimiterManager; import com.wonder.bi.model.dto.chart.*; @@ -54,8 +56,14 @@ public class ChartController { @Resource private UserService userService; +// @Resource +// private OpenAiManager openAiManager; + @Resource - private OpenAiManager openAiManager; + private ChartAgentManager chartAgent; + + @Resource + private InsightAgentManager insightAgent; @Resource private RedisLimiterManager redisLimiterManager; @@ -293,17 +301,15 @@ public class ChartController { String csvData = ExcelUtils.excelToCsv(multipartFile); userInput.append(csvData).append("\n"); - String result = openAiManager.doChat(userInput.toString()); - String[] splits = Arrays.stream(result.split("【【【【【")) - .filter(s -> !s.equals("\n") && !s.isEmpty()) - .toArray(String[]::new); +// String result = openAiManager.doChat(userInput.toString()); + // if (splits.length < 3) { // throw new BusinessException(ErrorCode.SYSTEM_ERROR, "AI 生成错误"); // } - String genChart = splits[0].trim(); - String genResult = splits[1].trim(); + String genChart = chartAgent.getChartJson(userInput.toString()); + String genResult = insightAgent.getAnalysisInsight(userInput.toString()); // 插入到数据库 Chart chart = new Chart(); chart.setName(name); @@ -354,24 +360,6 @@ public class ChartController { // 限流判断,每个用户一个限流器 redisLimiterManager.doRateLimit("genChartByAi_" + loginUser.getId()); -// final String prompt = "你是一个数据分析师和前端开发专家,接下来我会按照以下固定格式给你提供内容:\n" + -// "分析需求:\n" + -// "{数据分析的需求或者目标}\n" + -// "原始数据:\n" + -// "{csv格式的原始数据,用,作为分隔符}\n" + -// "请根据这两部分内容,按照以下指定格式生成内容(此外不要输出任何多余的开头、结尾、注释)\n" + -// "【【【【【\n" + -// "{前端 Echarts V5 的 option 配置对象js代码,合理地将数据进行可视化,不要生成任何多余的内容,比如注释}\n" + -// "【【【【【\n" + -// "{明确的数据分析结论、越详细越好,不要生成多余的注释}"; - // 分析需求: - // 分析网站用户的增长情况 - // 原始数据: - // 日期,用户数 - // 1号,10 - // 2号,20 - // 3号,30 - // 构造用户输入 StringBuilder userInput = new StringBuilder(); userInput.append("分析需求:").append("\n"); @@ -410,14 +398,14 @@ public class ChartController { return; } // 调用 AI - String result = openAiManager.doChat(userInput.toString()); - String[] splits = result.split("【【【【【"); - if (splits.length < 3) { - handleChartUpdateError(chart.getId(), "AI 生成错误"); - return; - } - String genChart = splits[1].trim(); - String genResult = splits[2].trim(); +// String result = openAiManager.doChat(userInput.toString()); +// String[] splits = result.split("【【【【【"); +// if (splits.length < 3) { +// handleChartUpdateError(chart.getId(), "AI 生成错误"); +// return; +// } + String genChart = chartAgent.getChartJson(userInput.toString()); + String genResult = insightAgent.getAnalysisInsight(userInput.toString()); Chart updateChartResult = new Chart(); updateChartResult.setId(chart.getId()); updateChartResult.setGenChart(genChart);