在当今数据驱动的时代,数据库查询已经成为企业日常运营中不可或缺的一部分。然而,传统的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次迭代:

  1. 接收用户的自然语言查询
  2. AI 分析查询意图,决定需要调用哪些工具
  3. 执行工具调用(如生成SQL、查询数据库)
  4. 分析工具返回结果
  5. 如果需要更多信息,继续迭代;否则生成最终回答

流式响应支持

为了提供更好的用户体验,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
2
3
4
5
6
7
表名:orders(订单表)
字段:
- id:订单ID
- customer_id:客户ID
- total_amount:订单总金额
- created_at:创建时间
- status:订单状态(pending/paid/shipped/completed)

Metrics 定义

定义常用的业务指标和计算方式。例如:

  • 销售额 = SUM(total_amount)
  • 订单数 = COUNT(id)
  • 平均客单价 = AVG(total_amount)

第四步:开始对话查询

一切准备就绪后,你就可以用自然语言开始查询了!

试试这些查询:

  • “查询本月的总销售额”
  • “找出购买次数最多的10个客户”
  • “统计每个月的订单数量变化趋势”
  • “哪些产品的库存低于安全线?”

Aiyly 会理解你的问题,自动构建SQL查询,执行后以清晰的方式展示结果。

错误处理机制

Aiyly 拥有完善的错误处理机制,确保用户获得清晰的反馈:

统一响应格式

所有API响应都采用统一的格式:

1
2
3
4
5
{
"code": 0,
"msg": "success",
"data": { ... }
}

错误码分类

系统定义了详细的错误码分类:

错误码范围 类型
0 成功
1xxx 通用错误
2xxx 认证错误
3xxx 用户相关错误
4xxx MySQL 相关错误
5xxx 对话相关错误

这样的设计让开发者能够快速定位问题,也让用户能够获得有意义的错误提示。

安全性保障

在使用任何涉及数据库的工具时,安全性都是首要考虑的因素。Aiyly 在安全方面做了充分的考量:

只读保护

Agent 只支持 SELECT 查询,通过多重机制确保:

  1. SQL Builder 限制:SQL构建器只生成SELECT语句
  2. 白名单验证:表名和字段名必须在预定义的白名单中
  3. 关键词过滤:在执行前检查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 平台上反馈。我们会持续改进,为你提供更好的数据查询体验。


相关链接: