如果你要求的话,大型语言模型 (LLM) 会编写出更好的代码,尽管需要一些软件开发经验才能有效地做到这一点,这限制了人工智能代码帮助对新手的效用。
Buzzfeed 高级数据科学家 Max Woolf 周四表示发表LLM提示中的一个实验,看看LLM是否可以根据需要优化他们建议的代码。
伍尔夫解释说,“如果代码确实可以通过迭代提示来改进,例如要求法学硕士‘让代码变得更好’——尽管这很愚蠢——那么这将是生产力的巨大提高。如果是这样的,如果你对代码进行过多的迭代会发生什么?”
事情是这样的:Anthropic 的 Claude 的任务是编写 Python 代码,在给定 1 到 100,000 之间的一百万个随机整数的列表的情况下,找出数字总和为 30 的最小数字和最大数字之间的差异。和法学硕士返回了一个有效的功能解决方案。
这初始解Woolf 将其描述为新手程序员可能会编写的内容,在 Apple M3 Pro Macbook Pro 上运行平均需要 657 毫秒。
当被要求“编写更好的代码”时,Claude 给出了执行速度提高 2.7 倍的优化代码。
再次被问及时,Claude 进行了进一步的改进,返回了包含多线程的代码,与最初的实现相比,性能提高了 5.1 倍,尽管这是以产生需要修复的错误为代价的。
第三次和第四次迭代产生了进一步的增益,分别实现了 4.1 倍和 99.7 倍的加速。
然后,伍尔夫使用“即时工程”重复了该实验,这只是意味着向法学硕士提供有关预期内容和如何进行的更多详细信息。这在一定程度上是通过修改 Claude 系统提示来完成的,可以通过 API 来设置 LLM 规则,以执行诸如使用某些代码效率策略之类的操作。
“虽然这既违反直觉又无趣,但向法学硕士具体询问你想要什么的少量指导,甚至给出一些你想要什么的例子,客观上会比构建所述提示所需的努力更多地提高法学硕士的产出,”伍尔夫在他的文章中指出。
这及时的工程结果生成了更复杂、更快的代码,但错误更多。
“总而言之,要求法学硕士‘更好地编写代码’确实会让代码变得更好,这取决于你对更好的定义,”伍尔夫总结道。“通过使用通用迭代提示,代码在附加功能和速度方面确实比基本示例有了客观的改进。
“及时的工程可以更快、更一致地提高代码的性能,但更有可能引入微妙的错误,因为 LLM 没有针对生成高性能代码进行优化。与任何使用 LLM 一样,您的里程可能会有所不同,并且在最终,无论人工智能炒作者如何经常将法学硕士视为魔法,它都需要人性化来解决不可避免的问题。”
伍尔夫的结论是,法学硕士不会很快取代软件工程师,因为软件工程背景对于区分优秀代码和理解特定领域的约束是必要的。
东北大学、韦尔斯利学院和欧柏林学院的计算机科学家最近发表的一篇研究论文为这一观点提供了支持。这纸题为“实质胜过风格:为什么初学者无法通过法学硕士进行编码”,研究了提示风格(单词的排列)还是提示实质(用于构建问题的术语)更重要。“总的来说,我们的研究结果支持提示的信息内容比措辞更重要的观点,”作者 Francesca Lucchetti、Zixuan Wu、Arjun Guha、Molly Q Feldman 和 Carolyn Jane Anderson 总结道。
换句话说,要从法学硕士那里得到好的答案,在调查主题上拥有强大的背景是有帮助的。
因此,有经验的开发人员向法学硕士寻求帮助会比新手获得更好的结果。®