原標題:代碼生成「神?提示」,比新手程序員快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在代碼生成領域的潛力。
聯系作者
文章來源:新智元
作者微信:
作者簡介:智能+中國主平臺,致力于推動中國從互聯網+邁向智能+新紀元。重點關注人工智能、機器人等前沿領域發展,關注人機融合、人工智能和機器人對人類社會與文明進化的影響,領航中國新智能時代。