diff --git a/Backend/pom.xml b/Backend/pom.xml
index fb1bdf8..65b81d1 100644
--- a/Backend/pom.xml
+++ b/Backend/pom.xml
@@ -71,6 +71,12 @@
mybatis-plus-jsqlparser
+
+ org.springframework.ai
+ spring-ai-starter-model-openai
+ 1.0.3
+
+
org.springframework.boot
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 d343bc5..b92ca70 100644
--- a/Backend/src/main/java/com/wonder/bi/constant/CommonConstant.java
+++ b/Backend/src/main/java/com/wonder/bi/constant/CommonConstant.java
@@ -32,4 +32,13 @@ public interface CommonConstant {
" \"{前端 Echarts V5 的 option 配置对象的json代码,合理地将数据进行可视化,不要生成任何多余的内容,比如注释}\\n\" +\n" +
" \"【【【【【\\n\" +\n" +
" \"{明确的数据分析结论、越详细越好,不要生成多余的注释}\"";
+
+ String CHART_AGENT_PROMPT = """
+ 你是一个数据分析师和前端开发专家,我会按照以下固定格式给你提供内容:\
+ 分析需求:
+ {数据分析的需求或者目标}
+ 原始数据
+ {csv格式的原始数据,用,作为分隔符}
+ 请根据这两部分内容,按照以下指定格式生成内容
+ {前端 Echarts V5 的 option 配置对象的json代码,合理地将数据进行可视化,不要生成任何多余的内容,比如注释}""";
}
diff --git a/Backend/src/main/java/com/wonder/bi/manager/ChartAgentManager.java b/Backend/src/main/java/com/wonder/bi/manager/ChartAgentManager.java
new file mode 100644
index 0000000..06f100f
--- /dev/null
+++ b/Backend/src/main/java/com/wonder/bi/manager/ChartAgentManager.java
@@ -0,0 +1,28 @@
+package com.wonder.bi.manager;
+
+import com.wonder.bi.constant.CommonConstant;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.ai.chat.client.ChatClient;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class ChartAgentManager {
+
+ private ChatClient client;
+
+ public ChartAgentManager(ChatClient.Builder chatClientBuilder) {
+ this.client = chatClientBuilder
+ .defaultSystem(CommonConstant.CHART_AGENT_PROMPT)
+ .build();
+ }
+
+ public String getChartJson(String message) {
+ String content = client
+ .prompt(message)
+ .call()
+ .content();
+ log.info(content);
+ return content;
+ }
+}
diff --git a/Backend/src/main/resources/application.yml b/Backend/src/main/resources/application.yml
index bd96ed0..6a7a142 100644
--- a/Backend/src/main/resources/application.yml
+++ b/Backend/src/main/resources/application.yml
@@ -19,6 +19,13 @@ knife4j:
spring:
application:
name: bi-backend
+ ai:
+ openai:
+ base-url: https://api.siliconflow.cn
+ api-key: sk-idvvtxhxwaulcmvoshpvouuenezzttqgaeqwbdcucqmvfncm
+ chat:
+ options:
+ model: Qwen/Qwen3-Coder-30B-A3B-Instruct
# 支持 swagger3
mvc:
pathmatch:
diff --git a/Backend/src/test/java/com/wonder/bi/manager/ChartAgentManagerTest.java b/Backend/src/test/java/com/wonder/bi/manager/ChartAgentManagerTest.java
new file mode 100644
index 0000000..a07443c
--- /dev/null
+++ b/Backend/src/test/java/com/wonder/bi/manager/ChartAgentManagerTest.java
@@ -0,0 +1,27 @@
+package com.wonder.bi.manager;
+
+import jakarta.annotation.Resource;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@SpringBootTest
+class ChartAgentManagerTest {
+
+ @Resource
+ private ChartAgentManager chartAgent;
+
+ @Test
+ void getChartJson() {
+ String chartJson = chartAgent.getChartJson("分析需求:\n" +
+ "分析网站用户的增长情况\n" +
+ "原始数据:\n" +
+ "日期,用户数\n" +
+ "1号,10\n" +
+ "2号,20\n" +
+ "3号,30\n");
+ Assertions.assertNotNull(chartJson);
+ }
+}
\ No newline at end of file