七種方式讓你的AI編碼結(jié)果更靠譜 原創(chuàng)
企業(yè)在積極引入AI的同時,也希望雇用更多工程師,期望開發(fā)者能夠借AI之力將產(chǎn)出“提升10倍”。但要真正高效運(yùn)用AI編碼助手,其中也有不少門道。
首先是AI編碼助手的固有局限,其存在大量不確定性,因此容易引發(fā)種種難以避免的意外行為,例如隨機(jī)刪除代碼或引入邏輯錯誤。
此外,驅(qū)動編碼助手的大模型本身也有問題。一旦使用不當(dāng),大模型也可能成為代碼刪除或者安全漏洞的來源。此外,AI智能體還經(jīng)常陷入遞歸循環(huán)乃至無休止的測試循環(huán)當(dāng)中,嚴(yán)重影響生產(chǎn)效率。
那么對于AI輔助開發(fā)這一未知領(lǐng)域兼全新技能類型,開發(fā)者和技術(shù)領(lǐng)導(dǎo)者們該如何破局?以下七種方式也許能夠帶來一點(diǎn)啟示。
1.改善提示詞技巧
Sonar公司首席業(yè)務(wù)增長官Harry Wang認(rèn)為,“有效運(yùn)用AI編碼助手的第一步,是從清晰、定義明確的提示詞開始,這也是解開代碼庫復(fù)雜性的鑰匙?!?/p>
- 元提示:在提示詞中嵌入指令,幫助模型完成任務(wù)。?
- 提示詞鏈:創(chuàng)建鏈?zhǔn)教崾驹~工作流,改善規(guī)范與規(guī)劃效果。?
- 一次性提示詞:在提示詞中包含輸出參考,例如示例代碼結(jié)構(gòu)。?
- 系統(tǒng)提示詞:更新底層系統(tǒng)提示詞以反映項(xiàng)目特定需求。?
低質(zhì)量提示詞往往成為安全隱患的來源,因此必須認(rèn)真磨練這項(xiàng)技能。相關(guān)研究發(fā)現(xiàn),在十項(xiàng)常見弱點(diǎn)枚舉(CWE)攻擊方法中,低效提示詞至少會被其中四項(xiàng)攻破。
2.保持人類參與
根據(jù)BlueOptima發(fā)布的2024年《生成式AI對軟件開發(fā)者績效影響》報告,“適度”使用生成式AI的開發(fā)者表現(xiàn)最佳(報告分析了來自21萬8354名企業(yè)軟件開發(fā)者的總計8.8億項(xiàng)提交成果)。
報告指出,最佳結(jié)果源自AI輔助與人類專業(yè)知識間的最佳平衡。在實(shí)踐中,代碼編寫和驗(yàn)證工作可以交給AI,項(xiàng)目設(shè)計與最終審批則更適合人類。
3.為工作內(nèi)容選擇正確的大模型
只有在準(zhǔn)確性、速度和成本等指標(biāo)上綜合最優(yōu)的大模型,才是最適合特定需求的選項(xiàng)。
在LLM Stats公布的排行榜中,Anthropic Claude 3.5 Sonnet的編碼能力在HumanEval基準(zhǔn)上得分最高。此外,Claude在安全性方面同樣名列前茅。研究發(fā)現(xiàn),Claude 3.7 Sonnet生成的代碼比OpenAI GPT-4o和谷歌Gemini的輸出結(jié)果更安全。
與此同時,OpenAI o3的知識儲備最為豐富,DeepSeek R1的推理能力則一舉登頂。此外,Gemini 1.5 Pro提供最大的token窗口,Lambda擁有最高的性價比。
4.以迭代方式編程并測試
專家建議逐步開發(fā)AI代碼。Honeycomb公司聯(lián)合創(chuàng)始人兼CTO Charity Majors表示,“一定要將代碼變更的規(guī)??刂频帽M量更低。千萬不要一次性生成整個網(wǎng)站、API或者功能?!?/p>
Layered Sysetm公司API策略師Kevin Swiber則提到,如果大家正在處理一個3000行的代碼文件,那一定要進(jìn)行拆分。這時候直接使用AI重構(gòu)將帶來巨大風(fēng)險,因?yàn)锳I經(jīng)常會無故刪除或者移動代碼,所以“一定保證只用AI對細(xì)節(jié)做優(yōu)化,阻止直接把大問題交給它?!?/p>
因此,Majors建議從端點(diǎn)、組件或者任務(wù)著手,之后逐步由AI生成測試、運(yùn)行測試并生成更多代碼。
5.提前規(guī)劃
除了直接在代碼編輯器中使用GitHub Copilot、Cursor或者Continue等工具獲取建議,開發(fā)者也可以在行動之初就規(guī)劃好一切。Swiber建議使用Markdown文件為AI助手編寫一份完整計劃,借此明確項(xiàng)目目標(biāo)并詳細(xì)說明進(jìn)度安排。另外,最好能備份原始文件,以便隨時恢復(fù)到之前的可用版本。
Swiber強(qiáng)調(diào),“要提前規(guī)劃并留下線索,方便自己和智能體靈活參考?!痹儆?,可以使用明確的行內(nèi)注釋為智能體提供指引,例如“不要修改這些代碼行。”
6.測試、測試、還是測試
對于將要投入生產(chǎn)的AI生成代碼,一定要進(jìn)行徹底審查。Majors強(qiáng)調(diào),“永遠(yuǎn)不要發(fā)布自己不理解的東西?!?/p>
Sonar公司的Wang表示,“哪怕代碼是由AI生成,最終也還是要由人類對其質(zhì)量和安全性負(fù)責(zé)?!?/p>
Graphite公司CEO兼聯(lián)合創(chuàng)始人Merrill Lutsky認(rèn)為,“AI生成的代碼更需要嚴(yán)格審查和測試,以保證其正確性、高性能與安全性?!?/p>
在這方面,Lutsky認(rèn)為AI造成的問題也完全可以由AI來解決。他認(rèn)為可以使用AI智能體簡化DevOps流程、自主完成審查及測試流程,并根據(jù)需要引入人為干預(yù),借此不斷提升CI/CD的執(zhí)行效率。
7.關(guān)注數(shù)據(jù)訪問
另一項(xiàng)重點(diǎn),是為AI提供適當(dāng)?shù)纳舷挛?。Cockroach Labs公司CEO Spencer Kimball表示,“只有AI獲得了足夠的信息,才能做出合理的判斷。”當(dāng)前模型在上下文窗口和外部數(shù)據(jù)訪問能力方面仍有局限,但開發(fā)者可以直接用內(nèi)部數(shù)據(jù)、文檔乃至整個項(xiàng)目作為素材進(jìn)行大模型微調(diào),借此確保公共大模型也能體會項(xiàng)目中的細(xì)微差別。
更重要的是,Kimball認(rèn)為這將成為以開源為核心的年輕技術(shù)企業(yè)們的絕佳機(jī)遇,因?yàn)樗麄兊脑创a和設(shè)計文檔都會公開交付給大模型。
大模型在連接性方面也取得了重大進(jìn)展。例如,OpenAI的智能體SDK與Anthropic模型上下文協(xié)議(MCP)在將AI與工具、數(shù)據(jù)源及其他AI對接方面取得了長足進(jìn)步。
未來展望
AI編碼應(yīng)用正邁向成熟期,每位開發(fā)者都應(yīng)當(dāng)盡早體驗(yàn)這些工具。Swiber強(qiáng)調(diào),“在擅長的方面,AI編碼助手確實(shí)能節(jié)約下大量時間?!?/p>
如今的AI編碼助手不再是實(shí)驗(yàn)室里的玩具,而開始成為企業(yè)開發(fā)流程中的標(biāo)準(zhǔn)。Gartner預(yù)計到2028年,75%的企業(yè)軟件工程師將使用AI編碼助手。
中小型企業(yè)將在這波浪潮中獲得顯著推動。Kimball認(rèn)為在AI時代下,十幾個員工支撐起年度經(jīng)常性收入高達(dá)1億美元企業(yè)將不再是夢想。
但要讓這一切成為現(xiàn)實(shí),開發(fā)者必須掌握新的工具駕馭智慧、建立真正高效的新型工作流。希望以上七條建議,能夠成為大家擁抱AI編碼時代的起點(diǎn)。
原文標(biāo)題:??7 ways to improve your AI coding results??,作者:Bill Doerrfeld
