使用 ChatGPT、PostgreSQL 和 ToolJet 创建 SQL 生成器应用程序
在本教程中,您将学习如何使用 ChatGPT、ToolJet 和 PostgreSQL 构建 SQL 生成器应用程序。
用户可以用简单的英语语句描述他们想要从数据库中检索的数据类型,然后 ChatGPT 会将其转换为从数据库中获取数据所需的适当 SQL 语法。
我们将使用 ToolJet 作为应用程序界面。
什么是 ToolJet?
ToolJet 是一个开源的低代码框架,它使我们能够在几分钟内构建一个全栈 Web 应用程序。使用 ToolJet,您可以创建独立的、功能齐全的全栈应用程序,也可以将应用程序嵌入到其他网站中。
ToolJet 允许您构建使用关系型和非关系型数据库、REST API 以及云存储(例如 Google Cloud Storage、 AWS S3和 Minio)的应用程序。它是一款出色的开发工具,可帮助个人、开发人员和企业更快地创建和发布产品。
在我们继续之前,
如果你能给我们一颗星,我会非常高兴!也请在评论区告诉我。❤️
https://github.com/ToolJet/ToolJet
什么是 ChatGPT?
ChatGPT 是目前最受关注的技术。它是由 OpenAI训练的 AI 语言模型 ,用于回答问题、提供信息并与用户进行人类语言对话。
ChatGPT 可以执行编写、调试和解释代码片段等任务。凭借其最新的语言模型GPT-4,ChatGPT 可以接受图像作为提示,并根据给定的提示或命令提供答案。
在本文中,我们将使用 ChatGPT 从纯英语单词生成 SQL 查询语法。在开始之前,我们先设置一下应用程序的数据库。
设置 ElephantSQL(PostgreSQL)数据库
ElephantSQL使我们能够在云端(而不是本地机器)创建 PostgreSQL 数据库。请按照以下步骤创建 PostgreSQL 数据库:
在此创建一个 ElephantSQL 帐户 。
添加新的数据库实例。无需信用卡或账单信息。
一旦创建了数据库实例,就会显示数据库信息。
恭喜!您已成功创建此应用程序所需的数据库。接下来,让我们设计应用程序界面并将数据库连接到应用程序。
使用 ToolJet 设计应用程序界面
在这里,您将学习如何创建 ToolJet 帐户并使用 ToolJet 设计功能齐全的应用程序。
如果您是 ToolJet 新用户,请创建一个帐户。
创建一个工作区和一个名为 SQL Generator 的新应用程序。
设计一个类似下图的用户界面。ToolJet 允许您通过拖放各种 UI 组件来创建应用程序界面。
根据上图,我添加了以下内容:
- 包含列名称和年龄的表格组件,
- 用作表单标签的 Text 组件,
- 接受纯英语 SQL 查询的 TextInput 组件。
- 一个只读的文本输入组件,显示生成的 SQL 查询,以及
- 两个按钮。一个用于从 ChatGPT 生成 SQL 查询,另一个用于在 PostgreSQL 数据库上执行查询。
如何在 ToolJet 中与 ChatGPT 进行通信
在这里,您将了解如何通过 ToolJet 中的 Rest API 与 ChatGPT 进行通信。
ToolJet 允许我们通过一个面板(称为查询面板)与外部资源通信或创建自定义函数。在 ToolJet 中,任何与以下任一对象通信并运行 JavaScript 或 Python 代码的函数都称为查询。
设置 OpenAI 帐户
在此登录或创建 OpenAI 帐户 。
点击Personal
导航栏,View API keys
从菜单栏中选择创建一个新的密钥。
生成一个新的 API 密钥并将其复制到计算机上的某个位置。我们将在下一节中使用它。
与 ToolJet 中的 ChatGPT API 进行通信
在您的查询面板上,选择 REST API 并创建向 ChatGPT 端点的 POST 请求 - https://api.openai.com/v1/chat/completions
。
如上图所示,我在查询标头变量中添加了以下内容。
Content-Type: application/json
Authorization: Bearer <YOUR_CHATGPT_API_KEY>
启用转换并将以下代码复制到代码编辑器中以从请求中检索所需的精确响应。
const choices = data.choices[0];
return choices.message.content;
单击正文,启用原始 JSON,然后将以下代码复制到代码编辑器中 - 它包含与 POST 请求一起发送的参数。
{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Write the SQL query for this operation: {{components.textarea1.value}}. I need only the SQL query. No explanations, please."
}
]
}
上述代码片段使用了 OpenAI 提供的 GPT-3.5 Turbo 模型,内容变量包含发送给 ChatGPT API 的提示。ToolJet
允许用户访问每个组件的属性和值。因此,{{components.textarea1.value}}
表示用户提供的值(简单的英语命令)。
PS:你的可能不是
textarea1
,如果是的话,请将其更改为组件的名称,以便用户输入。
最后,点击Save
按钮。🎉
到目前为止,我们已经配置了 ChatGPT 查询。接下来,让我们在用户点击Generate SQL Command
按钮时执行查询。
从上图可以看出,我on Click
为按钮添加了一个事件,当用户点击按钮时,ChatGPT 查询就会运行。它会获取用户的输入,并在用户点击按钮时发送与其等效的 SQL 语法的请求。
要显示结果,请将只读文本输入组件的默认值设置为 进行更新{{queries.chatgptQuery.data}}
。
恭喜!🎊 您已能够与 ChatGPT 进行通信。接下来,让我们学习如何连接并与之前创建的 PostgreSQL 数据库进行通信。
如何在 ToolJet 中与 PostgreSQL 数据库通信
在这里,您将学习如何在 ToolJet 中与 PostgreSQL 数据库通信。首先,我将指导您如何将 PostgreSQL 数据库连接到 ToolJet。
将 PostgreSQL 数据库连接到 ToolJet
单击Add a Datasource
ToolJet 上的查询面板,从数据库列表中选择 PostgreSQL,并提供所需的信息,如下所示。
从上图中可以看出,主机名与 ElephantSQL 上的服务器名称相同(不包括括号)。用户名和数据库名称相同,将密码复制粘贴到其字段中。
向下滚动页面并单击Test Connection
。
如果连接验证成功,我们就可以开始对数据库进行查询。
在 ToolJet 中通信 PostgreSQL 数据库
在这里,您将了解如何将 ChatGPT 生成的 SQL 查询发送到 PostgreSQL 数据库,并在用户界面上的 Table 组件中查看查询的数据。
在开始之前,让我们先向数据库添加一些数据。单击 PostgreSQL 查询,选择 SQL 模式,然后运行下面的代码片段来创建一个包含以下数据的新表。
CREATE TABLE People(NAME varchar(255), AGE int);
INSERT INTO People(name, age) VALUES(‘David’, 19);
INSERT INTO People(name, age) VALUES(‘Tabby’, 21);
INSERT INTO People(name, age) VALUES('Teja', 24);
INSERT INTO People(name, age) VALUES('Julius', 27);
INSERT INTO People(name, age) VALUES('Kedrick', 26);
SELECT * FROM people;
数据上传后,您可以在 ElephantSQL 上查看数据。
接下来,让我们从 ChatGPT 接收 SQL 命令并在用户界面上的 Table 组件中显示数据。
更新 SQL 编辑器以包含从 ChatGPT 检索的查询并保存它。
向按钮添加on Click
运行数据库查询的事件Execute
。
最后,更新表格组件以显示从数据库检索到的数据。
恭喜!🎉 您已完成本教程的应用程序。点击“发布”按钮和分享图标即可托管并公开该应用程序。
这是该应用程序的桌面版本:https://app.tooljet.com/applications/480a5bbb-3607-4c19-ac95-038d4e56cc2a。您也可以通过下载其 JSON 文件
将此应用程序导入到您的 ToolJet 工作区。
结论
到目前为止,您已经学习了如何:
- 向 ToolJet 添加 PostgreSQL 数据库
- 通过 ToolJet 中的 REST API 与 ChatGPT 通信,并且
- 使用 ToolJet 在几分钟内设计应用程序。
ToolJet 是一款出色的开发工具,并且是开源的——这意味着它的代码可供所有人修改和改进。它拥有一个庞大的 开发者社区 ,并有才华横溢的贡献者不断维护和改进软件。作为用户,您可以确保在使用 ToolJet 时获得最佳性能。
你有兴趣为 ToolJet 做出贡献吗?欢迎访问我们的 GitHub 仓库:https://github.com/ToolJet/ToolJet,参与贡献并提出关于 ToolJet 的问题。
感谢您的阅读!
鏂囩珷鏉ユ簮锛�https://dev.to/tooljet/creating-a-sql-generator-app-with-chatgpt-postgresql-and-tooljet-e2k