这几天很很多粉丝进行了深度交流,发现大家对于 SQL 学习或者编写都遇到过困难,因此勇哥突发奇想是否可以借助 chatGPT 来帮一下大家呢?于是就开启了 chatGPT 的落地之旅。从官网了解到 chatGPT 支持 49 种场景的,其中 2 中常见与 sql 相关,既:
这两种方式进过效果对比,第 2 种效果非常的好,于是我就在我的产品中按照第 2 中模式开发了一个对大家有帮助的功能:“基于你自己的数据库结构,通过一句中文,自动生成 SQL 语句”,演示效果如下:
第一种生成方式:单独窗口生成 SQL,操作步骤:
第二种生成方式:查询器中生成 SQL 操作步骤:
其实 chatGPT 的 API 调用非常简单,但是复杂的是他的参数非常的复杂,举个两个例子:
PS:下周一勇哥回专门开一场直播,来教大家入门 chatGPT,以及 49 种场景的介绍,欢迎大家关注我,到时候直播实现好及时通知。
public static void main(String[] args) {
String token = "换成你自己的token";
OpenAiService service = new OpenAiService(token);
CompletionRequest completionRequest = CompletionRequest.builder()
.model("code-davinci-002")
.prompt("### Mysql SQL tables, 表字段信息如下:\\n#\\n# Employee(id, name, department_id)\\n# Department(id, name, address)\\n# Salary_Payments(id, employee_id, amount, date)\\n#\\n### 创建表的语法\\n HELP")
.temperature(0.0D)
.maxTokens(1000)
.topP(1D)
.frequencyPenalty(0D)
.presencePenalty(0D)
.stop(Arrays.asList("#",";"))
.build();
service.createCompletion(completionRequest).getChoices().forEach(System.out::println);
}
下面这段代码就是最开始我验收那些效果的真实代码,基本和入门代码差不多,不同的是我在上面增加了输入需求的初步过滤,这样生成的 SQL 精准度会高非常多。
public class AiUtils {
/**
* 生成需求
* @return
*/
public static List<CompletionChoice> generatorSqlQuery(String tables,String demand){
String keyword = "";
if(demand.contains("查询")||demand.contains("select")){
keyword = "SELECT";
}else if(demand.contains("删除数据")||demand.contains("delete")){
keyword = "DELETE";
}else if(demand.contains("删除")||demand.contains("drop")){
keyword = "DROP";
}else if(demand.contains("修改数据")||demand.contains("update")){
keyword = "UPDATE";
}else if(demand.contains("修改")||demand.contains("alter")){
keyword = "ALTER";
}else if(demand.contains("增加")||demand.contains("insert")){
keyword = "INSERT";
}else if(demand.contains("创建")||demand.contains("create")){
keyword = "CREATE";
}else if(demand.contains("显示")||demand.contains("show")){
keyword = "SHOW";
}else if(demand.contains("清空")||demand.contains("truncate")){
keyword = "TRUNCATE";
}
OpenAiService service = new OpenAiService(TOKEN);
CompletionRequest completionRequest = CompletionRequest.builder()
.model("code-davinci-002")
.prompt(String.format("%s %s\\n%s",tables,demand,keyword))
.temperature(0.0D)
.maxTokens(1000)
.topP(1D)
.frequencyPenalty(0D)
.presencePenalty(0D)
.stop(Arrays.asList("#",";"))
.build();
List<CompletionChoice> choices = service.createCompletion(completionRequest).getChoices();
for (CompletionChoice choice : choices) {
choice.setText(keyword+choice.getText());
}
return choices;
}
}
chatGPT 更多的应用场景和落地注意事项,勇哥将在 12 月 19 号的直播中阐述,欢迎各位同学来捧场交流。+关注,届时好通知直播时间。
领取专属 10元无门槛券
私享最新 技术干货