不要把重点放在它上面,但我有点吓坏了。作为一项实验,我要求 ChatGPT 编写一个插件,以节省我妻子管理网站的时间。我写了一个简短的描述,而 ChatGPT 写了整件事:用户界面、逻辑等等。
不到五分钟。
有影响。我们将在几分钟内解决这个问题。首先,让我向您介绍一下经历和发生的事情。
需求
ChatGPT 编写了生成此 UI 并处理这些行的插件。
大卫格维兹/ZDNET
我的妻子是一个基于 WordPress 的电子商务网站的所有者,该网站专注于一种流行的爱好。她还为她网站的客户开设了一个非常活跃的 Facebook 群组。每个月她都会随机生成一份名单,然后使用该随机名单为 Facebook 群组制作一个虚拟的轮子旋转动画。她一直在使用 Internet 上的一个网站,该网站可以很好地随机化行,但收费高于导出列表的价值。
当我看着她努力恢复随机名称时,我想如果我写一个快速的 WordPress 插件我们可以安装在她的网站上可能会有所帮助。她每天都在仪表板中,因此将其用作工具会很有帮助。
但即使是一个简单的插件也需要我几天的时间来编写,包括用户界面元素和逻辑代码,这些天我已经忙于项目了。
然后我想到了 ChatGPT。媒体上有一些关于ChatGPT 作为编程工具的讨论,所以我决定试一试。
提示
ChatGPT 的输出(来自我的第一个最基本的提示)
大卫格维兹/ZDNET
让 ChatGPT 生成任何东西的关键是精心编写的提示。在编程的情况下,将其视为经理或客户。你必须清楚地描述你需要什么才能得到你想要的。我从一个非常基本的提示开始,只是想看看它是否有效。这是我使用的提示:
编写一个 PHP 8 兼容的 WordPress 插件,它提供一个文本输入字段,可以将行列表粘贴到其中,以及一个按钮,当按下该按钮时,列表中的行随机化并在第二个文本输入字段中显示结果。
一分钟之内,它生成了您在右侧看到的代码。我把生成的代码复制到一个.php文件中,放到和.php文件同根目录的文件夹里,压缩,上传到她的服务器。有效。
当我把它拿给我的妻子看时,她适当地留下了深刻的印象和惊讶。但随后齿轮开始转动,她要求一个新功能:确保重复的名字不是并排的。
对于她的应用程序,她有时需要多次在列表中包含某人的名字。但她不想让那些重复的人聚在一起。
我修改了原来的提示,添加了以下附加条件:
…确保没有两个相同的条目彼此相邻(除非没有其他选项)…提交的行数和结果中的行数彼此相同。
我加入了“除非没有其他选择”这个短语和相同的计数要求,因为我想确保所有的名字都被包括在内,我担心它会优先考虑没有两个名字并排的需要保留所有名称。
大约 30 秒后,我有了一个新插件。我把那个上传到服务器并试了一下。它有效,但输出包含一些空行。所以我将这个条件添加到我之前的提示中:
……没有空行……
到现在为止,我已经习惯了总是不到一分钟的周转时间。又一次上传和测试,再次成功。
我想要最后一个功能,只是为了确认已经处理了多少行。我希望插件显示输入和输出字段的行数。这是提示添加:
…在第一个字段下,显示文本说明“要随机化的行:”以及源字段中的非空行数。在第二个字段下,显示文本说明“已随机化的行:”以及目标字段中的非空行数。
这主要是有效的。运行前,输出字段显示一行。但是一旦随机化过程完成,它就会在两个字段中显示准确正确的行数。
代码质量
总的来说,代码质量是干净的。我只提供原始回复,否则它不适合这篇文章。该程序正确生成了 WordPress 标题块并为插件编写了仪表板用户界面,以及插件的处理逻辑。
它确实将我的摘要行放在字段上方,尽管我在下面指定了,但这并不是什么大问题。客户可能会从人工承包商那里得到同样的错误,然后需要一些返工来修复。
编码有效,但它没有包含 WordPress 编程的所有最佳实践。例如,它没有清理用户输入。WordPress 社区对清理输入非常严格,因此黑客无法在字段中填充可能损坏站点的数据——而这段代码没有这些。
作为后来的测试,我确实指示 Ai 对输入进行清理,它确实……在某种程度上。它清理了 PHP 函数内的输入,但在 HTML 中调用 PHP 时没有清理输入。那肯定会给黑客留下一个空缺。
它还将插件的菜单项放入“设置”中。我可能会把它放在“工具”下,或者为该功能提供自己的菜单项。由于我没有指定应从何处调用它,我认为 ChatGPT 将菜单项放在它调用的位置是一个可行的决定。
我在提示中添加了最后一个要求,要求 AI 为插件命名:
编写一个名为“Robo Randomizer”的 PHP 8 兼容 WordPress 插件,它……
奇怪的是,人工智能给了我一个完全不同的插件,生成一个提供短代码而不是仪表板界面的插件。让我向非 WordPress 用户解释一下,因为它很有趣。
当写这样的东西时,您可以在网站上将其提供给访问者(称为前端)或登录到网站仪表板以维护端(后端)的人。在我最初的一组提示中,我没有指定前端或后端,但 AI 写了我想要的东西,这是一个后端,工具的仪表板界面。
但最后一次,它决定将插件编写为前端工具,使其通过简码执行。在 WordPress 中,您可以在帖子中嵌入一个短代码(类似于 [随机化行]),它将在插件中运行代码。AI 生成的最后一个版本给了我这样一个简码,它允许向网站访问者展示随机化行功能。
在此之后,ChatGPT 有点失去了线索。我无法将其他功能添加到原始插件中,而 ChatGPT 主要只是重复生成短代码版本。显然,代码维护不是 ChatGPT 的核心优势。
启示
显然,这是一个简单的插件。这大约是我在加州大学伯克利分校任教时给我的第一年编程学生布置的作业的大小。它与我为 50,000 多个用户维护的更大、更大的开源 WordPress 插件的复杂性相去甚远。
上周,当我第一次使用 ChatGPT 为我的妻子构建 quickie 插件并发布推文时,我社交媒体上的记者予以了反对。以下是他们的一些担忧:
是邪恶的吗?有人担心人工智能会在插件中嵌入恶意(或至少是促销)信息,而非程序员用户永远不会知道。但事实是,如果你不是编码员并且看不懂代码,即使你与另一个人签订合同,你也不会真正知道里面有什么。这一切都归结为信任声誉,或者让您信任的人查看代码。就我实验中生成的代码而言,它是干净的。
它是最好的吗?在这里,人们再次以与人类编码员不同的标准来支持 AI 的代码。我是一个优秀的程序员,但我的代码有错误。它不是最好的……至少一开始不是。但是对于人类来说,代码会随着时间的推移变得更好。我不确定 AI 是否可以采用现有代码、改进它、调试它并增强它。然而,有时事情只需要是功能性的。他们是否是精英中的精英并不总是那么重要。足够好往往是足够好。它生成的代码足够好。
它会减少人类编程演出的数量吗?几乎毫无疑问。我讨厌看到一台机器抢走任何人的工作(尤其是如果它是我可能想要的)。人工智能绝对是快速简单项目的一个选择,无论是写作还是编程。毫无疑问,人们的薪水将受到影响。
几十年来我一直在研究人工智能。我做了一篇关于人工智能的论文。但即使有所有这些背景,高质量生成人工智能的激增也让我吃惊。也就是说,我们现在关注的是“足够好”的生产力水平。不幸的是,这正是许多客户的要求。
但是——至少现在——ChatGPT 和它的朋友们不能像这样写超级深入的分析文章,因为它们反映的是观点、轶事和多年的经验。虽然他们可能会为更大的编码项目编写子例程和函数,但他们就是无法编写主要的编码项目。
例如,去年我不得不与一家主要的 API 提供商举行 20-30 次会议,以便将他们的服务集成到我的服务中。这些会议中的大多数将业务问题与技术要求和许可政策混为一谈。我拒绝任何 AI 去忍受、理解这种官僚主义情况的细微差别并满足合作伙伴的要求,然后能够生成每个人都能同意的代码模块。
所以,是的,我为我妻子“制作”的插件有多好让我有点吃惊。但人工智能在接受经验丰富的开发人员和作家的作品之前还有很长的路要走——只要客户想要经验丰富的开发人员和作家创作的那种作品。我的朋友们,我确实担心这一点。