以下是产品经理使用 ChatGPT 的详细步骤:
背景前提:我不是专业的BI工程师,所以对数据治理、SQL优化思路等不太了解,只能跟着GPT的提示以及查询资料来一步步进行。我相信如果是专业的BI工程师,这些问题可能都只是小儿科,GPT提出的优化思路在专业人士看来可能也比较初级。但本次分享的主题是打工人如何利用强大的GPT,来帮助自己解决不擅长领域的问题以及快速学习成长。由于充值的问题没有解决,所以本次只用到了免费的ChatGPT-3.5版本,但也足够了。而且写文章写到一半的时候账号登录不上了,提示访问被拒,所以暂时无法截图还原完整的对话过程...[heading3]以下是完整的使用过程:[content]在开始前,我对GPT的认知是:它是一个知识储备无比丰富的助理,但需要一个清晰、准确的prompt,它才会给出一个符合需求的输出。所以我先整理了我要和GPT交互的基本思路以及步骤:旧代码输入>需求及现状问题输入>调试优化>结果输出验证接下来开始实操:[heading3]Step1:旧代码输入[content]首先,将需要优化的旧代码输入到ChatGPT模型中,旧代码有1900行,GPT直接提示too long,所以我做了分次输入。直接粘贴提示报错分段输入,再进行联合这一步的作用是让GPT理解旧代码实现的效果以及熟悉查询表和字段,方便后续GPT生成优化代码时可以直接复制粘贴到数据库中运行。原SQL的主要逻辑就是统计近30天内每一天的业务数据日报,把近30个结果指标,按照天和地区进行分组汇总,需要查询多张表几百万条数据。这里GPT的理解基本正确,甚至在我没有提需求的情况下,就提出了一些优化建议。
prompt这段文字是我的使用说明书,它解释了我作为一个由OpenAI训练的大型语言模型(基于GPT-4架构)的聊天机器人的功能和限制。我通过ChatGPT iOS应用程序与用户对话,通常会简短回答,除非需要详细推理或长形输出。我还拥有处理图像输入的能力。此外,我可以使用一系列工具来执行任务,例如执行Python代码、使用内置的浏览器进行搜索和打开网页、创建图像等。这些工具都有特定的使用规则,例如如何引用和合成信息,以及如何创造性地响应用户的图像生成请求。总的来说,这些说明定义了我的功能范围、数据处理方式以及与用户互动时的行为准则。今天试了一下小互bots,套了一下提示词https://chat.openai.com/g/g-b3EGxZji0-xiaohu-ai[heading2]来自hero的bots制作过程[content]GPTbot目前可以引入外部知识库。聚合了web搜索,dalle-3作图,代码解释器三个自有功能。除此之外,还可以为bot提供第三方能力通过action set可以设定不同的API能力,比如让它通过这些API去增删改查将结果返回给GPT,通过Prompt的CoT思维链来处理不同的数据链路,做出不同的反应机制现在的bot更近乎一个全能Agent了,对于Prompt的使用要求也提高了一个维度。GPTs导航网站:https://waytoagi.feishu.cn/record/Yq8DrMybyekB89csQREcZTkQnpdhttps://gptlet.app/gpts
在完成第一步的原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、不断补充需求细节等等,需要有一定的耐心。