# AI-SQL智能体 **Repository Path**: feng128/ai-sql-intelligent-agent ## Basic Information - **Project Name**: AI-SQL智能体 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-18 - **Last Updated**: 2026-01-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI-SQL 优化工具 [![Java](https://img.shields.io/badge/Java-17-orange.svg)](https://www.oracle.com/java/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.2.0-brightgreen.svg)](https://spring.io/projects/spring-boot) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) **参考京东开源:sql-analysis项目** 介绍:一个基于AI的SQL优化分析工具,使用阿里云通义千问大模型和Dify工作流平台,提供智能SQL性能分析和优化建议。 ## 🚀 功能特性 - **SQL性能分析**:通过EXPLAIN分析SQL执行计划,识别性能瓶颈 - **智能评分系统**:基于规则引擎对SQL进行多维度评分 - **AI优化建议**:集成阿里云通义千问大模型,提供智能SQL优化建议 - **Dify工作流集成**:支持自定义AI工作流,灵活处理SQL优化场景 - **缓存机制**:使用Redis缓存表结构信息,提高分析效率 - **可视化结果**:提供详细的SQL分析结果和优化建议 ## 📋 技术栈 - **后端框架**:Spring Boot 3.2.0 - **AI模型**:阿里云通义千问 (DashScope) - **工作流平台**:Dify - **数据库**:MySQL 8.0 - **ORM框架**:MyBatis Plus 3.5.12 - **缓存**:Redis + Caffeine - **规则引擎**:Easy Rules - **SQL解析**:JSQLParser - **消息队列:**RabbitMQ - **构建工具**:Maven ## 🛠️ 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 8.0+ - Redis 6.0+ ## 📦 快速开始 ### 1. 克隆项目 ```bash git clone https://github.com/yourusername/ai-sql.git cd ai-sql ``` ### 2. 配置数据库 创建MySQL数据库并执行初始化SQL: ```sql CREATE DATABASE `ai-sql` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` ### 3. 修改配置 编辑 `src/main/resources/application.yml` 文件,修改数据库连接和Redis配置: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/ai-sql?useUnicode=true&characterEncoding=utf-8&useSSL=false username: your_username password: your_password data: redis: host: localhost port: 6379 password: your_redis_password ai: dashscope: api-key: your_dashscope_api_key ``` ### 4. 配置Dify 如果您想使用Dify工作流,请修改 `DifyUtil.java` 中的配置: ```java private static final String DIFY_BASE_URL = "http://your-dify-instance/v1"; private static final String DIFY_API_KEY = "app-your-dify-api-key"; ``` 工作流yml文件地址:项目的resource/dify ### 5. 构建并运行 ```bash # 编译项目 mvn clean compile # 运行项目 mvn spring-boot:run ``` 或者打包后运行: ```bash # 打包 mvn clean package # 运行 java -jar target/spring-ai-alibaba-1.0-SNAPSHOT.jar ``` ### 6. 访问应用 应用启动后,可通过以下地址访问: - 测试用例:com.lcf.ai.AiApplicationTests#productTestOne ## 🔧 配置说明 ### SQL评分规则 项目使用Easy Rules规则引擎进行SQL评分,规则配置文件位于 `src/main/resources/sql-analysis-rule-config.properties`: ```properties rule1.condition=param.type == "ALL" rule1.priority=1 rule1.score=40 rule1.reason="不走索引" rule1.suggestion="建议创建索引" rule1.strict=true ``` ### 规则参数说明 - `condition`:规则条件,基于SQL分析结果进行判断 - `priority`:规则优先级,数字越小优先级越高 - `score`:违反规则时扣除的分数 - `reason`:问题描述 - `suggestion`:优化建议 - `strict`:是否为严格规则,严格规则违反时会直接标记为需要优化 ## 🧪 测试 运行单元测试: ```bash mvn test ``` ## 🔌 扩展点与集成方式 AI-SQL优化工具设计为可嵌入其他业务项目的增强组件,提供多种扩展点以适应不同场景需求。 ### 1. SQL拦截扩展 项目通过AOP切面方式实现SQL拦截,可在任何Spring Boot项目中轻松集成: ```java // 在您的业务项目中添加pom依赖 可参考项目中加入的 product 实体类业务 ``` ### 2. 自定义评分规则扩展 通过实现`SqlScoreRule`接口,可以添加业务特定的评分规则: ```java @Component public class CustomBusinessRule implements SqlScoreRule { @Override public boolean matches(SqlAnalysisResult result) { // 实现自定义匹配逻辑 return result.getTable().contains("important_table"); } @Override public SqlScoreResultDetail evaluate(SqlAnalysisResult result) { // 实现自定义评分逻辑 SqlScoreResultDetail detail = new SqlScoreResultDetail(); detail.setScore(30); detail.setReason("业务表查询需要特别关注"); detail.setSuggestion("建议添加缓存或优化查询条件"); return detail; } } ``` ### 3. AI模型扩展 支持替换不同的AI模型实现: ```java @Service public class CustomAIOptimizeService implements AiSqlOptimizeService { @Override public DifyResponse optimizeSql(SqlScoreResult sqlScoreResult) { // 集成自定义AI模型 return customAIModel.optimize(sqlScoreResult); } } ``` 更高级玩法 使用 本地向量数据库Qdrant和AI模型结合(embedding模型+QWEN),或者采用自己的本地模型 ### 4. 结果输出扩展 通过实现`SqlScoreResultOutService`接口,可以自定义分析结果的处理方式: - 本项目采用默认输出到日志并保存的数据库 - 可通过MQ输出,采用异步持久化 - 输出到dify,自建告警机器人 ### 5. 数据源扩展 支持多数据源配置和自定义数据源适配: ```java @Configuration public class CustomDataSourceConfig { @Bean @Primary public DataSource customDataSource() { // 配置自定义数据源 return DataSourceBuilder.create().build(); } } ``` 通过以上扩展点,AI-SQL可以灵活适配各种业务场景,为不同项目提供强大的SQL性能分析能力。 ## 📝 开发指南 ### 添加新的评分规则 1. 在 `sql-analysis-rule-config.properties` 中添加新规则 2. 在 `SqlScoreRuleLoader` 中加载规则 3. 在 `SqlScoreService` 中实现评分逻辑 ### 集成新的AI模型 1. 实现 `AiSqlOptimizeService` 接口 2. 添加相应的配置项 3. 更新 `application.yml` 配置文件📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ### 参考文档 sql-analysis解析: https://juejin.cn/post/7413418434574188553 dify安装:https://zhuanlan.zhihu.com/p/1982551601811048403 ## 🙏 致谢 - [阿里云通义千问](https://help.aliyun.com/zh/dashscope/) - 提供强大的AI能力 - [Dify](https://dify.ai/) - 提供灵活的AI工作流平台 - [Easy Rules](https://github.com/j-easy/easy-rules) - 简单易用的规则引擎 - [JSQLParser](https://github.com/JSQLParser/JSqlParser) - 强大的SQL解析工具 --- ⭐ 如果这个项目对您有帮助,请给我们一个星标!