如果你一直让大型语言模型(LLMs)“写出更好的代码”,它们能写出更好的代码吗?

2023 年 11 月,OpenAI 在 ChatGPT 网络界面中添加了让 ChatGPT 从 DALL-E 3 生成图像的功能,引发了一个短暂的 meme 现象,用户让语言模型“让它更X”(X可为任何内容)。文中展示了多个用户让 ChatGPT 处理图像使其变化的例子,如让普通人更“bro”、让圣诞老人更严肃等,该趋势很快消失,因其图像相似且无趣,但用户能明显感觉到变化。
接着探讨用类似技术处理代码的情况,作者之前不喜欢使用 LLM 代码辅助工具,直到 Claude 3.5 Sonnet 因其对各种提示的强遵循性让作者重新思考。
然后进行代码优化实验,以简单的 Python 代码问题为例,通过多次让 Claude 3.5 Sonnet“写更好的代码”进行迭代优化。初始代码符合新手水平,经过多次迭代,代码不断优化,如从函数式到面向对象式,利用多线程、向量化操作、numba 库等进行优化,性能大幅提升,从最初的平均 657 毫秒到最后约 6 毫秒,快了 100 倍。
之后进行更激进的提示工程实验,使用系统提示定义“完全优化”的规则,再次让 Claude 优化代码,代码进一步优化且更简洁,性能提升显著,如从最初平均 11.2 毫秒到最后约 1 毫秒,快了 100 倍左右。但提示工程也可能引入细微错误,如多进程相关问题。
最后总结,让 LLM“写更好的代码”能使代码在功能和速度上提升,提示工程能更快速且稳定地提升性能,但可能引入错误,LLM 虽不能取代软件工程师,但能提供有趣想法和工具建议,实验中还发现 Claude 3.5 Sonnet 未探索的优化角度,如去重和排序等,同时作者还提到用 Rust 进行代码优化等后续工作。

阅读 7
0 条评论