利用 GPT 进行逻辑回归分析可以参考以下步骤:
需要注意的是,整个过程可能比较繁琐,需要有一定的耐心,包括查资料、处理报错、纠正 GPT、不断补充需求细节等。
这个理论可能是什么样子?嗯,有一个小角落基本上已知了两千年,那就是逻辑。当然,在亚里士多德发现它的三段论形式中,逻辑基本上是一种说法,即遵循某些模式的句子是合理的,而其他句子则不合理。因此,例如说“All X are Y。This is not Y,so it's not an X.”(如“All fishes are blue。This is not blue,so it's not a fish.”)是合理的。就像人们可以想象亚里士多德通过(“机器学习式”的)许多修辞例子来发现三段论逻辑一样,我们也可以想象在ChatGPT的训练中,它通过查看网络文本等大量信息,能够“发现三段论逻辑”。(是的,尽管人们可以预期ChatGPT会产生基于三段论逻辑的“正确推论”,但是当涉及到更复杂的形式逻辑时,情况就不同了-我认为它会因为与括号匹配相同的原因而失败。)但是在逻辑的狭隘例子之外,还有什么关于如何系统地构建(或识别)甚至是合理的文本?是的,有像Mad Libs这样使用非常特定的“短语模板”的东西。但是不知怎的,ChatGPT隐含地具有一种更普遍的方式。也许除了“当您拥有1750亿个神经网络权重时,不知怎样就会发生”之外,无法说明如何做到这一点。但我强烈怀疑有一个更简单、更强大的答案。
逻辑流程图如下:上面说的两种方式对应流程图的上下两个步骤,红色部分是重点。SQL分析:用户描述想分析的内容,后台连接DB,附带表结构信息让AI输出SQL语句,校验是SELECT类型的SQL,其他操作如UPDATE/DELETE绝不能通过!!校验通过后执行SQL返回结果数据。再将数据传给GPT(附带上下文),让AI学习并分析数据,最后输出分析结论和建议,和结果数据一起返回给前端页面渲染图表、展示分析结论。目前已实现两张表关联查询。个性化分析:用户上传文件,如有需要可以简单描述这是什么数据、字段意义或作用辅助分析。前端解析用户上传的文件,再传给GPT分析数据,后续步骤与上面一致。流程描述得比较详细,就不具体讲解开发过程和代码了,而是会更多讲述开发时的一些问题、重点和技巧。相关重点:
在完成第一步的原SQL输入后,GPT已经对需求有了初步的理解,这里我再将真实的业务需求场景以及现在的问题输入给GPT:这一步的作用是帮助GPT更好的理解旧代码背后的真实业务需求,同时结合旧代码运行的问题,让GPT能进一步给出针对性的优化建议,输出更符合需求的代码。这里其实有好几轮的输入输出(可以理解为讨论),不断的强化GPT对真实需求的认知。注:SQL查询代码本身不包含涉密信息,可以放心在ChatGPT中使用[heading3]Step3:根据优化结果不断调试[content]在输入完旧代码、需求和问题之后,GPT模型给出了一些新的代码。我需要不断地根据GPT的结果进行调试和优化,直到生成满足需求的新代码,这一步比较繁琐,但惊喜也是在这一步发现的。按照原SQL的思路,是每天更新近30天的数据,并存储到一个结果表,由于指标很多且数据量大,所以耗时很长,但其实大部分的语句都是反复的读同一个表,资源浪费比较严重。所以在跟GPT反复沟通多次后,GPT提出了3点比较重要的优化建议:每次更新1天而不是30天的数据;不直接统计全量指标数据,而是创建一个中间结果表,将所有非二次计算的数据存储到该表,需要二次计算的指标直接通过该表再查询(例如:中间结果表统计了昨日总数和今日总数,变化值、环比等则通过中间表再进行二次查询统计);利用CASE WHEN合并查询约束条件基本相同的指标,这个方式大大减少了重复读表的次数,也极大的精简了SQL代码内容。前两点是GPT直接提出的,第三点是我从GPT给出的优化代码中发现的,基于这三个核心优化思路,结合我的半吊子SQL水平,花费了半天多的时间将完整的代码优化完成,并分模块在系统中测试了一下,结果完全一致。当然整个过程还是比较繁琐的,包括查资料、报错、纠正GPT、不断补充需求细节等等,需要有一定的耐心。