前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ChatGPT 可收费的那种产品该如何实现?一点尝试

ChatGPT 可收费的那种产品该如何实现?一点尝试

作者头像
非喵鱼
发布2023-03-09 15:12:24
3740
发布2023-03-09 15:12:24
举报
文章被收录于专栏:Java技术记号Java技术记号

导读|时隔两个月,勇哥终于把chatGPT生成SQL的功能发布上线了,支持统计分析查询、创建表、数据生成等多种全面的SQL DDL生成能力,本文就和大家聊聊相关功能的使用和背后实现逻辑,并希望相关功能能帮助大家在工作中提升一定的工作效率。同时也提醒一下大家,SQL能力很重要,请大家不要在工作中完全依赖工具。阅读本文你会了解到Tinkle工具SQL生成功能如何使用?最后了解如何使用chatGPT API进行落地产品的实施?

Tinkle SQL生成工具使用介绍

Tinkle是本人开发的一款国产数据库管理客户端,目前支持Mysql、Mariadb、PostgreSQL等数据库。区别于其它数据库,其优势是提供了数据可视化、SQL练测、数据填充、SQL逆代码生成、AI SQL生成等创新功能。

本文主要介绍AI SQL生成功能,因此先介绍一下其支持的SQL生成能力:

  • 能生成:多表关联查询的SQL
  • 能生成:插入测试数据的SQL
  • 能生成:查询/统计分析的SQL
  • 能生成:创建表结构的SQL
  • 能生成:修改表结构的SQL

使用步骤介绍

使用SQL生成功能非常简单,生成的SQL可以直接运行,使用仅以下3步:

1、选择你可能关联查询的表,右键打开SQL生成界面;

2、输入你的需求,并点击Run按钮即可为你生成SQL;

3、点击运行按钮预览结果。

预览多表关联查询SQL生成

下面案例使用了teacher表中的数据张三,直接查询course课程表中的信息,生成的结果还是挺准确的。注意必须使用'查询'开头。

预览插入测试数据SQL生成

下面案例直接给课程表course增加10条数据,从生成的结果,可以看出生成的数据字面含义还是非常贴合我们自己的表。

预览创建表结构SQL生成

下面案例要求新增一张表,用于存储老师的上课记录。从生成结果看,创建表的语法一点问题都没得,字段和表名基本满足阿里数据库规约。

预览统计分析SQL生成

下面案例要求统一某一门课程成绩前3的学生,从生成的结果看貌似正确,但是结果limit不支持在子查询中使用,要区分版本的支持。即时这样,生成的结果也可以带给我SQL编写上的一些思路,有参考价值。

chatGPT 功能落地实施介绍

Tinkle SQL生成功能诞生过程

早在12月16日其实上述功能我就已经实现,一值拖到现在才正式公开。期间其实一直在思考如何更好的落地chatGPT应用。苦于这是一个新的领域,参考的产品太少,最后没有找到更好的方式,就还是以当前的方式上线了。

程序要与chatGPT 对接,那就需要使用其API,API这点反而出乎意料,chatGPT提供的接口非常的简单,基本10行代码就可以搞定。但有没有难点呢?其实chatGPT 接口最难的是prompt的设计,一个好的prompt参数设计,能让结果更为准确,另外注意的prompt也包括了上下文。

SQL生成的prompt可设计为: 上下文 SQL需求\\n 生成类型 例: 上下文:###之间的内容为上下文,描述了需求的约束条件 SQL需求:就是要SQL的描述信息,比如:查询员工信息 生成类型:就是生成SQL的类型,比如:SELECT

代码语言:javascript
复制
### 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 SELECT

有了prompt设计,最后整合一下API代码即可实现相关功能,为帮助大家,我也把直接贴出来:

代码语言:javascript
复制
public class AiUtils {

    /**
     * 生成需求
     * @return
     */
    public static List<CompletionChoice>  generatorSqlQuery(String token,String tables,String demand){
        String keyword = "";
        if(demand.contains("查询")||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("插入")||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";
        }else{
            keyword = "SELECT";
        }
        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 功能落地经验总结

chatGPT相关开发的说难不难,但是做好确是有一定的困难,具体可参考以下步骤去实施:

  • 选择一个你感兴趣的场景
  • 设计一个优秀的prompt:落地功能效果,直接由这一步决定;
  • 这个需要通过大量的测试,最终总结出一个较好的prompt
  • 对接Open Ai 相关接口
  • 通过GUI图形化界面进行包装

最后你觉得这个chatGPT生成SQL功能可收费吗?欢迎评论区探讨~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Tinkle SQL生成工具使用介绍
    • 使用步骤介绍
      • 预览多表关联查询SQL生成
        • 预览插入测试数据SQL生成
          • 预览创建表结构SQL生成
            • 预览统计分析SQL生成
            • chatGPT 功能落地实施介绍
              • Tinkle SQL生成功能诞生过程
                • chatGPT 功能落地经验总结
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档