1. 从哪儿聊起呢
从 百草堂 到 三味书屋
从 Copilot 到 ChatGPT
从 ChatGPT 到 Copilot Chat
从 Copilot Chat 到 DevChat
烧掉了数不清的 token,走过了数不尽的弯路,被 GPT 逗笑过,也被 GPT 坑哭过……
今日个我想从程序员视角和大伙聊聊我用 GPT-4 干过点啥,GPT-4 又能干点啥?换个高端一点的说法就是:探索下 GPT-4 在软件工程领域的能力边界。
低调。低调一点。
NOTICE: 如果你在追更我的文章,那么下文的内容或许会让你感到“似曾相识”。今天的文章更像是一次总结,下文提到的各种 GPT-4 玩法都在我以前的文章中出现过。所以,你自己决定是不是看下去咯~
2. 潮起潮退
还记得 ChatGPT 开始爆火的那些日子吗?你还记得自己当时的感受不?焦虑过没?恐慌过没?
那些天,各种 ChatGPT 吊炸天的报道铺天盖地,炸了又炸,似乎地主家的“人工智障”一夜之间长大了,智能了,真正的“人工智能”来了!似乎这忽如一夜,第五次工业革命它就来了,AI 要抢走我们的饭碗了,教师要失业了,律师要失业了,程序员要失业了……
你打开手机,只见各种 AI 相关的故事铺天盖地:
一个设计师用 GPT-4 二十分钟就写了一个贪吃蛇游戏。
一家创业公司老板上午用了 ChatGPT,下午就裁员40%!
有人让 GPT-4 当老板,自己跑腿,居然实现了盈利。
GPT-4已经可以被视为一个 AGI (通用人工智能)的早期版本!
微软154页研究刷屏:GPT-4 能力接近人类,「天网」初现?
GPT 最终会让人类失去思考的能力,人类一切问题依赖 AI,最终被 AI 圈养!
……
你不禁感慨:这一生,有幸亲历一次工业革命,见证人类步入新时代,也是无憾!
不过 ChatGPT 出来了大半年了,GPT-4 问世也近半载了,至今,你却发现身边并没有人真的用 GPT-4 开起了自己的公司,赚到了大钱,走上了人生巅峰;你也没见产品经理亲自写代码,把程序员都逼去卖煎饼果子,当起了跑腿小哥;甚至你身边的程序员也没能完全用 GPT 来生成代码,甚至很大比例的程序员觉得和 GPT 聊天是浪费口水,花那时间澄清需求,调试 Prompt,还不如手撕代码来得快。
潮起,满是泡沫;潮去,一地海鲜。
3. 遇强则强,遇我则……
能力不够,GPT 来凑,我拿到 GPT 后先学了下编程……
本文通过 DevChat 和 GPT-4 交互。相比于 Copilot Chat,DevChat 可以更加灵活地指定聊天上下文,更加自由地自定义 Prompt 模板,因此可以获得更加精准的 GPT 响应。如果你对 DevChat 感兴趣,可以到 DevChat 的官网注册试用。
3.1 玩法一:辅助技能提升
如下图,你可以就某个知识点追问 GPT,让它给你讲解讲解。
经过不知道多少轮的提问,最终我总结了三篇笔记:
而后感觉功力大涨,于是用刚学到的“并发编程”技能写了一个开源的 Golang Worker Pool - GoPool:
看着还行,没过多少天涨了大几十 star:
3.2 镜头背后的故事
其实“G老师”没那么贴心,她不会主动把知识点都吐给你。你需要做好“挑螺蛳肉”的准备,不停地追问,还得主动思考、上手实操:
3.3 玩法二:综合“技术选型”
假如你现在需要写一个 API 服务吧,你能很快决定选择哪个 web 框架吗?假如你是个 Java 程序员,啥?你说你是写 Python 的?没关系,OKOK,那我就和你聊聊 Golang 吧。你不熟悉 Golang,于是你祭出 GPT-4,你可以这样问她:
你也可以换个姿势这样问她:
3.4 镜头背后的故事
也别高兴太早,你需要时刻谨记:GPT-4 的训练数据并不是最新的,所以重要的结论你最好 Google 一下,二次确认。
尽管 GPT-4 告诉你 Gin 是最优的,不过,假如,万一,咱就是有没有可能最近1年就是有某个新框架后来者居上了?咱就说有没有可能 Gin 社区没落,核心开发者跑路,这个框架已经被抛弃?总之,GPT-4 并不对它的“承诺”负责。它就那么一说,你就那么一听,最终做决定在你,担责的也是你。
3.5 玩法三:快速生成 Terraform 配置
曾几何时,我需要一个 EC2 实例。不过如你所知我并不是一个专业的运维,我也不想去慢慢翻 AWS 的文档(不专业还懒,快要没救了)。(但是我有 GPT 呀)于是我翻出来了 GPT-4,和它说了这句话:
我需要一个 EC2 实例用于部署单机版的 KubeSphere,这个实例的要求是:
1. 系统是 Ubuntu 22.04;
2. 规格不小于:2 CPU cores, 4 GB memory, and 40 GB disk space;
3. 可以用 ssh 连接;
4. 所有端口都可以从公网访问;
请给出创建这个 EC2 实例和其所需的 ssh key 对应的 Terraform 配置。
GPT-4 也挺痛快,直接给了一段炫酷的代码:
3.6 镜头背后的故事
GPT-4 是给了我一段 Terraform 配置代码,不过这段代码并不能“开箱即用”,我必须得先看得懂这段配置,然后告诉它为什么这段代码不行,需要怎么改,于是我还得继续给它提要求:
你以为这就完了?不,这次 GPT-4 给的新配置里出现了ubuntu-focal-22.04-amd64-server
,“Focal Fossa”是“Ubuntu 20.04 LTS”版本的代号,而“Ubuntu 22.04 LTS”版本的代号是“Jammy Jellyfish”。你说要怪它吧,也不忍心,毕竟2022年才有的Ubuntu 22.04
它没见过呀;你要说不怪它吧,难不成怪我啊?那我更不忍心了。
3.7 玩法四:生成简单的 Python 脚本
“人生苦短,我用 Python……”,转眼已经六年没有写过 Python 了,我在脑子里检索了半天知识库,却发现关于 Python 的就只剩下这句话了。
这不,好巧不巧,这天需要写一个“小程序”,感觉用 Python 是最合适的。尽管我已经对 Python 的语法很陌生,不过这不是有 GPT-4 的嘛,挑战下吧:
最后程序的运行效果如下图,自动创建了一个很大的 md 表格,也生成了一堆 md 文件,皆大欢喜:
3.8 镜头背后的故事
你猜对了,用 GPT 写代码哪有什么岁月静好一帆风顺?这不,GPT-4 这次给的 Python 里藏了一个 bug,于是我又得和它来回解释:
如果你对那天晚上的故事感兴趣,可以跳转这篇文章吃瓜。
3.9 玩法五:构造 bug 复现场景
当别人给你提 bug 时,别忙着改代码,你得先复现问题,万一人家耍你呢?
这不,那天阳光明媚,万里无云,我在逛 GitHub,发现 Helm 被提了一个 bug,于是我就小手一抖,领了。
哎,真是手贱。我随口一说,人家真的把 issue 指给我了。于是,我祭出了 GPT-4:
一派和谐,歌舞升平啊!GPT-4 就这么一顿输出,我就这么一顿复制粘贴,然后:
bug 复现了。
最终我也顺利地给 Helm 提了一个 PR,修复了这个 bug。
3.10 镜头背后的故事
复现归复现,GPT-4 并不能帮助你定位到 Helm 这种复杂度的项目中的 bug,毕竟 Helm 的源码量级已经远远超过 GPT-4 的上下文长度了。没错,GPT-4 无法理解 Helm 的源码,你得自己刷 Helm 源码啊,老大!咳咳,好像不是你要刷,是我要刷…… 惨惨惨。
4. 总结
GPT-4 能帮你干点啥?那取决于你拿它来干点啥。
啥?这个总结太敷衍?好吧,是有点。那就补几句:
GPT-4 肯定能用来写代码,能一定程度上提升开发效率;
GPT-4 不能保证写的代码完全正确,人需要能够看懂代码,识别错误,修复错误,才能把 GPT 给的代码真正用起来;
GPT-4 知识库是21年之前的,很多问题的答案在当下已经变了,所以必要的时候得通过 Google 二次确认;
GPT-4 会存在“幻觉”,有时候会“一本正经地胡说八道”。比如信誓旦旦地说已经修复了一个 bug,给出了新的代码,结果还是错的;
GPT-4 的对话 token 有大小限制,会聊到后面忘了前面;
GPT-4 更擅长在小型项目中,或者是独立,逻辑不太复杂的小块功能开发中发挥作用;大型项目或者是复杂算法往往“沟通成本”比“开发成本”更高。
本文通过 DevChat 和 GPT-4 交互。相比于 Copilot Chat,DevChat 可以更加灵活地指定聊天上下文,更加自由地自定义 Prompt 模板,因此可以获得更加精准的 GPT 响应。如果你对 DevChat 感兴趣,可以到 DevChat 的官网注册试用。