代碼生成「神?提示」,比新手程序員快100倍!地位堪比make it more X
原標(biāo)題:代碼生成「神?提示」,比新手程序員快100倍!地位堪比make it more X
文章來(lái)源:新智元
內(nèi)容字?jǐn)?shù):6166字
不斷迭代提示詞,代碼生成速度提升100倍!
本文總結(jié)了BuzzFeed高級(jí)數(shù)據(jù)科學(xué)家Max Woolf的一項(xiàng)實(shí)驗(yàn),該實(shí)驗(yàn)通過(guò)不斷迭代簡(jiǎn)單的提示詞“write better code”,實(shí)現(xiàn)了代碼生成速度的100倍提升。實(shí)驗(yàn)結(jié)果表明,巧妙運(yùn)用提示工程可以顯著提高LLM(大型語(yǔ)言模型)生成的代碼性能,但同時(shí)也強(qiáng)調(diào)了“性能”并非“更好”的唯一標(biāo)準(zhǔn),人類(lèi)程序員的價(jià)值依然不可替代。
1. 實(shí)驗(yàn)設(shè)計(jì)與基線(xiàn)建立
為了客觀評(píng)估LLM的自主代碼能力,實(shí)驗(yàn)設(shè)計(jì)了一個(gè)簡(jiǎn)單的Python編程題目,避免模型通過(guò)記憶LeetCode或HackerRank等平臺(tái)的題目來(lái)作弊。選擇的模型是Claude 3.5 Sonnet,初始提示詞為一個(gè)模擬面試場(chǎng)景的編碼問(wèn)題:給定一個(gè)包含一百萬(wàn)個(gè)隨機(jī)整數(shù)的列表,找出其中各位數(shù)字之和等于30的最小數(shù)和最大數(shù)之間的差值。基線(xiàn)代碼實(shí)現(xiàn)了正確的結(jié)果,但運(yùn)行時(shí)間為657毫秒,屬于新手水平。
2. 迭代“write better code”的優(yōu)化過(guò)程
實(shí)驗(yàn)者通過(guò)反復(fù)迭代提示詞“write better code”,觀察模型生成的代碼性能變化:
- 第一次迭代:模型將代碼重構(gòu)為面向?qū)ο箫L(fēng)格,并優(yōu)化了數(shù)字求和的計(jì)算方式,速度提升2.7倍。
- 第二次迭代:模型引入了多線(xiàn)程和NumPy矢量化操作,速度提升至基線(xiàn)的5.1倍。
- 第三次迭代:模型生成的代碼復(fù)雜度增加,但算法改進(jìn)不顯著,性能略有下降,速度提升4.1倍。
- 第四次迭代:模型加入了高級(jí)優(yōu)化技術(shù),如numba庫(kù)和asyncio,最終將運(yùn)行時(shí)間縮短至6毫秒,實(shí)現(xiàn)了100倍的提速。
需要注意的是,單純追求速度并不代表代碼質(zhì)量高。實(shí)驗(yàn)中,模型生成的代碼有時(shí)會(huì)變得冗余復(fù)雜,需要人工干預(yù)。
3. “好代碼”的定義與更有效的提示工程
實(shí)驗(yàn)發(fā)現(xiàn),明確定義“好代碼”至關(guān)重要。僅僅要求“write better code”不夠具體,需要在提示詞中明確指出優(yōu)化的目標(biāo),例如:算法效率、內(nèi)存使用、代碼風(fēng)格、避免冗余代碼等。實(shí)驗(yàn)中,一個(gè)更有效的提示詞是“Your code is not fully optimized,and you have been fined $100. Make it more optimized.”
4. 提示工程的基線(xiàn)優(yōu)化與后續(xù)迭代
通過(guò)預(yù)先設(shè)計(jì)更完善的提示詞,直接引導(dǎo)模型使用NumPy和numba庫(kù)進(jìn)行優(yōu)化,基線(xiàn)模型的運(yùn)行時(shí)間就縮短至11.2毫秒,比原始實(shí)現(xiàn)快了59倍。后續(xù)迭代雖然也取得了性能提升,但效果不如初始提示工程的優(yōu)化顯著,也暴露出模型在正確實(shí)現(xiàn)某些優(yōu)化策略上的不足。
5. 結(jié)論與未來(lái)展望
實(shí)驗(yàn)表明,LLM擁有強(qiáng)大的代碼優(yōu)化能力,通過(guò)迭代提示詞可以顯著提高代碼性能。然而,LLM并不能完全取代程序員,人類(lèi)程序員仍然需要判斷什么是“好代碼”,并進(jìn)行人工干預(yù)和調(diào)試。此外,選擇合適的編程語(yǔ)言和庫(kù)也是提升性能的關(guān)鍵。雖然實(shí)驗(yàn)聚焦于Python,但使用例如Rust等性能更優(yōu)的語(yǔ)言結(jié)合相應(yīng)的庫(kù),可能取得更好的效果。 未來(lái),更精細(xì)的提示工程和對(duì)“好代碼”定義的深入研究,將進(jìn)一步提升LLM在代碼生成領(lǐng)域的潛力。
聯(lián)系作者
文章來(lái)源:新智元
作者微信:
作者簡(jiǎn)介:智能+中國(guó)主平臺(tái),致力于推動(dòng)中國(guó)從互聯(lián)網(wǎng)+邁向智能+新紀(jì)元。重點(diǎn)關(guān)注人工智能、機(jī)器人等前沿領(lǐng)域發(fā)展,關(guān)注人機(jī)融合、人工智能和機(jī)器人對(duì)人類(lèi)社會(huì)與文明進(jìn)化的影響,領(lǐng)航中國(guó)新智能時(shí)代。