简单调试

This commit is contained in:
2025-03-02 21:08:36 +08:00
parent d90029e7c2
commit 19a93325b1
4 changed files with 45 additions and 5 deletions

13
.idea/dataSources.xml generated
View File

@@ -13,5 +13,18 @@
</jdbc-additional-properties> </jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir> <working-dir>$ProjectFileDir$</working-dir>
</data-source> </data-source>
<data-source source="LOCAL" name="main@192.168.100.139" uuid="eb4550b4-11dc-430c-9617-be74169dcc17">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://192.168.100.139:3307/main?useSSL=false&amp;allowPublicKeyRetrieval=true</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.resource.type" value="Deployment" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component> </component>
</project> </project>

View File

@@ -55,8 +55,8 @@ public class ChatController {
// language=TEXT // language=TEXT
prompts.add(""" prompts.add("""
你是一名服务器主机运维管理员,对于用户提出的问题,你会尝试从多个方面思考分析,通过多种角度进行研究,使用尽可能多的数据对比对用户的问题进行回答 你是一名服务器主机运维管理员,对于用户提出的问题,你会尝试从多个方面思考分析,通过多种角度进行研究,使用尽可能多的数据对比对用户的问题进行回答
你会积极使用表格、echarts图表等形式对数据进行分类、统计力求能直观表达数据之间的关系和趋势尤其是用户问题中出现“趋势”、“占比”、“对比”等字眼的时候 你会积极使用表格、echarts图表等形式对数据进行分类、统计力求能直观表达数据之间的关系和趋势用户问题中出现“趋势”、“占比”、“对比”等字眼的时候优先使用echarts图表进行分析
你始终会在中文语境下回答对于用户的每个问题先提出4个和用户提问最为相关的问题针对以上5个问题分别进行回答 你始终会在中文语境下回答对于用户的每个问题先提出4个和用户提问最为相关的问题针对以上5个问题分别进行回答再并整合答案汇总成为最终的回答至少500字以上
对于echarts图表严格按照如下格式进行绘制这部份代码必须新起一段 对于echarts图表严格按照如下格式进行绘制这部份代码必须新起一段
```echarts ```echarts
@@ -169,6 +169,7 @@ public class ChatController {
你将所管理的主机信息记录在据数据库中schema名为main、表名为host_assets的MySQL表中任何关于主机的数据的回答都必须从实际的数据中获取严禁虚构任何不存在的表或表字段没有描述的表或字段可以从表名或字段名中推测如果找不到答案就回复“数据库中没有找到相关数据” 你将所管理的主机信息记录在据数据库中schema名为main、表名为host_assets的MySQL表中任何关于主机的数据的回答都必须从实际的数据中获取严禁虚构任何不存在的表或表字段没有描述的表或字段可以从表名或字段名中推测如果找不到答案就回复“数据库中没有找到相关数据”
任何时候你都只能查询数据库不会对数据库进行任何修改操作也不会查询除host_assets外的任何表数据库查询结果中出现null表示没有数据 任何时候你都只能查询数据库不会对数据库进行任何修改操作也不会查询除host_assets外的任何表数据库查询结果中出现null表示没有数据
用户问题中提到的关键词通常不是精准的字段名或字段内容,你需要结合精确匹配或模糊匹配等等多种方式综合查询数据,必要的时候可以多次查询数据库综合查询数据 用户问题中提到的关键词通常不是精准的字段名或字段内容,你需要结合精确匹配或模糊匹配等等多种方式综合查询数据,必要的时候可以多次查询数据库综合查询数据
当用户的问题涉及到具体检索某一列的某个值时如果该列不是主键、日期、时间等内容先使用distinct语句查询该列的取值情况再根据用户的需求选择具体的值进行查询避免查询不存在的取值
以下是host_assets表的详细信息包含表名、表描述、字段名和字段描述"""); 以下是host_assets表的详细信息包含表名、表描述、字段名和字段描述""");
prompts.add(databaseTools.getTableInformation(databaseName)); prompts.add(databaseTools.getTableInformation(databaseName));
prompts.add(""); prompts.add("");

View File

@@ -30,6 +30,7 @@ spring:
completions-path: /chat/completions completions-path: /chat/completions
options: options:
model: "glm-4-flash" model: "glm-4-flash"
parallel-tool-calls: true
ollama: ollama:
chat: chat:
model: "qwen2.5:7b" model: "qwen2.5:7b"

View File

@@ -1,5 +1,7 @@
package com.lanyuanxiaoyao.ai.analysis; package com.lanyuanxiaoyao.ai.analysis;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.db.DbUtil; import cn.hutool.db.DbUtil;
@@ -11,6 +13,7 @@ import java.sql.Statement;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.datafaker.Faker; import net.datafaker.Faker;
@@ -23,15 +26,15 @@ public class FakeData {
public static void main(String[] args) { public static void main(String[] args) {
Faker faker = new Faker(new Locale("zh-CN")); Faker faker = new Faker(new Locale("zh-CN"));
try (Session session = DbUtil.newSession(new SimpleDataSource("jdbc:mysql://localhost:3307/main", "test", "test"))) { /*try (Session session = DbUtil.newSession(new SimpleDataSource("jdbc:mysql://192.168.100.139:3307/main", "test", "test"))) {
String fieldName = "system_name"; String fieldName = "system_name";
List<String> items = new ArrayList<>(); List<String> items = new ArrayList<>();
List<Entity> entities = session.query(StrUtil.format("select distinct {} as name from host_assets where {} is not null", fieldName, fieldName)); List<Entity> entities = session.query(StrUtil.format("select distinct {} as name from host_assets where {} is not null", fieldName, fieldName));
for (Entity entity : entities) { for (Entity entity : entities) {
/* Set<String> fields = entity.getFieldNames(); *//* Set<String> fields = entity.getFieldNames();
for (String field : fields) { for (String field : fields) {
items.add(entity.get(field).toString()); items.add(entity.get(field).toString());
} */ } *//*
items.add(entity.getStr("name")); items.add(entity.getStr("name"));
} }
for (String item : items) { for (String item : items) {
@@ -46,6 +49,28 @@ public class FakeData {
} }
} catch (SQLException e) { } catch (SQLException e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
}*/
try (Session session = DbUtil.newSession(new SimpleDataSource("jdbc:mysql://192.168.100.139:3307/main?useSSL=false&allowPublicKeyRetrieval=true", "test", "test"))) {
String fieldName = "id";
List<String> items = new ArrayList<>();
List<Entity> entities = session.query(StrUtil.format("select distinct {} as name from host_assets where {} is not null", fieldName, fieldName));
for (Entity entity : entities) {
Set<String> fields = entity.getFieldNames();
for (String field : fields) {
items.add(entity.get(field).toString());
}
items.add(entity.getStr("name"));
}
for (String item : items) {
String dateText = RandomUtil.randomDate(DateUtil.parseDateTime("2024-12-31 00:00:00"), DateField.DAY_OF_YEAR, -200, -1).toString("yyyy-MM-dd");
String sql = StrUtil.format("update host_assets set start_date = '{}' where {} = '{}'", dateText, fieldName, item);
log.info("{}", sql);
try (Statement statement = session.getConnection().createStatement()) {
statement.execute(sql);
}
}
} catch (SQLException e) {
log.error(e.getMessage(), e);
} }
} }
} }