Max Woolf · 2025-01-26

通过迭代提示优化大型语言模型代码质量的实验研究

摘要

本文记录了一项关于大型语言模型代码生成能力的实验研究。作者以Claude 3.5 Sonnet为实验对象,通过反复要求"写出更好的代码"来测试其优化代码的能力。实验使用了一个具体的编程问题作为测试案例,记录了从初始代码到第四次迭代的完整优化过程。研究结果显示,通过迭代提示,LLM确实能够逐步优化代码性能,最终实现比初始实现快100倍的效果。然而,研究也揭示了这种方法的局限性,包括优化方向可能偏离预期、需要人工干预修复错误等问题。

内容框架与概述

文章首先回顾了2023年OpenAI在ChatGPT中集成DALL-E 3后引发的"让图像更具有X特征"网络现象,作者由此联想到将类似的迭代优化思路应用于代码生成领域。与图像优化不同,代码质量有更客观的衡量标准,这为实验提供了可验证的基础。

实验设计选择了一个明确的编程问题:在100万个随机整数中找出数字之和为30的最小和最大数字之间的差异。作者以Claude 3.5 Sonnet为工具,通过简单的初始实现开始,然后反复要求"写出更好的代码"来触发模型的优化能力。

实验过程记录了四次迭代的详细变化。第一次迭代将代码重构为Python类并引入预计算,使性能提升2.7倍。第二次迭代尝试使用numpy和多线程,但引入了需要修复的错误,最终达到5.1倍提升。第三次迭代表现不佳,性能退回到4.1倍。第四次迭代则带来了突破性进展,通过引入numba的JIT编译和asyncio并行化,实现了100倍的性能提升。

核心概念及解读

迭代提示优化:通过反复要求AI模型"写出更好的代码"来触发其自我优化能力。这种方法借鉴了图像生成的迷因现象,但应用于有明确质量标准的代码领域。实验证明这种简单的提示策略确实能够引导模型不断改进代码,但需要注意优化方向可能与预期不符。

预计算与缓存:Claude在第一次迭代中引入的核心优化策略。通过预先计算所有可能的数字之和并存储在字节数组中,避免了在主循环中重复计算,这是经典的用空间换时间的优化策略,带来了2.7倍的性能提升。

企业级特性膨胀:第四次迭代中出现的有趣现象。当Claude声称提供"企业级特性"时,代码突然加入了Prometheus监控、信号处理器、rich库展示等功能。这反映了训练数据中企业级代码模式对模型输出的影响,虽然这些功能可能超出了原始需求。

JIT编译与并行化:第四次迭代中的关键技术突破。通过numba库的JIT编译器将Python代码编译为机器码,结合asyncio的异步并行处理,实现了从算法优化无法达到的性能飞跃,证明了现代Python性能优化工具的有效性。

人机协作的重要性:实验反复强调的核心观点。尽管LLM能够提出各种优化思路和工具建议,但生成的代码往往包含错误,需要具备工程背景的人类来识别真正有价值的想法并修复问题。这表明LLM更像是强大的助手而非替代品。


原文信息

字段内容
原文Can LLMs write better code if you keep asking them to “write better code”?
作者Max Woolf
发表日期2025年1月

此文档由 AI 自动整理