7.1 KiB
介绍
SQL Chat 是一个基于聊天的 SQL 客户端,使用自然语言与数据库以沟通的方式,实现对数据库的查询、修改、新增、删除等操作。
为什么会出现 SQL Chat
随着我们进入 开发者工具 2.0 时代,使用基于聊天的界面重建现有工具的机会非常大。SQL Client 也不例外。与在许多 UI 控件之间导航不同,基于聊天的界面更加直观。当然,前提是那可行,而我们的目标就是提供这种体验。
SQL Chat 是怎样的
SQL Chat 是由 Next.js 构建的,它支持以下数据库,并将随着时间的推移支持更多:
- MySQL
- PostgreSQL
- MSSQL
- TiDB Cloud
- OceanBase
sqlchat.ai
IP 白名单
如果使用 sqlchat.ai 连接数据库,则需要在数据库白名单 I P 中添加 0.0.0.0(允许所有连接)。因为 sqlchat.ai 托管在 Vercel 上 使用动态 IP。如果这是一个问题,请考虑下面的自主机选项。
数据保密
参阅 SQL Chat 隐私政策.
自托管
Docker
如果是自用,启动时提供下面两个参数即可:
NEXTAUTH_SECRET
OPENAI_API_KEY
docker run --name sqlchat --platform linux/amd64 --env NEXTAUTH_SECRET="$(openssl rand -hex 5)" --env OPENAI_API_KEY=<<YOUR OPENAI KEY>> -p 3000:3000 --hostname localhost sqlchat/sqlchat
- 传一个任意值给 NEXTAUTH_SECRET 否则 next-auth 会报错。
- 如果您连接同一个 host 上的数据库,在数据库连接配置中,需要使用
host.docker.internal
作为 host。

启动参数
TL;DR
- 如果是自用,选择不需要数据库的配置,参阅 .env.nodb.
- 如果是希望提供类似于 sqlchat.ai 的服务供多人使用, 那么需要数据库,参阅 .env.usedb。数据库用来保存用户以及使用信息。
OpenAI 相关
-
OPENAI_API_KEY
: OpenAI API key. 您能从 这里 获得。 -
OPENAI_API_ENDPOINT
: OpenAI API endpoint. 默认https://api.openai.com
。使用 Ollama 来启动 self-host AI 模型,并且把 endpoint 指向它. -
NEXT_PUBLIC_ALLOW_SELF_OPENAI_KEY
: 置为true
以允许 SQL Chat 服务的用户使用自己的 key。
数据库相关
NEXT_PUBLIC_USE_DATABASE
: 置为true
使得 SQL Chat 启动时使用数据库,这会开启如下功能:- 账号系统。
- 用户额度。
- 支付。
- 使用数据收集。
DATABASE_URL
: 当NEXT_PUBLIC_USE_DATABASE
是true
时有效。用于保存数据的 Postgres 连接串 e.g.postgresql://postgres:YOUR_PASSWORD@localhost:5432/sqlchat?schema=sqlchat
.
本地开发环境
-
安装依赖项
pnpm i
-
生成
prisma
客户端pnpm prisma generate
-
复制示例环境变量文件;
cp .env.usedb .env
-
将您的 API 密钥 和
OpenAI API
端点(可选)添加到新创建的.env
文件;
配置数据库
-
启动 Postgres 实例。对于 mac,您可以使用 StackbBricks, DBngin 或者 Postgres.app。
-
创建一个数据库:
CREATE DATABASE sqlchat;
在
.env
文件中, 将连接字符串分配给环境变量DATABASE_URL
和DATABASE_DIRECT_URL
。至于需要两个 URL 的原因见此. -
设置数据库 schema
pnpm prisma migrate dev
-
初始化数据(可选)
pnpm prisma db seed
Star 历史
社区

赞助商
许可
本项目使用 BSL 许可证。请参阅 LICENSE 文件以获取完整的许可文本。
常见错误信息
如何自托管 SQL Chat?
You exceeded your current quota, please check your plan and billing details
这个表示你自己提供的 OpenAI Key 的 Quota 没有了。请查看自己的 OpenAI 账号。