我不想专注于它,但我有点吓坏了。作为一项实验,我要求 ChatGPT 编写一个插件,以节省我妻子管理网站的时间。我写了一个简短的描述,而 ChatGPT 写了整个东西:UI、逻辑等。

不到五分钟。

有影响。我们会在几分钟内解决这个问题。首先,让我告诉你经历和发生的事情。

要求

ChatGPT 编写了一个插件来生成此 UI 并处理这些行。

David Gerwitz/ZDNET

我的妻子是一个基于 WordPress 的电子商务网站的所有者,该网站专注于一种流行的爱好。她还为她网站的客户建立了一个非常活跃的 Facebook 群组。每个月她都会随机生成一个花名册,然后使用该随机花名册为 Facebook 群组制作虚拟纺车动画。她一直在使用 Internet 上的一个网站,该网站在随机化行方面做得很好,但收费高于导出列表的价值。

当我看到她努力恢复随机名称时,我想如果我写一个快速的 WordPress 插件我们可以安装在她的网站上可能会有所帮助。她每天都在仪表板中,因此将其用作工具很有帮助。

但是即使是一个简单的插件也需要几天的时间来编写,包括UI元素和逻辑代码,这几天我已经忙于项目了。

然后我想到了ChatGPT。媒体上有一些关于将 ChatGPT 作为编程工具的讨论,所以我决定试一试。

提示

ChatGPT 输出(来自我的 < /p>

David Gerwitz/ZDNET

让 ChatGPT 生成任何东西的关键是编写良好的提示。在编程的情况下,将其视为经理或客户。你有清楚地描述你需要什么才能得到你想要的。我从一个非常基本的提示开始,只是为了看看它是否有效。这是我使用的提示:

编写一个 PHP 8 兼容的 WordPress 插件它提供了一个可以粘贴行列表的文本输入字段,以及一个按钮,当按下该按钮时,列表中的行随机化并在第二个文本输入字段中显示结果。

在一个minute,生成了右边看到的代码,我把生成的代码复制成一个.php文件,放到和.php文件同根目录的文件夹下,压缩,上传到她的服务器。高效.

当我把它拿给我的妻子看时,她适当地留下了深刻的印象和惊讶。但是然后齿轮开始转动,她要求一个新功能:确保重复的名字不会并排。

对于她的申请,她有时需要多次在列表中包含某人的名字。但她不想将这些副本放在一起。

我修改了原始提示以添加以下附加条件:

...确保没有两个相同的条目彼此相邻(除非没有其他选项).. .nu​​mber of lines submitted 和结果中的行数是一样的。

我添加了短语“除非没有其他选择”和相同的计数要求,因为我想确保所有名称都被覆盖,我担心它会优先考虑没有两个名称并排所有名称均已保留。

大约 30 秒后,我有了一个新插件。我把它上传到服务器并试了一下。它有效,但输出包含一些空行。所以我在我之前的提示中添加了这个条件:

...没有空行...

到现在我已经习惯了总是少于一分钟的周转时间。再次上传测试,再次成功。

我要最后一个函数,只是确认处理了多少行。我希望插件显示输入和输出字段的行数。这里有一个要添加的提示:

...在第一个字段下,显示说明“要随机化的行:”的文本和源字段中的非空行数。在第二个字段下,显示说明“Randomized Rows:”的文本和目标字段中的非空行数。

这主要是有效的。在运行之前,输出字段显示一行。但是一旦随机化过程完成,它就会在两个字段中显示准确正确的行数。

代码质量

总体而言,代码质量干净。我只提供原始回复,否则不适用于此帖子。该程序正确生成了 WordPress 标题栏并为插件编写了仪表板 UI,以及插件的处理逻辑。

它确实将我的摘要行放在字段上方,尽管我在下面指定,但这没什么大不了的。客户可能会从人工承包商那里得到同样的错误,然后需要进行一些返工来修复它。

编码有效,但并未涵盖 WordPress 编程的所有最佳实践。例如,它不会清理用户输入。 WordPress 社区对过滤输入非常严格,因此黑客无法在字段中填充可能损坏您网站的数据——而此代码没有这些。

作为后来的测试,我确实指示 Ai 对输入进行清理,它确实……有点。它会清理 PHP 函数内的输入,但不会在 HTML 中调用 PHP 时清理。那肯定会给黑客留下空隙。

它还将插件的菜单项放在“设置”中。我可能会把它放在“工具”下,或者为该功能提供自己的菜单项。由于我没有指定应该从哪里调用它,我认为 ChatGPT 将菜单项放在调用它的地方是一个可行的决定。

我在提示中添加了最后一个要求,要求 AI 为插件命名:

编写一个名为“Robo Randomizer”的 PHP 8 兼容 WordPress 插件......< /p>

p>

奇怪的是,AI 给了我一个完全不同的插件,生成一个提供短代码而不是仪表板界面的插件。让我向非 WordPress 用户解释一下,因为它很有趣。

当写这样的东西时,您可以在您的网站上将其提供给您的访问者(称为前端)或提供给登录到您的网站仪表板以维护端(后端)的人。在我最初的一组提示中,我没有指定前端或后端,但 AI 写了我想要的,这是一个后端,工具的仪表板界面。

但上次决定将插件编写为前端工具,使其通过简码执行。在 WordPress 中,您可以在帖子中嵌入一个短代码(类似于 [随机行]),它将运行插件中的代码。 AI 生成的最后一个版本给了我这样一个简码,它允许向网站访问者显示随机化行功能。

在此之后,ChatGPT 有点失去了它的线程。我无法向原始插件添加其他功能,而且 ChatGPT 主要只是重新生成短代码版本。显然,代码维护并不是ChatGPT的核心强项。

启示

很明显,这是一个简单的插件。这大约是我在加州大学伯克利分校任教时给我的一年级编程学生布置的作业量。这与我为 50,000 多个用户维护的更大、更大的开源 WordPress 插件的复杂性相去甚远。

当我第一次使用 ChatGPT 为我的妻子构建一个快速插件并在上周发了推文时,我的社交媒体遭到了记者的强烈反对。以下是他们的一些担忧:

这是邪恶的吗? 有人担心 AI 会在插件中嵌入恶意(或至少是宣传)信息,非程序员用户永远不会知道。但事实是,如果你不是程序员,看不懂代码,即使你和别人签了合同,你也不会真正知道里面有什么。这一切都归结为信任声誉,或者让您信任的人查看代码。就我实验中生成的代码而言,它是干净的。

是最好的吗? 在这里,人们再次以与人类编码员不同的标准支持 AI 的代码。我是一个优秀的程序员,但我的代码有错误。这不是最好的……至少一开始不是。但是对于人类来说,代码会随着时间的推移变得更好。我不确定 AI 能否采用现有代码、对其进行改进、调试和增强。然而,有时事情只需要是功能性的。他们是否是精英中的精英并不总是那么重要。足够好往往是足够好。它生成的代码已经足够好了。

它会减少人类编程的数量吗? 几乎毫无疑问。我讨厌看到机器抢走任何人的工作(尤其是如果这是我可能想要的)。人工智能绝对是快速简单项目的一个选择,无论是写作还是编程。毫无疑问,人们的工资会受到影响。

我研究人工智能几十年了。我做了一篇关于人工智能的论文。但即使在所有这些背景下,高质量的生成式 AI 的激增也让我感到惊讶。也就是说,我们现在关注的是“足够好”的生产力水平。不幸的是,这正是许多客户所要求的。

但是——至少现在——ChatGPT 和它的朋友们不能写出像这样超级深入的分析文章,因为它们反映的是观点、轶事和多年的经验。虽然他们可能能够为更大的编码项目编写子例程和函数,但他们就是不能编写主要的编码项目。

例如,去年我不得不与一家主要的 API 提供商举行 20-30 次会议,以便将他们的服务集成到我的服务中。大多数这些会议将业务问题与技术要求和许可政策混为一谈。我拒绝任何 AI 忍受,了解这种官僚主义情况的细微差别并让合作伙伴满意,然后能够生成每个人都能同意的代码模块。

所以,是的,我对我为我妻子“制作”的插件有多好感到有点惊讶。但 AI 在接受有经验的开发人员和作家的作品之前还有很长的路要走——只要客户想要有经验的开发人员和作家创造的那种作品。我的朋友们,我确实担心这个。