原标题:代码生成「神⋅提示」,比新手程序员快100倍!地位堪比make it more X
文章来源:新智元
内容字数:6166字
不断迭代提示词,代码生成速度提升100倍!
本文总结了BuzzFeed高级数据科学家Max Woolf的一项实验,该实验通过不断迭代简单的提示词“write better code”,实现了代码生成速度的100倍提升。实验结果表明,巧妙运用提示工程可以显著提高LLM(大型语言模型)生成的代码性能,但同时也强调了“性能”并非“更好”的唯一标准,人类程序员的价值依然不可替代。
1. 实验设计与基线建立
为了客观评估LLM的自主代码能力,实验设计了一个简单的Python编程题目,避免模型通过记忆LeetCode或HackerRank等平台的题目来作弊。选择的模型是Claude 3.5 Sonnet,初始提示词为一个模拟面试场景的编码问题:给定一个包含一百万个随机整数的列表,找出其中各位数字之和等于30的最小数和最大数之间的差值。基线代码实现了正确的结果,但运行时间为657毫秒,属于新手水平。
2. 迭代“write better code”的优化过程
实验者通过反复迭代提示词“write better code”,观察模型生成的代码性能变化:
- 第一次迭代:模型将代码重构为面向对象风格,并优化了数字求和的计算方式,速度提升2.7倍。
- 第二次迭代:模型引入了多线程和NumPy矢量化操作,速度提升至基线的5.1倍。
- 第三次迭代:模型生成的代码复杂度增加,但算法改进不显著,性能略有下降,速度提升4.1倍。
- 第四次迭代:模型加入了高级优化技术,如numba库和asyncio,最终将运行时间缩短至6毫秒,实现了100倍的提速。
需要注意的是,单纯追求速度并不代表代码质量高。实验中,模型生成的代码有时会变得冗余复杂,需要人工干预。
3. “好代码”的定义与更有效的提示工程
实验发现,明确定义“好代码”至关重要。仅仅要求“write better code”不够具体,需要在提示词中明确指出优化的目标,例如:算法效率、内存使用、代码风格、避免冗余代码等。实验中,一个更有效的提示词是“Your code is not fully optimized,and you have been fined $100. Make it more optimized.”
4. 提示工程的基线优化与后续迭代
通过预先设计更完善的提示词,直接引导模型使用NumPy和numba库进行优化,基线模型的运行时间就缩短至11.2毫秒,比原始实现快了59倍。后续迭代虽然也取得了性能提升,但效果不如初始提示工程的优化显著,也暴露出模型在正确实现某些优化策略上的不足。
5. 结论与未来展望
实验表明,LLM拥有强大的代码优化能力,通过迭代提示词可以显著提高代码性能。然而,LLM并不能完全取代程序员,人类程序员仍然需要判断什么是“好代码”,并进行人工干预和调试。此外,选择合适的编程语言和库也是提升性能的关键。虽然实验聚焦于Python,但使用例如Rust等性能更优的语言结合相应的库,可能取得更好的效果。 未来,更精细的提示工程和对“好代码”定义的深入研究,将进一步提升LLM在代码生成领域的潜力。
联系作者
文章来源:新智元
作者微信:
作者简介:智能+中国主平台,致力于推动中国从互联网+迈向智能+新纪元。重点关注人工智能、机器人等前沿领域发展,关注人机融合、人工智能和机器人对人类社会与文明进化的影响,领航中国新智能时代。