提示“编写更好的代码”可让生成的代码快100倍

一个简单的“编写更好的代码”请求帮助 Sonnet 3.5 编写出比第一次尝试快 100 倍的代码,同时添加了企业软件中常见的意外(和不想要的)功能。

BuzzFeed 高级数据科学家Max Woolf 最近进行了一项实验:当你反复告诉 Claude 3.5“编写更好的代码”时会发生什么?结果令人惊讶:

  • -不仅仅是在性能提升方面,
  • 而且在 LLM 决定“更好”的含义方面。

Woolf 从一个经典的编程挑战开始:编写 Python 代码,在 1 到 100,000 之间的一百万个随机数中找出数字和为 30 的最大数与最小数之间的差值。在获得 Claude 的第一个解决方案后,他只是不断提示它“编写更好的代码”。

结果令人震惊。原始代码运行耗时 657 毫秒。到最后一次迭代时,时间缩短到仅 6 毫秒 - 速度提高了 100 倍。但原始性能并不是唯一令人惊讶的。

企业功能突然出现 在第四次也是最后一次“编写更好的代码”迭代中,Claude 自发地将代码转换为看起来像企业应用程序的代码,无需要求即可添加典型的企业功能。这表明大模型以某种方式将“更好的代码”概念与“企业级软件”联系起来 - 这是了解其培训的一个有趣窗口。

开发人员Simon Willison 解释了这种迭代改进为何有效:像 Claude 这样的语言模型每次遇到新提示时都会重新开始 - 它们不会像人类一样随着时间的推移积累知识或记忆。

当被要求“编写更好的代码”时,Claude 会将之前的整个对话作为上下文,但会像分析第一次看到的不熟悉代码一样对其进行分析。

这解释了持续的改进——LLM 每次都以全新的眼光看待代码,不受以前的尝试或对“正确”解决方案的先入之见的限制。

提示工程Prompt Engineering 不会消失 当Woolf 再次尝试更具体的提示时,他更快地获得了更好的结果,但遇到了需要人工修复的细微错误。他强调,精心设计提示是值得的,并认为随着人工智能模型变得越来越复杂,精确的指导变得越来越重要,而不是越来越不重要。

尽管这既违反直觉又无趣,但向大模型 (LLM) 提出少量指导,具体询问你想要什么,甚至给出几个你想要的例子,将客观上提高大模型 (LLM) 的产出,而不是构建上述提示所需的努力。