GPT + SQL开发:
实现根据语言提问生成你想要的结果,省去亲自写sql查询的过程。
前期背景
LangChain:由语言模型LLMs驱动的应用程序框架,它允许用户围绕大型语言模型快速构建应用程序和管道。
可以直接与 OpenAI 的 ChatGPT 模型以及 Hugging Face 集成。通过 langChain 可快速构建聊天机器人、生成式问答(GQA)、本文摘要等应用场景。
将GPT连接到自己的知识库,形成自己的知识空间。
SQL Chat:github.com/sqlchat/sqlchat
一个基于聊天的 SQL 客户端,使用自然语言与数据库以沟通的方式,实现对数据库的查询、修改、新增、删除等操作。
目标是:辅助数据开发工程师的工作,减少SQL代码编辑的复杂与繁琐的程度,减轻数据开发工程师的工作量,使开发工程师预留更多时间用于相关业务的梳理与沟通。
功能实现
使用 Docker 自托管
docker run --name sqlchat --platform linux/amd64 -env NEXTAUTH_SECRET=xxx -p 3000:3000 sqlchat/sqlchat
OpenAI 相关变量:
NEXT_PUBLIC_ALLOW_SELF_OPENAI_KEY
: 设置为true
如果你允许用户提供自己的 OpenAI API key.OPENAI_API_KEY
: OpenAI API Key,通过这里申请。OPENAI_API_ENDPOINT
: OpenAI API 端点,默认为https://api.openai.com
。
数据库相关变量:
NEXT_PUBLIC_DATABASE_LESS
: 设置为true
如果你想让 SQL Chat 运行时不需要数据库。这个会关闭如下功能:- 账户系统。
- 用户额度控制。
- 支付。
- 使用数据收集。
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 NEXTAUTH_SECRET=xxx --env OPENAI_API_KEY=yyy --env OPENAI_API_ENDPOINT=zzz -p 3000:3000 sqlchat/sqlchat
本地开发环境
安装依赖项
pnpm i
复制示例环境变量文件;
cp .env.example .env
生成
prisma
客户端pnpm prisma generate
- 将您的 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