我是一个平平无奇的程序员,兢兢业业地做着公司的需求,直到那天,一位十年见过两面的亲戚突然找上门,他说:
小Z啊,听说你是学计算机的对吧。
听完这话,我当场汗流浃背,这不是让我上门修电脑的节奏吧。
是这样的,我女儿最近在学校工作嘛,排课要订个机房,你看能不能帮忙写个程序,自动给它订上了,省省力。
还好还好,至少不是拿着螺丝刀上门服务了。都说中国人是喜欢折中的,你不让我修电脑,写个程序我可就接受了。
而且这不,正巧最近大模型流行嘛,这种简单的需求,直接让大模型给我搞了没毛病吧。
第一站,吃瘪
说干就干,我当时就叫出当前最强大模型ChatGPT,给他上一些小小的强度:
你看一下 http://xxx 这个网站,这是一个订机房的网站,帮我搞明白怎么订一个机房,然后写一段JS脚本实现这个功能。
ChatGPT回头就是一巴掌:问题都不会问的还想写程序呢!
开个玩笑,确实我也不指望一点技术不懂的就给写出来,所以还是拿出我的VSCode来吧,装上百度的文心快码。今天我就誓死只用问答对话来解决这事情了,所以我的VSCode现在长成这样子。
真是相当好,代码什么的已经不重要了,留一小条看看就行。
第二站,搞定登录
回归正题,先来看看我们要去搞定的网站吧,一打开就是个登录界面。
这可还行,输入账号密码,然后点登录看一下,刷刷的一片片的网络请求。
看着就心累,我也不知道哪个是登录了,为啥要一个一个自己看呢,直接在浏览器里全部复制出来,直接丢给文心快码不就好了(上百个URL,截图省略了大部分)。
一步到位,5秒解决吭哧吭哧看半天的问题,这让我信心大增,直接把它转成JS的函数试试:
整挺好,一个HTTP头都没放过全还原了,连我在本地的代理配置都给我整上了,着实有些考虑太全面了,这放别人电脑上可没法跑,再来给精简一下吧。
我还是相当满足的,虽然它“聪明了但又不那么聪明”地把我的User-Agent
头也给删了,好在不影响实际使用。无脑点下“采纳”按钮,把示例部分的代码去掉,真就直接可以用了。
第三站,搞定预订
登录能实现,可就说明我们的文心快码能很简单搞定HTTP请求的CURL命令转成函数了,事情突然变得简单了起来。去网页上随便订一个机房,把CURL拿来就让文心快码生成一把。
洋洋洒洒一大片,我惊奇地发现它在实现函数的时候,特意地将Cookie给隐藏了起来,听说文心快码有特殊的安全加固,看来所言非虚啊。
函数依然是无脑采纳就好,只是我们得和登录的功能关联起来,让它能够读到cookie
这个变量,那么就在原函数的基础上再修改修改。
就这样,一份能用的订机房的函数就生成了,采纳后删掉const cookie = ''
这一行,以及示例的代码,果不其然还是能跑起来的。
第四站,串逻辑
2个函数可就都有了,思路也很简单,先登录,然后多个机房的预订一个循环搞定就行,这点简单的事显然也难不倒文心快码。
真是相当懂我,连后面哪些地方要自己再改改都告诉我了。继续无脑采纳,合在一起就跑通了整个订机房的过程。
终点站,我的思考
说实话,在最初把这个亲戚的请求用百度文心快码去实现的时候,我是大概知道可行的,无非是多少事情人来做,多少事情文心快码能帮我做的区别而已。但真正去做这个事的时候,我还是感觉到了一些惊艳的:
-
从上百个HTTP请求中,它很准确地帮我找到了正确的登录的接口。实际上这其中还有一个
Login.aspx
混在里面做干扰,但没有成功干扰文心快码的识别。 -
在CURL转成JS的函数时,文心快码表现的稳定性超过了我的预想。我原本想着生成的代码多多少少会有些HTTP头之类的对不上,需要自己再改改,但结果很惊喜地无脑采纳就能用上。
-
文心快码还是会比较“贴心”地帮我增加一些安全措施,如不要泄露Cookie之类的,我想如果我是一个更初级的开发者,这些提示会对我有很大的参考价值。
当然,实话实说,这个过程也有遇到过一些小挫折:
-
一开始我是希望使用NodeJS的原生
fetch
函数的,但似乎文心快码很难区分NodeJS与浏览器的fetch
,总是让我去用document.cookie
获取Cookie(在NodeJS这是不可行的),于是我本着“你写代码你说了算”的态度,改用了axios
去发请求,一下子让过程顺利了很多。 -
文心快码还很积极地往代码中加示例调用,通过提示词也很难控制这个行为。这让我在采纳代码后,不得不手动的删除一些内容,与我最初设想的“完全一点不改代码”有了一点点的距离,好在无伤大雅。
总的来说,去用智能开发的插件,基于大模型实现简单的需求在当下无疑已经成为了现实,相信这也将赋予更多有创意但缺少编码经验的人力量,诸如为自己的智能家居编程在将来必定会人人可为、没有门槛,真的非常期待这么一天的到来。