基于聊天的SQL客户端SQL Chat
本文完成于
6月初,当时的版本存在bug,自己添加的数据库会连不上,在本文发稿前,更新了最新的版本后,该问题已解决
什么是 SQL Chat ?
SQL Chat是一个基于聊天的SQL客户端,使用自然语言与数据库以沟通的方式,实现对数据库的查询、修改、新增、删除等操作。SQL Chat是由Next.js构建的,目前支持MySQL、PostgreSQL、MSSQL、TiDB Cloud数据库,未来将会支持更多。

官方提供了在线 demo,地址:https://www.sqlchat.ai
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 sqlchat ,选择第一个 sqlchat/sqlchat,因为只有一个 latest 版本

双击会直接下载

端口
本地端口不冲突就行,不确定的话可以用命令查一下
1 | # 查看端口占用 |
| 本地端口 | 容器端口 |
|---|---|
3761 |
3000 |

环境
| 可变 | 值 |
|---|---|
NEXTAUTH_SECRET |
可以理解为密码,任意字符串,例如 ef364b235c |
OPENAI_API_KEY |
One API 的令牌 |
OPENAI_API_ENDPOINT |
默认为 https://api.openai.com,设为 One API 地址 |
NEXT_PUBLIC_ALLOW_SELF_OPENAI_KEY |
设为 true 以允许 SQL Chat 服务的用户使用自己的 key。 |

关于环境变量,老苏多唠叨几句,因为 OpenAI 在国内访问需要科学和稳定的网络,所以老苏还是选择了 One API + kimi-free-api 方案
文章传送门:大模型接口管理和分发系统One API
但因为没有指定模型的环境变量,设置中也只支持 GPT-3.5 和 GPT-4 两种模型

所以需要在原来的渠道中,增加模型的名称 gpt-3.5-turbo

通过这种移花接木的手段,可以让 SQL Chat 将 kimi-free-api 当做 OpenAI

命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷
1 | # 新建文件夹 sqlchat |
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
1 | version: '3' |
然后执行下面的命令
1 | # 新建文件夹 sqlchat |
运行
在浏览器中输入 http://群晖IP:3761 就能看到主界面

中文
左下角齿轮进入设置,在 language 中找到 简体中文

Chat DB
选择 Sample PostgreSQL 作为示例数据库

比如 查询 employee 表的记录

点 Run SQL 可以查看运行结果

可以继续提问

当然我们也可以创建自己的

但奇怪的是,不管怎么设置都没能成功,真是绝了
- 用
IP显示connect ETIMEDOUT

- 用
host.docker.internal(这个域名一般在Docker for Mac和Docker for Windows中可以使用)显示getaddrinfo ENOTFOUND host.docker.internal

是我设置的问题还是 Bug? ,反正日志中看不到什么信息

延后了 2 个月,重新更新了最新的镜像后,发现已经好了

看来 6 月初的版本确实存在 bug,但并不清楚具体是什么时候修复的

参考文档
sqlchat/sqlchat: Chat-based SQL Client and Editor for the next decade
地址:https://github.com/sqlchat/sqlchatsqlchat.ai
地址:https://www.sqlchat.ai/