SQLChat:与ChatGPT结合的SQL工具

1,676 阅读3分钟

先发项目地址: github.com/sqlchat/sql…

image.png

点击执行

image.png

根据Git里提供的信息,这个工具是上海的一家公司做的,有微信交流群,不过我还没加进去。

下面会介绍项目以及项目的步数方式。

建议大家使用Docker 部署,部署很简单方便。

存在的问题

1、 进入之后直接提问会没有回应,应该是第一次提问是创建会话,第二次提问才回答了;

2、 目前只能读出数据库中4个表,我还不知道是为什么,还没有查到原因,有知道的大佬麻烦给我也说一下,感谢。

项目介绍

SQL Chat 是一个基于聊天的 SQL 客户端,使用自然语言与数据库以沟通的方式,实现对数据库的查询、修改、新增、删除等操作。

为什么会出现 SQL Chat

随着我们进入 开发者工具 2.0 时代,使用基于聊天的界面重建现有工具的机会非常大。SQL Client 也不例外。与在许多 UI 控件之间导航不同,基于聊天的界面更加直观。当然,前提是那可行,而我们的目标就是提供这种体验。

SQL Chat 是怎样的

SQL Chat 是由 Next.js 构建的,它支持以下数据库,并将随着时间的推移支持更多:

  • MySQL
  • PostgreSQL
  • MSSQL
  • TiDB Cloud

数据保密

  • 所有数据库连接配置都本地存储在浏览器中,您也可以访问设置到清除数据。
  • 只有数据库模式提供给 OpenAI API,表数据不会提供给 OpenAI API。
  • 如果使用 sqlchat.ai, 它会记录下这些匿名对话。

IP 白名单

如果使用 sqlchat.ai 连接数据库,则需要在数据库白名单 I P 中添加 0.0.0.0(允许所有连接)。因为 sqlchat.ai 托管在 Vercel 上 使用动态 IP。如果这是一个问题,请考虑下面的自主机选项。

使用 Docker 自托管

docker run --name sqlchat --platform linux/amd64 -p 3000:3000 sqlchat/sqlchat

OpenAI 相关变量:

  • OPENAI_API_KEY: OpenAI API Key,通过这里申请。
  • OPENAI_API_ENDPOINT: OpenAI API 端点,默认为 https://api.openai.com

数据库相关变量:

  • NEXT_PUBLIC_DATABASE_LESS: 设置为 true 如果你想让 SQL Chat 运行时不需要数据库。这个会关闭如下功能:

    1. 账户系统。
    2. 用户额度控制。
    3. 支付。
    4. 使用数据收集。
  • DATABASE_URL: 只有在 NEXT_PUBLIC_DATABASE_LESS 为 true 时有效。Postgres 数据库连接串 e.g. postgresql://postgres:YOUR_PASSWORD@localhost:5432/sqlchat?schema=sqlchat.

docker run --name sqlchat --platform linux/amd64 --env OPENAI_API_KEY=xxx --env OPENAI_API_ENDPOINT=yyy -p 3000:3000 sqlchat/sqlchat

本地开发环境

  1. 安装依赖项

    pnpm i
    
  2. 复制示例环境变量文件;

    cp .env.example .env
    
  3. 将您的 API 密钥 和 OpenAI API 端点(可选)添加到新创建的 .env 文件;

配置数据库

  1. 启动 Postgres 实例。对于 mac,您可以使用 StackbBricksDBngin 或者 Postgres.app

  2. 创建一个数据库:

    CREATE DATABASE sqlchat;
    

    在 .env 文件中, 将连接字符串分配给环境变量 DATABASE_URL 和 DATABASE_DIRECT_URL。至于需要两个 URL 的原因见此.

  3. 生成 schema

    1. 从模型生成 prisma 客户端

      pnpm prisma generate
      
    2. 迁移 schema

      pnpm prisma migrate dev
      
    3. 初始化数据(可选)

      pnpm prisma db seed