Aiyly - 用自然语言查询数据库的AI智能助手
在当今数据驱动的时代,数据库查询已经成为企业日常运营中不可或缺的一部分。然而,传统的SQL查询方式往往需要专业的技术背景,这对于非技术人员来说是一个巨大的门槛。今天,我要向大家介绍一款革命性的工具——Aiyly,它能够让你用自然语言直接查询MySQL数据库,彻底改变你与数据交互的方式。
什么是Aiyly?
Aiyly 是一款基于人工智能的自然语言数据库分析代理(Agent)。简单来说,你只需要用日常的中文或英文描述你想要查询的数据,Aiyly 就能自动将其转换为准确的SQL语句并执行查询,最后以易于理解的方式呈现结果。
核心特性
1. 自然语言查询
不再需要记忆复杂的SQL语法!你可以这样提问:
- “上个月销售额最高的前10个产品是什么?”
- “哪些客户在过去一年内没有下过订单?”
- “按地区统计今年的订单总金额”
Aiyly 会自动理解你的意图,生成对应的SQL查询语句,并返回精确的结果。
2. 智能Schema理解
在使用 Aiyly 之前,你可以配置你的数据库结构(Schema)和业务指标(Metrics)。系统会深度理解你的表结构、字段含义以及业务逻辑,从而在查询时能够准确地选择正确的表和字段。
3. 安全可靠
数据安全是 Aiyly 的首要考量:
- 只读查询:系统仅支持SELECT查询,完全禁止INSERT、UPDATE、DELETE等写操作
- 白名单验证:所有表名和字段名都经过严格的白名单校验
- 参数化查询:防止SQL注入攻击
- 敏感关键词过滤:在执行前检查并阻止潜在的危险操作
技术架构详解
作为一名技术人员,我深知了解工具背后的技术架构对于正确使用它至关重要。让我详细介绍 Aiyly 的技术实现。
后端框架
Aiyly 采用 Midway.js 3.x 作为后端框架,这是一个基于 TypeScript 的 Node.js 企业级框架。选择这个框架的原因包括:
- TypeScript 原生支持:提供完整的类型检查,减少运行时错误
- 依赖注入:采用 IoC(控制反转)容器,使代码更加模块化和可测试
- 装饰器模式:简化了路由、中间件和服务的定义
数据库层
系统使用 TypeORM 0.3.x 作为ORM层,配合 MySQL 数据库:
- Snake Case 命名策略:代码中使用驼峰命名(camelCase),数据库中自动转换为下划线命名(snake_case)
- 实体映射:通过装饰器定义实体类,自动处理数据库表的创建和迁移
- 连接池管理:高效管理数据库连接,确保在高并发场景下的稳定性
AI Agent 核心
这是 Aiyly 最核心的部分——一个手写的 AI Agent 系统,没有依赖任何现成的 Agent 框架:
Agent 循环机制
Agent 采用迭代式的工具调用机制,最多支持10次迭代:
- 接收用户的自然语言查询
- AI 分析查询意图,决定需要调用哪些工具
- 执行工具调用(如生成SQL、查询数据库)
- 分析工具返回结果
- 如果需要更多信息,继续迭代;否则生成最终回答
流式响应支持
为了提供更好的用户体验,Aiyly 支持流式响应。这意味着你不需要等待整个查询完成,而是可以实时看到 AI 的思考过程和中间结果。
工具系统
Agent 配备了专门的工具来完成数据库查询任务:
- SQL Builder 工具:安全地构建 SQL 查询语句
- 动态查询工具:执行用户配置的任意表的查询
模块化设计
Aiyly 采用清晰的模块化架构:
| 模块 | 功能 |
|---|---|
| auth | JWT + Google OAuth 身份认证 |
| user | 用户管理、MySQL配置存储、Schema/Metrics存储 |
| agent | AI Agent 核心,包含工具系统 |
| conversation | 对话历史持久化 |
每个模块都遵循统一的文件结构:
*.entity.ts- 数据库实体定义*.service.ts- 业务逻辑层*.controller.ts- HTTP 接口层*.dto.ts- 数据传输对象,包含验证规则
如何使用Aiyly?
访问 ai.aiyly.com 开始你的智能数据查询之旅!
第一步:注册登录
Aiyly 支持多种登录方式:
- JWT 认证:传统的用户名密码登录
- Google OAuth:使用 Google 账号一键登录
第二步:配置数据库连接
登录后,你需要配置你的 MySQL 数据库连接信息:
- 数据库主机地址
- 端口号
- 用户名和密码
- 数据库名称
请放心,Aiyly 会安全地存储你的配置信息,并且只会执行只读查询。
第三步:定义Schema和Metrics
这是让 Aiyly 理解你业务数据的关键步骤:
Schema 定义
告诉系统你有哪些表,每个表有哪些字段,以及字段的业务含义。例如:
1 | 表名:orders(订单表) |
Metrics 定义
定义常用的业务指标和计算方式。例如:
- 销售额 = SUM(total_amount)
- 订单数 = COUNT(id)
- 平均客单价 = AVG(total_amount)
第四步:开始对话查询
一切准备就绪后,你就可以用自然语言开始查询了!
试试这些查询:
- “查询本月的总销售额”
- “找出购买次数最多的10个客户”
- “统计每个月的订单数量变化趋势”
- “哪些产品的库存低于安全线?”
Aiyly 会理解你的问题,自动构建SQL查询,执行后以清晰的方式展示结果。
错误处理机制
Aiyly 拥有完善的错误处理机制,确保用户获得清晰的反馈:
统一响应格式
所有API响应都采用统一的格式:
1 | { |
错误码分类
系统定义了详细的错误码分类:
| 错误码范围 | 类型 |
|---|---|
| 0 | 成功 |
| 1xxx | 通用错误 |
| 2xxx | 认证错误 |
| 3xxx | 用户相关错误 |
| 4xxx | MySQL 相关错误 |
| 5xxx | 对话相关错误 |
这样的设计让开发者能够快速定位问题,也让用户能够获得有意义的错误提示。
安全性保障
在使用任何涉及数据库的工具时,安全性都是首要考虑的因素。Aiyly 在安全方面做了充分的考量:
只读保护
Agent 只支持 SELECT 查询,通过多重机制确保:
- SQL Builder 限制:SQL构建器只生成SELECT语句
- 白名单验证:表名和字段名必须在预定义的白名单中
- 关键词过滤:在执行前检查SQL中是否包含危险关键词
身份认证
- JWT Token 认证,支持过期时间配置
- 全局中间件保护,需要认证的接口必须携带有效Token
- 使用
@Public()装饰器明确标记公开接口
数据隔离
每个用户只能访问自己配置的数据库,用户之间的数据完全隔离。
适用场景
Aiyly 适用于多种业务场景:
1. 业务分析师
不需要学习SQL,直接用自然语言提问:
- “本季度各区域的销售对比如何?”
- “退货率最高的产品类别是什么?”
- “新客户的首单转化率是多少?”
2. 产品经理
快速获取产品数据支持决策:
- “用户活跃度在过去三个月的变化趋势”
- “哪个功能的使用率最低?”
- “付费用户和免费用户的行为有什么差异?”
3. 运营人员
实时监控业务指标:
- “今天的订单量比昨天同期增长了多少?”
- “优惠券的核销率是多少?”
- “哪些用户即将流失(30天未登录)?”
4. 开发人员
快速验证数据、调试问题:
- “检查用户ID为12345的所有订单”
- “统计今天新增的异常日志数量”
- “查找状态异常的任务记录”
与传统方式的对比
| 特性 | 传统SQL查询 | Aiyly |
|---|---|---|
| 学习成本 | 需要掌握SQL语法 | 零学习成本,使用自然语言 |
| 查询效率 | 需要编写和调试SQL | 直接描述需求即可 |
| 安全性 | 依赖开发者自觉 | 系统级别的只读保护 |
| 错误处理 | 原始数据库错误 | 友好的错误提示 |
| 历史记录 | 需要手动保存 | 自动保存对话历史 |
| 协作分享 | 复制粘贴SQL | 分享对话链接 |
未来展望
Aiyly 还在不断进化中,未来计划支持的功能包括:
- 更多数据库支持:PostgreSQL、MongoDB、ClickHouse等
- 数据可视化:自动生成图表展示查询结果
- 定时报表:设置定时查询,自动发送报表
- 团队协作:支持团队共享数据库配置和查询历史
- API接口:提供API让其他系统集成调用
立即体验
还在等什么?立即访问 ai.aiyly.com 开始你的智能数据查询之旅!
无论你是技术人员还是业务人员,Aiyly 都能帮助你更高效地与数据对话。告别复杂的SQL语法,用自然语言释放数据的价值!
如果你在使用过程中有任何问题或建议,欢迎在留言板留言,或者直接在 Aiyly 平台上反馈。我们会持续改进,为你提供更好的数据查询体验。
相关链接: