175 lines
5.8 KiB
Plaintext
175 lines
5.8 KiB
Plaintext
---
|
||
title: AI 助手
|
||
description: 配置 AI 供应商后,在 DBX 中生成 SQL、解释查询、优化语句并辅助修复错误。
|
||
---
|
||
|
||
AI 助手用于辅助 SQL 工作。它会结合当前连接的数据库元数据理解表结构和字段,再根据你的描述生成 SQL、解释查询、给出优化建议或帮助修复错误。
|
||
|
||
<Callout type="warn">
|
||
AI 生成的 SQL 不会自动执行。请在执行前检查表名、字段名、筛选条件和影响范围,尤其是在生产环境连接上。
|
||
</Callout>
|
||
|
||
## 配置
|
||
|
||
<Steps>
|
||
<Step>
|
||
### 打开设置
|
||
|
||
进入 DBX 设置页,找到 AI 相关配置。
|
||
</Step>
|
||
<Step>
|
||
### 选择供应商
|
||
|
||
选择 Anthropic、OpenAI 或兼容 OpenAI API 的自定义端点。
|
||
</Step>
|
||
<Step>
|
||
### 填写凭据
|
||
|
||
输入 API Key。使用自定义端点时,还需要填写接口地址和模型名称。
|
||
</Step>
|
||
<Step>
|
||
### 保存并测试
|
||
|
||
保存配置后回到编辑器,尝试用自然语言生成一条简单查询。
|
||
</Step>
|
||
</Steps>
|
||
|
||
<Callout type="info">
|
||
如果没有配置 API Key,AI 功能应向用户提示需要先完成设置,而不是静默失败。
|
||
</Callout>
|
||
|
||
## Ask 模式与 Agent 模式
|
||
|
||
| 模式 | 行为 | 执行 |
|
||
|---|---|---|
|
||
| Ask | 生成 SQL、解释、修复、优化、方言转换或样例数据 | 不暗示已经执行 |
|
||
| Agent | 当用户明确要求查询数据时,优先生成一条可执行 SQL | DBX 会先评估生成 SQL,再决定是否尝试执行 |
|
||
|
||
## Thinking 模式
|
||
|
||
对于支持扩展推理的供应商和模型(如启用了 thinking 的 Claude),DBX 在 AI 设置中提供了 **Thinking** 开关。启用后:
|
||
|
||
- 模型在生成 SQL 前会花费更多时间推理
|
||
- 复杂查询、多表 JOIN 和优化建议受益最大
|
||
- 响应时间会增加,但对于非简单任务的输出质量会提高
|
||
|
||
可按任务开关 Thinking。简单查询和解释可关闭;复杂 Schema 推理、优化或调试时可启用。
|
||
|
||
## 表提及
|
||
|
||
在提示中使用 `@table` 或 `@schema.table` 告诉 AI 哪些表最重要:
|
||
|
||
- `@users` — 在上下文中包含 `users` 表结构
|
||
- `@public.orders` — 包含特定 schema 限定的表
|
||
- 多个提及:`@users @orders @products` 同时包含三张表
|
||
|
||
表提及是控制 Schema 上下文最可靠的方式。即使完整 Schema 太大无法全部包含,它也能正常工作。
|
||
|
||
## Schema 上下文
|
||
|
||
AI 提示可以包含当前数据库类型、连接名称、数据库、当前 SQL、最近错误、结果预览和 Schema 上下文。Schema 上下文包含表、字段、索引和外键。
|
||
|
||
当 Schema 很大时,DBX 会截断上下文。使用表提及来告诉 AI 优先围绕哪些表进行推理。
|
||
|
||
## SQL 安全策略
|
||
|
||
| SQL 类型 | DBX 行为 |
|
||
|---|---|
|
||
| `SELECT`、`WITH`、`SHOW`、`DESCRIBE`、`DESC`、`EXPLAIN` 等只读语句 | 用户明确表达查询意图时,Agent 模式可自动执行 |
|
||
| `INSERT` 或按键限定的 `UPDATE` 等低风险写入 | 只在明确非生产环境自动执行;其他情况需要确认 |
|
||
| 多语句、`DELETE`、`MERGE`、`REPLACE`、`CREATE` 或未知 SQL | 执行前需要确认 |
|
||
| `DROP`、`TRUNCATE`、`ALTER`、`RENAME` 或大范围 `UPDATE` 等危险语句 | 会被 AI 执行策略阻止 |
|
||
|
||
连接名、主机或数据库名看起来像生产环境时,DBX 会更保守。AI 生成的 SQL 仍然是模型输出,请像审查代码一样审查它。
|
||
|
||
## 常见用法
|
||
|
||
### 生成 SQL
|
||
|
||
用自然语言描述目标,AI 会结合当前连接的元数据生成查询:
|
||
|
||
> 查看最近 30 天订单金额最高的 10 个客户
|
||
|
||
可能生成:
|
||
|
||
```sql
|
||
SELECT c.name, SUM(o.amount) AS total_amount
|
||
FROM customers c
|
||
JOIN orders o ON c.id = o.customer_id
|
||
WHERE o.created_at >= NOW() - INTERVAL 30 DAY
|
||
GROUP BY c.id, c.name
|
||
ORDER BY total_amount DESC
|
||
LIMIT 10;
|
||
```
|
||
|
||
生成后建议检查:
|
||
|
||
- 是否使用了正确的表和字段
|
||
- 时间范围是否符合预期
|
||
- 聚合和排序逻辑是否正确
|
||
- 是否需要限制返回行数
|
||
|
||
### 解释 SQL
|
||
|
||
选中一段 SQL 后,可以让 AI 解释它的结构:
|
||
|
||
- 每个子查询的作用
|
||
- `JOIN` 条件如何关联表
|
||
- `WHERE` 条件过滤了什么
|
||
- 聚合、分组和排序的意义
|
||
|
||
这适合阅读历史查询、接手报表 SQL 或理解复杂视图。
|
||
|
||
### 优化 SQL
|
||
|
||
AI 可以根据 SQL 和表结构给出优化方向,例如:
|
||
|
||
- 是否可能发生全表扫描
|
||
- 是否缺少合适索引
|
||
- 子查询是否可以改写为 `JOIN`
|
||
- 排序、去重或聚合是否可以减少
|
||
|
||
<Callout type="info">
|
||
AI 的优化建议是参考信息。真正的性能判断仍应结合数据库的执行计划、数据量和索引情况。
|
||
</Callout>
|
||
|
||
### 修复错误
|
||
|
||
当 SQL 执行失败时,可以把错误信息和当前 SQL 交给 AI 辅助分析。常见修复包括:
|
||
|
||
- 语法错误
|
||
- 表名或字段名拼写错误
|
||
- `GROUP BY` 字段缺失
|
||
- 类型不匹配
|
||
- 不同数据库方言之间的语法差异
|
||
|
||
## 支持的供应商
|
||
|
||
<Tabs groupId="ai-provider" items={['Anthropic', 'OpenAI', '自定义端点']}>
|
||
<Tab value="Anthropic">
|
||
适合使用 Claude 系列模型。填写 API Key 后,在模型输入框中选择或填写你要使用的模型。
|
||
</Tab>
|
||
<Tab value="OpenAI">
|
||
适合使用 OpenAI 模型。填写 API Key 后,在模型输入框中选择或填写你要使用的模型。
|
||
</Tab>
|
||
<Tab value="自定义端点">
|
||
适合兼容 OpenAI Chat Completions API 的服务,例如本地模型服务、企业网关或第三方模型平台。
|
||
|
||
需要配置:
|
||
|
||
- Endpoint URL
|
||
- API Key
|
||
- Model
|
||
</Tab>
|
||
</Tabs>
|
||
|
||
## 隐私与安全
|
||
|
||
AI 请求通常会包含你的问题、相关 SQL、错误信息,以及必要的表结构上下文。使用前请确认:
|
||
|
||
- 当前供应商是否允许发送这些信息
|
||
- 是否包含敏感字段名、业务规则或样例数据
|
||
- 团队是否对第三方模型调用有合规要求
|
||
|
||
如果希望 AI 直接通过工具查询数据库,可以继续阅读 [MCP 集成](/cn/docs/mcp)。
|