智能问数系统
BladeX AI 智能问数分析平台
智能问数概述
BladeX AI智能问数分析平台是一个企业级的自然语言数据查询与可视化系统,支持用户通过自然语言提问自动生成SQL、执行查询并生成可视化图表。平台基于Java Spring框架构建,结合大语言模型(LLM)的语义理解能力,将自然语言转化为精准的数据库查询,实现"对话式"数据分析体验。
核心能力
- 自然语言转SQL:基于LLM将用户问题智能转化为标准SQL查询语句
- 多数据库适配:支持MySQL、PostgreSQL、Oracle、SQL Server、MariaDB、达梦等主流数据库
- 智能可视化:AI自动推荐图表类型并生成ECharts配置,支持9种图表
- SQL安全校验:内置SQL安全验证机制,仅允许SELECT查询,防止数据篡改
- 业务术语匹配:支持企业自定义术语库,提升专业领域查询准确性
- 智能仪表盘:支持将查询结果持久化为可复用的数据仪表盘
1. 什么是智能问数
1.1 智能问数核心概念
智能问数定义
智能问数(Data Intelligence)是基于大语言模型和数据库结构感知技术的企业级数据查询系统。它能够理解用户的自然语言提问,结合数据库表结构、字段信息、表关联关系和业务术语,自动生成精准的SQL查询语句,执行查询并将结果以可视化图表形式呈现,让非技术人员也能轻松进行数据分析。
智能问数的核心价值包括:
- 自然语言理解:将用户的口语化提问转化为结构化的数据库查询
- 数据库结构感知:自动解析表结构、字段类型、表关联关系,生成语法正确的SQL
- 智能图表推荐:根据查询结果的数据特征,AI自动推荐最适合的可视化图表类型
- 上下文连续分析:支持历史问题上下文,实现连续追问和深度数据分析
1.2 技术架构设计
BladeX AI智能问数平台采用双层架构,业务层负责配置管理和数据持久化,引擎层负责核心问数逻辑:
1.3 核心组件介绍
| 组件名称 | 技术实现 | 主要功能 |
|---|---|---|
| IntelEngineService | 问数引擎服务 | 统一编排SQL生成、执行和可视化流程 |
| SqlGenerationExecutor | SQL生成执行器 | 调用LLM将自然语言转化为SQL |
| SqlExecutionExecutor | SQL执行执行器 | 执行SQL查询并返回结构化数据 |
| VisualizationExecutor | 可视化执行器 | 生成ECharts图表配置 |
| ChatCompletionExecutor | 大模型调用执行器 | 统一处理LLM调用逻辑 |
| BladeIntelContext | 问数上下文 | 贯穿整个流程的状态和数据载体 |
2. 问数引擎核心流程
2.1 统一问数流程
流程编排
智能问数引擎采用流水线式的执行架构,将一次完整的问数请求分解为SQL生成、SQL执行和可视化配置生成三个阶段,由IntelEngineService统一编排调度。
统一问数接口
// 统一问数请求
BladeIntelRequest request = BladeIntelRequest.builder()
.intelligenceId(1L) // 问数配置ID
.question("各部门本月销售额对比") // 用户自然语言问题
.historyQuestions(historyList) // 历史问题(可选)
.chartType("column") // 指定图表类型(可选)
.build();
// 统一问数响应
BladeIntelResponse response = intelEngineService.intelligentQuery(request);
// response 包含:sql, tables, chartType, chartConfig, intelData, rowCount, executionTime2.2 问数上下文
上下文设计
BladeIntelContext是贯穿整个问数流程的核心数据载体,存储了从配置信息到中间结果的所有必要数据,并内置了SQL加解密能力,确保SQL在传输过程中的安全性。
public class BladeIntelContext {
private ApiCryptoProperties cryptoProperties; // 加密配置
private AiDataIntelligence intelligence; // 问数配置
private DatabaseSchema databaseSchema; // 数据库结构信息
private List<AiDbTemplate> templates; // SQL模板列表
private List<AiTerminology> terminologies; // 术语列表
private List<AiTerminology> matchedTerminologies; // 匹配到的术语
private String question; // 用户问题
private List<String> historyQuestions; // 历史问题列表
private String generatedSql; // 生成的SQL(加密存储)
private String chartType; // 图表类型
private String chartConfig; // 图表配置JSON
private SqlExecutionResult executionResult; // SQL执行结果
private Boolean includeData; // 是否填充数据到图表配置
// SQL加解密:明文SQL自动加密存储,获取时自动解密
public void setPlainSql(String plainSql); // 设置明文SQL并自动加密
public String getPlainSql(); // 获取自动解密后的明文SQL
public String getEncryptedSql(); // 获取加密SQL(用于外部传输)
public void setEncryptedSql(String sql); // 设置加密SQL(从外部接收)
}2.3 大模型调用执行器
统一调用入口
ChatCompletionExecutor是所有LLM调用的统一入口,负责提示词构建、请求发送、响应处理等核心逻辑。各业务执行器通过传入不同的IntelPromptBuilder实现差异化的提示词策略。
// 提示词构建器接口
public interface IntelPromptBuilder {
// 构建系统提示词(定义AI角色和规则)
String buildSystemPrompt(BladeIntelContext context);
// 构建用户提示词(包含数据库结构、问题等)
String buildUserPrompt(BladeIntelContext context);
// 获取响应格式配置(如JSON Schema约束)
default ResponseFormat getResponseFormat(BladeIntelContext context) {
return null;
}
}调用流程:
- 由业务执行器传入上下文和提示词构建器
- 构建系统提示词和用户提示词
- 获取响应格式配置(支持JSON Schema约束输出)
- 调用LLM获取响应内容
- 返回原始文本内容,由业务执行器解析
3. SQL生成引擎
3.1 SQL生成流程
SQL生成能力
SQL生成是智能问数的核心环节,通过精心设计的提示词工程,将用户的自然语言问题、数据库结构信息、业务术语和SQL模板等上下文信息传递给大语言模型,生成符合目标数据库规范的标准SQL查询语句。
// SQL生成执行器核心流程
public class SqlGenerationExecutor {
public SqlGenerationResponse execute(BladeIntelContext context) {
// 1. 调用LLM生成SQL(通过SqlGenerationPromptBuilder构建提示词)
String content = chatCompletionExecutor.execute(context, promptBuilder, this.getClass());
// 2. 解析LLM返回的JSON响应
// 响应格式:{ "success": true, "sql": "SELECT ...", "tables": [...], "chart-type": "column" }
return parseResponse(content, context);
}
}SQL生成响应
public class SqlGenerationResponse {
private String sql; // 生成的SQL语句(AES加密)
private List<String> tables; // 涉及的表名列表
private String chartType; // AI推荐的图表类型(可选)
}3.2 提示词工程
提示词设计
SQL生成提示词由系统提示词和用户提示词两部分组成。系统提示词定义AI的角色、规则和输出格式;用户提示词包含具体的数据库结构、SQL模板、业务术语和用户问题。
系统提示词核心规则:
- 只能生成SELECT查询语句,严禁生成增删改操作
- 生成的SQL必须符合目标数据库的语法规范
- 禁止使用
SELECT *,必须明确列出字段名称 - 聚合函数字段必须指定有意义的英文别名
- 时间字段根据用户意图自动格式化
- 支持图表类型识别和推荐
用户提示词结构:
### 数据库结构信息:
【数据库标识】 数据库名称
【数据库类型】 MySQL
【表结构】
# 表名: orders (订单表)
[
(id:bigint, 主键),
(order_no:varchar, 订单编号),
(amount:decimal, 订单金额),
(create_time:datetime, 创建时间),
]
【表关联】
- orders.user_id → users.id (一对多)
### SQL模板参考(仅供参考):
1. 查询月度销售汇总
SQL: SELECT DATE_FORMAT(create_time, '%Y-%m') AS month, SUM(amount) AS total ...
### 业务术语解释:
- 销售额: 订单金额的总和,对应orders表的amount字段
### 历史问题记录:
1. 查询本月各部门销售额
### 用户问题:
各部门本月销售额对比,用柱状图展示3.3 术语匹配引擎
术语匹配
TerminologyExecutor负责根据用户问题自动匹配相关的业务术语。通过术语名称和内容关键词的模糊匹配,将匹配到的术语注入提示词中,帮助LLM准确理解业务概念。
public class TerminologyExecutor {
/**
* 匹配相关术语
* 支持术语名称匹配和内容关键词匹配
*/
public List<AiTerminology> execute(String question, List<AiTerminology> terminologies) {
List<AiTerminology> matched = new ArrayList<>();
for (AiTerminology terminology : terminologies) {
// 检查术语名称是否出现在问题中
if (question.contains(terminology.getName())) {
matched.add(terminology);
continue;
}
// 检查术语内容中的关键词是否出现在问题中
String[] keywords = terminology.getContent().split("[,,、\\s]+");
for (String keyword : keywords) {
if (question.contains(keyword.trim())) {
matched.add(terminology);
break;
}
}
}
return matched;
}
}4. 数据库结构管理
4.1 数据库结构模型
结构感知
智能问数引擎通过DatabaseSchema模型完整描述目标数据库的结构信息,包括数据库类型、表结构、字段信息和表关联关系。这些信息是LLM生成正确SQL的关键依据。
// 数据库结构模型
public class DatabaseSchema {
private Long dbId; // 数据源ID
private String dbName; // 数据源名称
private DatabaseType dbType; // 数据库类型
private List<TableSchema> tables; // 表结构列表
private List<TableConnections> connections; // 表关联关系列表
}
// 表结构模型
public class TableSchema {
private String tableName; // 表名
private String tableComment; // 表注释
private List<FieldSchema> fields; // 字段列表
// 字段结构
public static class FieldSchema {
private String fieldName; // 字段名
private String fieldType; // 字段类型
private String fieldComment; // 字段注释
private Boolean isPrimaryKey; // 是否主键
private Boolean isNullable; // 是否可为空
}
}
// 表关联关系模型
public class TableConnections {
private String sourceTable; // 源表名
private String sourceField; // 源字段名
private String targetTable; // 目标表名
private String targetField; // 目标字段名
private String type; // 关系类型:one-to-one、one-to-many、many-to-many
}4.2 多数据库类型支持
数据库适配
平台通过DatabaseType枚举统一管理不同数据库的差异化特性,包括字段转义符、SQL语法规范等,确保生成的SQL在目标数据库上可正确执行。
| 数据库类型 | 类型代码 | 左转义符 | 右转义符 | SQL特性 |
|---|---|---|---|---|
| MySQL | mysql | ` | ` | LIMIT分页、DATE_FORMAT时间格式化 |
| PostgreSQL | postgresql | " | " | LIMIT/OFFSET分页、TO_CHAR时间格式化 |
| Oracle | oracle | " | " | ROWNUM分页、TO_CHAR时间格式化 |
| SQL Server | sqlserver | [ | ] | TOP/OFFSET-FETCH分页、FORMAT时间格式化 |
| MariaDB | mariadb | ` | ` | 兼容MySQL语法 |
| 达梦 | dm | " | " | 兼容Oracle和MySQL语法 |
public enum DatabaseType {
MYSQL("MySQL", "mysql", "`", "`"),
POSTGRESQL("PostgreSQL", "postgresql", "\"", "\""),
ORACLE("Oracle", "oracle", "\"", "\""),
SQL_SERVER("Microsoft SQL Server", "sqlserver", "[", "]"),
MARIADB("MariaDB", "mariadb", "`", "`"),
DM("DM", "dm", "\"", "\""),
OTHER("Other", "other", "", "");
/**
* 转义字段名(自动添加对应数据库的转义符)
*/
public String escapeField(String fieldName) {
return escapeLeft + fieldName + escapeRight;
}
}5. 可视化图表系统
5.1 图表类型体系
可视化能力
BladeX AI智能问数平台支持9种主流图表类型,覆盖数据展示、对比分析、趋势追踪、占比分析等常见数据可视化场景。图表配置基于ECharts标准,由LLM根据查询数据特征自动生成。
public enum ChartType {
TABLE("table", "表格"), // 适合详细数据展示
COLUMN("column", "柱状图"), // 适合类别对比
BAR("bar", "条形图"), // 适合横向对比
LINE("line", "折线图"), // 适合趋势展示
PIE("pie", "饼图"), // 适合占比展示
SCATTER("scatter", "散点图"), // 适合相关性分析
RADAR("radar", "雷达图"), // 适合多维度对比
FUNNEL("funnel", "漏斗图"), // 适合流程转化分析
GAUGE("gauge", "仪表盘"); // 适合指标展示
}图表类型选择指南
| 数据场景 | 推荐图表 | 适用说明 |
|---|---|---|
| 明细数据查看 | 表格(table) | 展示多字段的详细数据记录 |
| 分类数量对比 | 柱状图(column) | 纵向对比不同类别的数值大小 |
| 横向排名对比 | 条形图(bar) | 横向展示排名或对比数据 |
| 时间趋势分析 | 折线图(line) | 展示数据随时间的变化趋势 |
| 占比构成分析 | 饼图(pie) | 展示各部分在整体中的占比 |
| 相关性分析 | 散点图(scatter) | 分析两个变量之间的关系 |
| 多维度评估 | 雷达图(radar) | 多个维度的综合对比评估 |
| 流程转化分析 | 漏斗图(funnel) | 展示各阶段的转化率 |
| 单一指标展示 | 仪表盘(gauge) | 展示单个关键指标的完成度 |
5.2 图表JSON Schema体系
Schema约束
平台为每种图表类型定义了对应的JSON Schema,通过ChartJsonSchemaFactory工厂类统一管理。Schema用于约束LLM的输出格式,确保生成的ECharts配置结构正确、可直接渲染。
// 图表JSON Schema工厂
public class ChartJsonSchemaFactory {
/**
* 根据图表类型和数据填充标志获取JsonSchema
*
* @param chartType 图表类型
* @param includeData 是否填充数据到图表配置中
* - true: LLM将SQL查询结果填充到ECharts配置的data字段中
* - false: LLM只生成ECharts配置结构,不包含实际数据
*/
public JsonSchema getJsonSchema(ChartType chartType, Boolean includeData);
/**
* 获取JSON Schema的字符串表示(用于提示词展示)
*/
public String getJsonSchemaString(String chartTypeCode, Boolean includeData);
}Schema实现体系:
| Schema类 | 对应图表 | 配置特点 |
|---|---|---|
| TableJsonSchema | 表格 | columns列定义、data行数据 |
| ColumnJsonSchema | 柱状图 | xAxis/yAxis轴配置、series数据系列 |
| BarJsonSchema | 条形图 | 横向轴配置、series数据系列 |
| LineJsonSchema | 折线图 | xAxis时间轴、series折线数据 |
| PieJsonSchema | 饼图 | series饼图数据项 |
| ScatterJsonSchema | 散点图 | xAxis/yAxis数值轴、散点数据 |
| RadarJsonSchema | 雷达图 | indicator维度指标、series雷达数据 |
| FunnelJsonSchema | 漏斗图 | series漏斗层级数据 |
| GaugeJsonSchema | 仪表盘 | series仪表盘指针数据 |
5.3 可视化执行流程
可视化生成
VisualizationExecutor负责调用LLM生成完整的ECharts图表配置JSON。它接收SQL执行结果和图表类型,通过VisualizationPromptBuilder构建提示词,引导LLM生成符合Schema约束的图表配置。
public class VisualizationExecutor {
public VisualizationResponse execute(BladeIntelContext context) {
// 1. 调用LLM生成完整的ECharts配置JSON
String content = chatCompletionExecutor.execute(context, promptBuilder, this.getClass());
// 2. 提取JSON内容(处理Markdown代码块等格式)
String chartConfigJson = ChartTool.extractJson(content);
// 3. 提取图表类型
String chartType = ChartTool.extractChartType(chartConfigJson);
// 4. 构建可视化响应
return VisualizationResponse.builder()
.chartType(chartType)
.chartConfig(chartConfigJson)
.intelData(context.getExecutionResult().getData())
.rowCount(context.getExecutionResult().getRowCount())
.build();
}
}6. SQL安全与工具链
6.1 SQL安全校验
安全机制
SqlValidatorTool提供严格的SQL安全校验机制,确保智能问数系统只执行安全的SELECT查询,防止通过自然语言注入执行危险的数据库操作。
public class SqlValidatorTool {
/**
* 验证SQL合法性
* 1. SQL不能为空
* 2. 必须是SELECT语句
* 3. 不能包含INSERT、UPDATE、DELETE、DROP等非法关键字
*/
public static void validate(String sql) {
// 必须是SELECT语句
if (!upperSql.trim().startsWith("SELECT")) {
throw BladeIntelException.illegalSqlError("只允许执行SELECT查询语句");
}
// 移除转义标识符和字符串常量后,检查非法关键字
String cleanedSql = cleanSql(upperSql);
for (String keyword : FORBIDDEN_SQL_KEYWORDS) {
// 使用词边界匹配,确保匹配完整单词而非子串
if (cleanedSql.matches(".*\\b" + keyword + "\\b.*")) {
throw BladeIntelException.illegalSqlError("SQL包含非法操作: " + keyword);
}
}
}
}禁止的SQL关键字:INSERT、UPDATE、DELETE、DROP、CREATE、ALTER、TRUNCATE、GRANT、REVOKE、EXEC、EXECUTE
SQL清理策略:校验前会移除反引号(MySQL)、双引号(PostgreSQL/Oracle)、方括号(SQL Server)和单引号字符串常量中的内容,避免字段名如`IS_DELETED`被误判为非法关键字。
6.2 JSON修复工具
JSON修复
JsonRepairTool和JsonRepairEngine提供LLM输出JSON的智能修复能力。由于大模型返回的JSON可能存在格式问题(如多余逗号、缺少引号等),修复引擎能够自动识别并修正这些问题,确保JSON可被正确解析。
修复能力:
- 修复缺失的引号和括号
- 移除多余的逗号和尾部逗号
- 处理非标准的JSON格式
- 基于Token化的精确修复策略
6.3 图表工具
图表工具
ChartTool提供图表配置相关的工具方法,包括从LLM响应中提取JSON内容、解析图表类型、解析JSON节点等功能。
核心功能:
- extractJson:从LLM响应中提取JSON内容,处理Markdown代码块包裹等格式
- extractChartType:从图表配置JSON中提取图表类型字段
- parseJsonNode:安全解析JSON字符串为JsonNode对象
6.4 SQL加密传输
安全传输
智能问数系统采用AES加密算法对生成的SQL进行加密传输。SQL在引擎内部以明文处理,对外传输时自动加密,接收时自动解密,确保SQL语句在网络传输过程中的安全性。
// BladeIntelContext 中的加解密机制
// 设置明文SQL时自动加密
context.setPlainSql("SELECT name, amount FROM orders");
// 获取加密SQL用于外部传输
String encryptedSql = context.getEncryptedSql();
// 从外部接收加密SQL
context.setEncryptedSql(encryptedSql);
// 获取解密后的明文SQL用于执行
String plainSql = context.getPlainSql();7. 业务管理功能
7.1 问数配置管理
配置管理
智能问数配置(AiDataIntelligence)是问数系统的核心业务实体,定义了一个问数场景所需的全部配置信息,包括关联的大模型、数据源、表范围和业务术语等。
@TableName("blade_ai_data_intelligence")
public class AiDataIntelligence extends TenantEntity {
private Long modelId; // 关联的大模型主键
private Long dbId; // 关联的数据库主键
private String dbTable; // 数据库表名合集(限定查询范围)
private String terminology; // 关联的术语ID合集
private String name; // 问数配置名称
private String description; // 问数配置描述
private String type; // 问数类型
private String icon; // 问数图标
private Integer enabled; // 是否启用
}7.2 智能仪表盘管理
仪表盘
智能仪表盘(AiDataDashboard)支持将问数查询结果持久化为可复用的数据看板,通过DSL配置存储仪表盘的布局和图表信息。
@TableName("blade_ai_data_dashboard")
public class AiDataDashboard extends TenantEntity {
private Long dataIntelligenceId; // 关联的问数配置ID
private String name; // 仪表盘名称
private String description; // 仪表盘描述
private String type; // 仪表盘类型
private String dsl; // 仪表盘配置(DSL)
private Integer enabled; // 是否启用
}7.3 缓存管理
缓存策略
平台通过IntelCache提供问数配置和仪表盘的缓存管理,基于Redis实现高性能的数据访问。建议查询的缓存有效期为24小时,支持异步刷新策略。
public class IntelCache {
/**
* 获取智能问数配置(带缓存)
*/
public static AiDataIntelligence getDataIntelligence(Long dataIntelligenceId);
/**
* 清空智能问数配置缓存
*/
public static void removeDataIntelligence(Long dataIntelligenceId);
/**
* 获取智能仪表盘配置(带缓存)
*/
public static AiDataDashboard getDataDashboard(Long dataDashboardId);
/**
* 清空智能仪表盘配置缓存
*/
public static void removeDataDashboard(Long dataDashboardId);
}8. API开放接口
8.1 RESTful API设计
API设计
BladeX AI智能问数提供完整的RESTful API,支持SQL生成、SQL执行、可视化配置生成、统一问数和建议生成五大核心接口。
@RestController
@RequestMapping("/blade-ai/data-intelligence")
@Tag(name = "智能问数模块")
public class AiDataIntelligenceEngineController {
/**
* 根据用户问题生成SQL
*/
@PostMapping("/visualize-sql")
public R<SqlGenerationResponse> visualizeSql(@RequestBody SqlGenerationRequest request);
/**
* 执行SQL查询并返回数据
*/
@PostMapping("/execute-sql")
public R<SqlExecutionResponse> executeSql(@RequestBody SqlExecutionRequest request);
/**
* 根据SQL和用户问题生成图表配置和数据
*/
@PostMapping("/visualize-data")
public R<VisualizationResponse> visualizeData(@RequestBody VisualizationRequest request);
/**
* 智能问数统一接口(生成SQL并返回数据和配置)
*/
@PostMapping("/intelligent-query")
public R<BladeIntelResponse> intelligentQuery(@RequestBody BladeIntelRequest request);
/**
* 生成查询建议
*/
@PostMapping("/generate-suggestions")
public R<SuggestionResponse> generateSuggestions(@RequestBody SuggestionRequest request);
}8.2 接口调用示例
统一问数接口
# 智能问数(自然语言 → SQL → 数据 → 图表)
curl -X POST "/blade-ai/data-intelligence/intelligent-query" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_token" \
-d '{
"intelligenceId": 1,
"question": "各部门本月销售额对比",
"chartType": "column"
}'SQL生成接口
# 仅生成SQL(不执行查询)
curl -X POST "/blade-ai/data-intelligence/visualize-sql" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_token" \
-d '{
"intelligenceId": 1,
"question": "查询最近7天的订单趋势",
"historyQuestions": ["查询本月订单总量"]
}'建议生成接口
# 生成查询建议(基于数据库结构智能推荐问题)
curl -X POST "/blade-ai/data-intelligence/generate-suggestions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_token" \
-d '{
"intelligenceId": 1,
"currentQuestion": "销售额",
"historyQuestions": []
}'8.3 请求与响应模型
核心请求模型
| 请求模型 | 用途 | 核心字段 |
|---|---|---|
| BladeIntelRequest | 统一问数 | intelligenceId、question、historyQuestions、chartType |
| SqlGenerationRequest | SQL生成 | intelligenceId、question、historyQuestions |
| SqlExecutionRequest | SQL执行 | intelligenceId、sql、chartConfig |
| VisualizationRequest | 可视化生成 | intelligenceId、sql、question、chartType、includeData |
| SuggestionRequest | 建议生成 | intelligenceId、currentQuestion、historyQuestions |
核心响应模型
| 响应模型 | 用途 | 核心字段 |
|---|---|---|
| BladeIntelResponse | 统一问数响应 | sql、tables、chartType、chartConfig、intelData、rowCount、executionTime |
| SqlGenerationResponse | SQL生成响应 | sql(加密)、tables、chartType |
| SqlExecutionResponse | SQL执行响应 | intelData、fields、rowCount、executionTime、chartType、chartConfig |
| VisualizationResponse | 可视化响应 | chartType、chartConfig、intelData、rowCount |
| SuggestionResponse | 建议响应 | suggestions(建议问题列表) |
9. 异常处理体系
9.1 统一异常管理
异常设计
BladeIntelException提供了完整的异常分类体系,覆盖问数流程中可能出现的各类错误场景,每种异常都携带明确的错误码和错误描述,便于前端展示和问题排查。
| 错误码 | 异常类型 | 触发场景 |
|---|---|---|
| CONFIG_ERROR | 配置错误 | 问数配置不存在或无效 |
| PARAM_ERROR | 参数错误 | 请求参数缺失或格式错误 |
| SQL_GENERATION_ERROR | SQL生成错误 | LLM无法生成有效SQL |
| SQL_EXECUTION_ERROR | SQL执行错误 | SQL执行失败或超时 |
| ILLEGAL_SQL_ERROR | 非法SQL错误 | SQL包含非法操作关键字 |
| VISUALIZATION_ERROR | 可视化错误 | 图表配置生成失败 |
| SUGGESTION_ERROR | 建议生成错误 | 查询建议生成失败 |
| LLM_ERROR | 大模型错误 | LLM调用失败或返回为空 |
| JSON_PARSE_ERROR | JSON解析错误 | LLM返回的JSON格式异常 |
| DATABASE_ERROR | 数据库错误 | 数据源连接或查询异常 |
BladeX AI智能问数分析平台通过其强大的自然语言理解能力、多数据库适配引擎和智能可视化系统,为企业提供了"对话式"数据分析的完整解决方案。平台将复杂的SQL编写和数据可视化工作简化为自然语言提问,让业务人员无需掌握SQL技能即可进行专业的数据分析,是企业数据驱动决策的核心基础设施。
