写点什么
OpenHarmony 算法 元宇宙 MySQL 移动开发 学习方法 Web3.0 高效工作 数据库 Python 音视频 前端 AI 大数据 团队管理 程序员 运维 深度思考 低代码 redis golang 微服务架构 flutter 查看更多

集成 chatGPT3.5 的数据库虽已成精,你值得拥有!实现思路详解

作者: 非喵鱼
  • 2023-03-24
    重庆
  • 本文字数:2756 字

    阅读完需:约 9 分钟

集成chatGPT3.5的数据库虽已成精,你值得拥有!实现思路详解

引言

3 月份 chatGPT 是不安分的、微软是不安分的、那么勇哥就应该安分?不可能,绝对不可能。简单来说,勇哥 3 月份成功的把 chatGPT3.5 集成到 bg-tinkle 软件中发布了 v1.0.5 版本。集成后的 bg-tinkle 对于数据库的修改、统计、删除等操作就都是一句话的事了,非常 NICE。


阅读本文你会了解 3 月份 chatGPT 重大的事件,体验如何使用 AI 帮助数据库优化、设计 SQL 等操作?以及了解本功能开发实现的思路?

事件回顾:不安分的 3 月大事

  • chatGPT 竞品出现:(谷歌的)Bard、(百度的)文心一言

  • chatGPT 发布新版:chatGPT4 隆重发布(但是勇哥并不 CARE,因为太贵和没资格)

  • chatGPT 成品出现:微软 office 正式接入 chatGPT,写好 word、ppt、excel 再也不用报班学习了(但是价格不便宜呀~)

数据库+AI:功能体验

AI 功能是以聊天的方式进行,然后对聊天的结果可直接执行 SQL、制作图表得操作。


通过数据库软件,直接获取数据库表结构,然后再此基础上可用让 AI 帮您设计统计分析、修改、优化等,并直接生成 SQL 语句。然后可在结果中一键执行 SQL、或者生成 SQL 的统计图。



AI 补全表注释

忘记写注释也不用怕,一键让 AI 补充+一键运行,10 秒不到完成工作!大赞~



AI 设计表索引

可以发送表常用的 SQL 语句,然后让其设计合理的索引。其设计的索引还挺符合行业规范的。大赞~



AI 创建新表

依据现有的数据库,参考设计一张新的表。分成多次会话沟通,依然没有问题。



AI 结果直接运行

AI 结果中的查询 SQL 会自动执行,并以表格的方式展示结果。同时相关 SQL 如果有问题,还支持编辑后执行。



AI 结果做成图表

AI 生成的 SQL 语句,可以直接转到图表生成功能中,快速正常折线图、饼图、柱状图、树图、桑基图等。



数据库+AI:使用帮助-开启对话

在数据库软件中,进入 AI 聊天非常简单按照以下 2 步进行即可:


  • 选择你要操作的表,可以选择多张;

  • 右键选择 Sql Chat 即可打开聊天窗口了


ChatGPT 访问需要 Token:

  • 如果你有自己的 token 可以直接点击右下角的小齿轮,填写你自己的 Token 即可。

  • 如果没有自己的 token,可以通过‘打赏领 Token 功能’领取 Token,然后即可访问。



数据库+AI:使用帮助-保存会话

数据库 AI 聊天对话会保持到用户本地,以便再次打开,节省流量。要自定义保存文件名称,则参考以下操作步骤:


  • 点击右下角‘小齿轮’

  • 再弹出的对话框中填写保存的 ‘文件名称’

  • 再次发送请求,程序会自动保存会话。


打开则只需要双击对应的会话名称即可(比如双击下图的 3,就可以再次打开会话)。



数据库+AI:实现思路

还实现以上带有会话上下文的聊天功能,其实现原理其实很简单,但是有点费钱。具体实现的思路如下:


  • 把对话中所有的消息都存储到一个集合中,比如下面第 1 处代码

  • 过滤集合中那些请求失败的对话消息,比如下面第 2 处代码

  • ps:处理失败的消息,过滤掉主要原因是减少请求的 Token,节省成本;

  • 请求接口并获取响应数据,对响应数据进行 SQL 语句的解析,标记出来以便前端渲染演示和执行,比如下面第 3 处代码


// 1、存放所有的对话消息List<ChatMessageDto> dtos = JSON.parseArray(tempMessages, ChatMessageDto.class);// 2、过滤失败的消息List<ChatMessage> messages = dtos.stream().filter(item -> item.getIsCall()==null||item.getIsCall()).map(item ->{    ChatMessage chatMessage = new ChatMessage();    chatMessage.setRole(item.getRole());    chatMessage.setContent(item.getContent());    return chatMessage;}                                                                                                       ).collect(Collectors.toList());ChatMessageDto result = new ChatMessageDto();List<ChatCompletionChoice> chatCompletionChoices = AiUtils.chatGpt(token, messages);for (ChatCompletionChoice chatCompletionChoice : chatCompletionChoices) {    String content = chatCompletionChoice.getMessage().getContent();    // 3、把字符串消息,转成结构化的消息,便于运行SQL    result.setChatTerms(AiUtils.parseChatMessage(content));    result.setContent(content);    result.setRole(chatCompletionChoice.getMessage().getRole());    dtos.add(result);}
复制代码


第 3 处例子:


非结构化的数据:


\n\n统计维度:\n\n1. 按照用户ID统计总销售额\n2. 按照支付方式统计销售额占比\n3. 按照订单状态统计订单数量和销售额\n4. 按照下单时间统计每月销售额\n\nSQL语句:\n\n1. 按照用户ID统计总销售额\n\n```sql\nSELECT user_id, SUM(total_fee) as total_sales\nFROM tb_order\nGROUP BY user_id;\n```\n\n2. 按照支付方式统计销售额占比\n\n```sql\nSELECT payment_type, SUM(total_fee) as total_sales, \n       ROUND(SUM(total_fee)/(SELECT SUM(total_fee) FROM tb_order)*100,2) as sales_percentage\nFROM tb_order\nGROUP BY payment_type;\n```\n\n3. 按照订单状态统计订单数量和销售额\n\n```sql\nSELECT status, COUNT(*) as order_count, SUM(total_fee) as total_sales\nFROM tb_order\nGROUP BY status;\n```\n\n4. 按照下单时间统计每月销售额\n\n```sql\nSELECT DATE_FORMAT(create_time, '%Y-%m') as month, SUM(total_fee) as total_sales\nFROM tb_order\nGROUP BY month;\n```
复制代码


转成结构化的数据:


[    {        "content": "\n\n统计维度:\n\n1. 按照用户ID统计总销售额\n2. 按照支付方式统计销售额占比\n3. 按照订单状态统计订单数量和销售额\n4. 按照下单时间统计每月销售额\n\nSQL语句:\n\n1. 按照用户ID统计总销售额\n\n",        "type": "MES"    },    {        "content": "\nSELECT user_id, SUM(total_fee) as total_sales\nFROM tb_order\nGROUP BY user_id;\n",        "type": "SQL"    },    {        "content": "\n\n2. 按照支付方式统计销售额占比\n\n",        "type": "MES"    },    {        "content": "\nSELECT payment_type, SUM(total_fee) as total_sales, \n       ROUND(SUM(total_fee)/(SELECT SUM(total_fee) FROM tb_order)*100,2) as sales_percentage\nFROM tb_order\nGROUP BY payment_type;\n",        "type": "SQL"    },    {        "content": "\n\n3. 按照订单状态统计订单数量和销售额\n\n",        "type": "MES"    },    {        "content": "\nSELECT status, COUNT(*) as order_count, SUM(total_fee) as total_sales\nFROM tb_order\nGROUP BY status;\n",        "type": "SQL"    },    {        "content": "\n\n4. 按照下单时间统计每月销售额\n\n",        "type": "MES"    },    {        "content": "\nSELECT DATE_FORMAT(create_time, '%Y-%m') as month, SUM(total_fee) as total_sales\nFROM tb_order\nGROUP BY month;\n",        "type": "SQL"    }]
复制代码


发布于: 刚刚阅读数: 3
Java 数据库 openai ChatGPT ChatGPT4
用户头像

非喵鱼

关注

技术专业一点,才能多一点时间陪家人! 2018-11-28 加入

Java生态开发高效工具 Tinkle、Boom的作者,欢迎大家持续关注!

评论

发布
暂无评论
集成chatGPT3.5的数据库虽已成精,你值得拥有!实现思路详解_Java_非喵鱼_InfoQ写作社区

玻璃钢生产厂家临沧玻璃钢雕塑生产商邢台玻璃钢雕塑厂商定制玉溪市玻璃钢雕塑批发厂家江苏定制玻璃钢雕塑优质商家宜春抽象玻璃钢雕塑批发淮安东安玻璃钢雕塑厂家玻璃钢雕塑工艺品定制商场美陈太空人宁夏卡通雕塑玻璃钢新郑房地产玻璃钢仿铜雕塑厂家深圳常见玻璃钢雕塑摆件趣味人文玻璃钢雕塑人物金坛玻璃钢造型雕塑景德镇市玻璃钢雕塑保山市玻璃钢雕塑生产商景观标识玻璃钢彩绘雕塑定制东莞玻璃钢人物雕塑厂家玻璃钢雕塑的英语鹿城玻璃钢造型雕塑楼盘玻璃钢雕塑批量定制玻璃钢布朗熊和可妮兔雕塑安庆商场美陈道具濮阳广场玻璃钢景观雕塑公司公园小品玻璃钢雕塑艺术摆件玻璃钢雕塑施工哪家好商场玻璃橱窗美陈西藏玻璃钢仿铜雕塑厂家玻璃钢花盆出售锦江玻璃钢造型雕塑渭南玻璃钢商场美陈香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化