SQL Chat:从SQL到SPEAKL的数据库操作新纪元

引言

SQL Chat是一款创新的、对话式的SQL客户端工具。

它采用自然语言处理技术,让你能够像与人交流一样,通过日常对话的形式对数据库执行查询、修改、创建及删除操作

极大地简化了数据库管理流程,提升了数据交互的直观性和效率。

在这个框架下,用户不再受限于传统的SQL语句编写,而是可以使用接近人类日常语言的表述来表达其需求,使得数据库操作变得更加平易近人。

即使是非技术背景的人员也能轻松上手,实现高效的数据探索和管理。

SQL Chat采用Next.js框架来打造数据库交互工具,目前兼容并支持多种主流数据库系统,包括但不限于:

  • MySQL,关系型数据库管理系统;
  • PostgreSQL,开源对象关系型数据库系统;
  • MSSQL,微软提供的企业级数据库平台;
  • TiDB Cloud,基于云的分布式NewSQL数据库。

附上github地址:https://github.com/sqlchat/sqlchat

功能介绍

文本转SQL

在对话框中输入“Top 10 employees with the highest salary for each department”

翻译成中文是:“每个部门薪资最高的前10名员工”

AI会根据你的表述自动为你生成SQL语句

执行SQL

执行SQL语句得到每个部门薪资前10名员工的查询结果,从结果上来看是完全正确的

当前AI生成的提示词prompt,并给出了token长度

安装

安装前先准备好 OpenAI 秘钥等

  • OPENAI_API_KEY: OpenAI API, key. 可以从 openai.com 官方获得。
  • OPENAI_API_ENDPOINT: OpenAI API endpoint. 默认 https://api.openai.com
  • NEXT_PUBLIC_ALLOW_SELF_OPENAI_KEY: 置为 true 以允许 SQL Chat 服务的用户使用自己的 key。

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

image

本地安装

git中克隆项目,然后先配置数据库:

启动 Postgres 实例。
创建一个数据库:

CREATE DATABASE sqlchat;

设置数据库 schema

pnpm prisma migrate dev

初始化数据(可选)

pnpm prisma db seed

使用pnpm安装并运行项目:

安装依赖项

pnpm i

生成 prisma 客户端

pnpm prisma generate

复制示例环境变量文件;

cp .env.usedb .env

将您的API秘钥和 OpenAI API 添加到新创建的 .env 文件;

运行

npm run dev

总结

综上所述,我们了解到SQL Chat通过友好的自然语言对话界面来降低了数据库操作的门槛、支持多种数据库和docker部署。

这种交互方式正逐渐改变我们与数据库交互的传统模式,开启了一个更加智能化、人性化的数据库操作时代。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,gonghao同名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue 路由参数传递】

文章目录 一、使用 params 传递参数1. 基本路由格式2. 可选参数的使用代码示例 二、使用 query 传递参数1. 基本路由格式代码示例 总结 一、使用 params 传递参数 1. 基本路由格式 在Vue中&#xff0c;使用params传递参数是通过路由的动态片段来完成的。在路由配置中&#xf…

电机的速度和频率

电机的速度和频率通常通过以下几种方法来采集&#xff1a;1. 霍尔效应传感器&#xff1a;• 霍尔效应传感器可以检测磁场变化&#xff0c;当电机轴上安装有磁性标记物&#xff08;如磁钢&#xff09;时&#xff0c;每当磁钢经过传感器&#xff0c;就会产生一个脉冲。通过计数单…

反AI浪潮中的新机遇:Cara艺术社区异军突起

近日,一个名为Cara的艺术社区在网络上迅速走红,其独特的反AI定位吸引了大量创意人士。在AI技术日益普及的今天,Cara社区反其道而行之,致力于打造一个无AI侵害的创作和交流环境。这一创新模式不仅赢得了艺术家的青睐,也为国内创业者提供了新的思考角度。 一、精准定位,守…

描述Hibernate的映射文件和配置文件的作用

Hibernate的映射文件和配置文件在Hibernate框架中起着至关重要的作用&#xff0c;它们分别负责不同的配置和映射任务。以下是关于Hibernate映射文件和配置文件的具体作用描述&#xff1a; Hibernate映射文件&#xff08;hbm.xml&#xff09;的作用 定义对象与数据库表之间的映…

“123456”再登顶?2024年10大流行密码大盘点

最受欢迎的10个密码排行榜&#xff1a; 1.123456&#xff1a; 这个密码依然稳坐第一的位置&#xff0c;因为它简单易记&#xff0c;但同样也非常不安全。 2.password&#xff1a; 作为“密码”的英文单词&#xff0c;它位列第二&#xff0c;同样因为简单而常见。 3.12345678…

C++ list链表的使用和简单模拟实现

目录 前言 1. list的简介 2.list讲解和模拟实现 2.1 默认构造函数和push_back函数 2.2 迭代器实现 2.2.1 非const正向迭代器 2.2.2 const正向迭代器 2.2.3 反向迭代器 2.3 插入删除函数 2.3.1 insert和erase 2.3.2 push_back pop_back push_front pop_front 2.4 构…

[word] word如何清除超链接 #媒体#笔记#知识分享

word如何清除超链接 办公中&#xff0c;少不了使用word&#xff0c;这个是大家必备的软件&#xff0c;今天给大家分享下word如何清除超链接的操作办法&#xff0c;一起来学习下吧&#xff01; 1、清除所有超链接 按下组合键CtrlshiftF9&#xff0c;就可以将网上复制带有超链…

「前端+鸿蒙」鸿蒙应用开发-TS声明和数据类型

在鸿蒙应用开发中使用 TypeScript (TS) 可以带来类型安全和现代编程语言特性的好处。TypeScript 是 JavaScript 的一个超集&#xff0c;它添加了类型注解、接口、类和其他特性。以下是 TypeScript 快速入门的指南&#xff0c;包括声明变量和使用数据类型。 TS快速入门-声明和数…

手撸一个java网关框架

手写一个简易的Java网关框架涉及到很多方面&#xff0c;但我会提供一个基本的框架概念和代码示例&#xff0c;帮助你理解网关的基本构建。以下是一个简单的Java网关框架的实现&#xff1a; 定义路由&#xff1a;需要一个路由表来映射请求的URL到对应的处理器。 请求处理&#x…

ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的RAS

安全之安全(security)博客目录导读 目录 一、RAS 错误记录中的机密信息 二、RAS 错误信号 三、内存保护引擎的 RAS ARM架构安全手册提供了使用 Arm RAS 架构在处理单元&#xff08;PE&#xff09;和系统组件中实现 RAS 的要求。本节为本规范中描述的系统组件提供了附加规则…

服务部署:Linux系统环境部署java的jar包步骤

1. 准备环境 安装 Java Runtime Environment (JRE) 首先&#xff0c;确保你的系统上已经安装了 Java Runtime Environment (JRE)。你可以使用以下命令来安装 OpenJDK&#xff1a; sudo apt update sudo apt install openjdk-11-jre 通过以下命令检查 Java 是否安装成功&…

《软件定义安全》之三:用软件定义的理念做安全

第3章 用软件定义的理念做安全 1.不进则退&#xff0c;传统安全回到“石器时代” 1.1 企业业务和IT基础设施的变化 随着企业办公环境变得便利&#xff0c;以及对降低成本的天然需求&#xff0c;企业始终追求IT集成设施的性价比、灵活性、稳定性和开放性。而云计算、移动办公…

Django 里获取url里的参数

有两种方式获取 url 里的参数 第一种&#xff1a; http://127.0.0.1:8000/example/?xx123要获取 xx 参数对应的值 123 可以这么操作 # 在 views.py def example(request):xx_value request.GET.get("xx")第二种&#xff1a; url 的例子&#xff1a;http://127.0…

jt808 jt-808 JT/T808-2001 jt/t808-2001 部标协议 协议解析 java代码实现篇

一款简单JT-808解析项目 之前写过一篇关于jt-808解析博客&#xff0c;https://blog.csdn.net/hncdyj/article/details/89494209 有很多同学很感兴趣&#xff0c;这次给大家开源一款java版本解析jt808协议的工程。 你需要的知识储备 需要了解什么是二进制&#xff0c;十进制…

pytorch 加权CE_loss实现(语义分割中的类不平衡使用)

加权CE_loss和BCE_loss稍有不同 1.标签为long类型&#xff0c;BCE标签为float类型 2.当reduction为mean时计算每个像素点的损失的平均&#xff0c;BCE除以像素数得到平均值&#xff0c;CE除以像素对应的权重之和得到平均值。 参数配置torch.nn.CrossEntropyLoss(weightNone,…

图像特征提取 python

1. 边缘检测 (Edge Detection) 1.1 Sobel 算子 Sobel 算子是一种边缘检测算子&#xff0c;通过计算图像梯度来检测边缘。 import cv2 import numpy as np# 读取图像 image cv2.imread(image.jpg, 0)# 应用 Sobel 算子 sobel_x cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize5)…

解决Windows窗口聚焦问题

情景引入&#xff1a; 在使用副屏显示器写代码&#xff0c;主屏显示器看教程的时候&#xff0c;突然有个知识点卡住了&#xff0c;这个时候你想要按下空格让视频暂停&#xff0c;但是按下后你会发现&#xff1a;视频没有暂停&#xff0c;倒是代码界面多了个空格。。。这就不好玩…

3. 变量的运算

文章目录 3.1 基本语法3.1.1 test条件测试3.1.2 中括号条件测试3.1.3 双中括号条件测试3.1.4 双圆括号 3.2 算术运算3.3 字符串运算符3.4 文件测试运算符3.5 关系运算符3.6 布尔运算符3.7 逻辑运算符 在 Shell 中包含如下的运算&#xff1a; 算术运算字符串运算符文件测试运算符…

用HTML实现拓扑面,动态4D圆环面,可手动调节,富有创新性的案例。(有源代码)

文章目录 前言一、示例二、目录结构三、index.html&#xff08;主页面&#xff09;四、main.js五、Tour4D.js六、swissgl.js七、dat.gui.min.js八、style.css 前言 如果你觉得对代码进行复制粘贴很麻烦的话&#xff0c;你可以直接将资源下载到本地。无需部署&#xff0c;直接可…

如何对stm32查看IO功能。

有些同学对于别人的开发板的资源&#xff0c;或者IO口&#xff0c;或者串口等资源不知道怎么分配。 方法1、看硬石、野火、正点原子的开发板&#xff0c;看下他们的例子&#xff0c;那个资源用什么。自己多看几个原理图&#xff0c;多看几个视频&#xff0c;做一下笔记。以后依…