人工智能在编程中的双刃剑:效率与风险的深度解析

5次阅读
没有评论

共计 3373 个字符,预计需要花费 9 分钟才能阅读完成。

人工智能在编程中的双刃剑:效率与风险的深度解析

Erikona/Getty Images

故事从一个男人和他的人工智能开始,就像许多故事一样。这个男人,像许多男人一样,有点书呆子气,也懂点编程。他还需要理个发。

人工智能是人类数千年进步的结晶,旨在让男人的生活更轻松一些。当然,这个男人就是作者本人。

不幸的是,虽然人工智能可以非常聪明,但它也有撒谎的倾向、误导性,甚至犯下令人震惊的低级错误。本文将讨论这些愚蠢的部分。

轶事证据确实有其价值。作者关于如何用人工智能快速解决一些问题的报告是真实的。作者用人工智能编写的程序仍在使用中。作者使用人工智能来加快编程流程的某些方面,特别是在作者效率较低而人工智能知识丰富的领域,比如编写调用公开 API 的函数。

大家都知道人工智能是如何进入这一领域的。生成式人工智能在 2023 年初崭露头角,并迅速渗透到知识工作中。

据称,人工智能真正擅长的领域之一是编写代码和帮助管理 IT 系统。这些说法并非不实。作者多次展示了人工智能如何解决他个人遇到的编码和系统工程问题。

现实世界中的人工智能编码:科学揭示了什么

新工具总是伴随着巨大的承诺。但它们在实际环境中是否兑现了这些承诺?

作者关于编程效率的大部分报告都基于个人轶事证据:作者自己使用人工智能的编程经验。但作者只是一个人,投入编程的时间有限,而且像每个程序员一样,作者在某些领域花费了大部分编码时间。

不过,最近一个名为 METR(模型评估与威胁研究)的非营利研究组织对人工智能编码生产力进行了更全面的分析。

他们的方法论似乎很可靠。他们与 16 位经验丰富的开源开发者合作,这些开发者曾积极为大型、受欢迎的代码库做出贡献。METR 分析师为这些开发者提供了 246 个需要修复的代码库问题。开发者需要独立解决大约一半的问题,另一半问题可以使用人工智能辅助。

结果令人震惊且出乎意料。虽然开发者自己估计人工智能辅助将他们的生产力平均提高了 24%,但 METR 的分析显示,人工智能辅助实际上使他们效率平均降低了 19%。

这有点令人费解。METR 列出了可能导致效率降低的因素,包括对人工智能有用性的过度乐观、开发者对代码库的高度熟悉(以及较少的人工智能知识)、大型代码库的复杂性、人工智能的不可靠性,以及人工智能拒绝使用“重要的隐性知识或上下文”的持续问题。

作者认为,以下两个因素可能限制了人工智能的有效性:

  • 问题的选择: 开发者被告知哪些问题必须使用人工智能辅助,哪些问题不能使用。作者的经验表明,知识丰富的开发者必须根据需要解决的问题选择使用人工智能的地方。例如,让人工智能编写正则表达式(作者不喜欢做且不太擅长的事情)会比让人工智能修改作者已经编写、经常使用并了如指掌的独特代码节省更多时间。
  • 人工智能的选择: 根据报告,开发者使用了 Cursor,这是一个以人工智能为中心的 VS Code 分支,当时使用了 Claude 3.5/3.7 Sonnet。当作者测试 3.5 Sonnet 时,结果非常糟糕,Sonnet 在作者的四项测试中失败了三项。随后,作者对 Claude 4 Sonnet 的测试结果要好得多。METR 报告称,开发者拒绝了人工智能生成的超过 65% 的代码。这将花费大量时间。

当 ChatGPT 建议“核爆”我的系统时

METR 的结果很有趣。在编码帮助方面,人工智能显然是一把双刃剑。但毫无疑问,人工智能可以为编码者提供相当大的价值。如果说有什么不同的话,作者认为这次测试再次证明了人工智能是经验丰富程序员的绝佳工具,但对新手来说可能是一个高风险资源。

让我们看一个具体的例子,如果作者遵循 ChatGPT 的建议,可能会浪费大量时间和精力。

作者正在使用 Portainer(一个帮助管理 Docker 容器的工具)在家用实验室中设置一个 Docker 容器。出于某种原因,Portainer 无法启用“部署”按钮来创建容器。

那天已经很晚了,所以作者没有看到明显的问题。相反,作者询问了 ChatGPT。作者向 ChatGPT 提供了配置的截图以及作者的 Docker 配置文件。

ChatGPT 建议作者卸载并重新安装 Portainer。它还建议作者从 Linux 发行版中删除 Docker,并使用包管理器重新安装它。这些操作会导致作者所有的容器被销毁。

值得注意的是,ChatGPT 没有推荐或询问作者是否有容器的备份。它只是给出了它建议作者剪切并粘贴的命令行序列,以删除并重建 Portainer 和 Docker。这是一个极具破坏性和不负责任的建议。

讽刺的是,ChatGPT 从未找出 Portainer 不允许作者部署新容器的原因,但作者找到了。原来作者从未填写容器的名称字段。仅此而已。

由于作者经验丰富,当 ChatGPT 告诉作者“核爆”安装时,作者犹豫了。然而,依赖人工智能建议的人可能会因为未输入容器名称而摧毁整个服务器。

大锤解决方案:人工智能失误的隐喻

为了说明人工智能逻辑可能带来的荒谬性,以下是一个特别令人沮丧的会话后作者写的一个类比。在这个小故事中,作者想象自己使用 ChatGPT 来帮助安装卧室窗户,而不是 IT 系统。

你好,ChatGPT。我在对齐新卧室窗户和窗框时遇到了问题。你能帮忙吗?

当然。我将尽力帮助你对齐窗户和窗框。你有大锤吗?

大锤?

是的,如果你用大锤轻敲窗框的角落,它会在窗框上分散力量,使窗户固定在窗框中。

但大锤不是可能会打破窗户吗?

不,大锤的表面面积较大,这将使你能够正确地对齐窗户和窗框。只要轻轻敲击即可。

多轻?我应该敲哪里?

只需在窗户未对齐的地方用大锤头部轻敲即可。

但如果我把窗户从窗框中取出再放回去呢?

这将比用大锤敲击窗框角落涉及更多的步骤。相信我。我知道这些事。只需轻轻一敲,你就可以省去取出和放回窗户的工作。

好吧,我试试。

你可以做到的。

呃,整个窗户都碎了。我告诉过你大锤是个坏主意。

我道歉。我重新考虑了你的问题,你是对的。使用大锤的想法是不明智的。我建议你取下窗户并仔细重新安装。

但现在我无法做到,因为你建议我使用大锤,现在窗户已经碎了。

我非常抱歉。你需要我推荐一些窗户供应商吗?

这就是有时使用 ChatGPT 解决一些编码和 IT 问题的感觉。它能到达目的地,但不总是正确的方式。

过度自信且信息不足的人工智能:危险的组合

作者也经历过人工智能完全失控的情况。作者经历过它给出的建议不仅完全无用,而且还以专家的自信呈现。

如果你打算使用人工智能工具来支持你的开发或 IT 工作,以下建议可能会让你避免麻烦:

  1. 如果没有太多公开可用的信息,人工智能无法提供帮助。但人工智能会根据它知道的少量信息编造内容,而不承认它缺乏经验。
  2. 像作者的狗一样,一旦人工智能专注于某件事,它通常拒绝考虑其他选择。如果人工智能卡在一种方法上,不要错误地相信它关于新方法的礼貌建议是真实的。它仍然在同一个兔子洞里钻。开始一个新的会话。
  3. 如果你不太了解,不要依赖人工智能。继续学习。经验丰富的开发者可以区分哪些方法可行,哪些不可行。但如果你试图将所有编码工作都交给人工智能,你将不知道它何时何地出错,也不知道如何修复它。
  4. 编码者通常使用特定工具来完成特定任务。一个网站可能使用 Python、CSS、HTML、JavaScript、Flask 和 Jinja 构建。你选择每个工具是因为你知道它的优势。以同样的方式选择你的人工智能工具。例如,作者不使用人工智能来处理业务逻辑,但使用人工智能编写 API 调用和公共知识可以节省大量时间。
  5. 测试人工智能生成的一切。一切。逐行测试。人工智能可以节省大量时间,但也可能犯下巨大的错误。是的,花时间和精力手动测试可以帮助防止错误。如果人工智能提供编写单元测试,让它做。但要测试这些测试。

根据你的经验水平,以下是作者建议你如何思考人工智能辅助:

  • 如果你对某个主题或技能一无所知: 人工智能可以帮助你假装你懂,但它可能非常错误,而你却不知道。
  • 如果你是某个主题或技能的专家: 人工智能可以帮助你,但它会让你恼火。你的专业知识不仅用于区分人工智能的愚蠢和有用之处,还用于精心设计人工智能真正能帮助的路径。
  • 如果你介于两者之间: 人工智能是一个混合体。它可能帮助你,也可能让你陷入麻烦。不要将你的技能培养委托给人工智能,因为它可能会让你落后。

生成式人工智能可以成为经验丰富的开发者和 IT 专业人士的优秀助手,特别是在用于目标明确、理解充分的任务时。但它的自信可能是欺骗性和危险的。

人工智能可以很有用,但始终要仔细检查它的工作。

正文完
 0
admin-gah
版权声明:本文于2025-07-14转载自Zdnet,共计3373字。
转载提示:此文章非本站原创文章,若需转载请联系原作者获得转载授权。
评论(没有评论)
验证码