通義靈碼實戰系列:一個新項目如何快速啓動,如何維護遺留系統代碼庫?

作者:別象

進入 2024 年,AI 熱度持續上升,翻閱科技區的文章,AI 可謂是軍書十二卷,卷卷有爺名。而麥肯錫最近的研究報告顯示,軟件工程是 AI 影響最大的領域之一,AI 已經成爲了軟件工程的必選項,也有研究稱開發者每天的事務性工作可能佔到了七成左右,比如單側編寫等,而這部分恰好是 AI 所擅長的。讓大模型輔助工程師加速編碼和提升質量,可以讓我們更加聚焦於剩下的 30% 的業務和技術創新。

日常工作中經常聽到工程師的一些訴求和痛點。比如說單元測試編寫比較費時間;接手了一個新的代碼庫,一些祖傳代碼理解成本比較高;排查問題查資料要跳轉到一些瀏覽器,並且很難找到合適的答案,會顯得焦頭爛額。我作爲智能編碼研究者,同時也是開發者,這次終於能夠華佗打點滴,醫者自醫了。

總結下來,開發者的主要訴求有三點,1)快速編碼,快速解決問題,快速完成需求。2)減少 IDE 跳出,享受沉浸式心流。3)減少重複編碼,排除語言限制。

比如我要做一個網頁,雖然我不懂前端,但在大模型輔助下,可以幫助我編寫 HTML 和 JS 的代碼,這樣我能夠更加聚焦於業務的實現和創新。一句話概括來講就是開發者來 IDE 只幹三件事,寫代碼,寫代碼還是寫代碼,通義靈碼便是以編碼助手的形態來幫助開發者提質和提效的。

通義靈碼的核心功能有行級/函數級的自動續寫、自然語言編碼、註釋生成、單元測試生成、代碼解釋、代碼優化、異常報錯、智能排查、技術文檔搜索等等。同時它也提供了企業化個性能力,比如報表展示以及專有云的各種部署形態。

通義靈碼支持 Java、Python、Go 等 200 多種主流編程語言,目前已經在 VS Code 和 JetBrains 全家桶 IDE 上的插件市場上架了,大家訴求很高的 Visual Studio 也即將在下個月上架, 並且這些 IDE 的遠程開發模式也都是支持的,比如說 Remote、SSH、WSL 等等。

總體來講通義靈碼是基於通義大模型,結合海量開源知識以及阿里雲的文檔 SDK 開發的,從而有了上層的代碼補全和研發問答的核心能力。再上層便是我們工程側,比如說有問答意圖識別、用戶習慣學習、Prompt 工程、跨文件學習等等。從基模到垂直領域的模型,再到端側核心能力的整體同步建設,支撐了我們在 IDE 上可以使用通義靈碼這款產品。

通義靈碼能力展示

有同學會問了,紙上得來終覺淺,來點實戰行不行?

01/ 使用 Spring Boot 創建一個新項目

接下來就使用 Spring Boot 創建一個新項目作爲案例向大家展示通義靈碼的能力。首先我們向靈碼提問:如何通過 Spring Boot 編寫一個照片上傳下載的 Web 程序?靈碼馬上就能反應過來並開始生成,先是編寫 Spring Boot 的 XML 文件以及一些數據結構配置文件,接着寫 controller 層、service 接口以及 service 的實現類,大家會看到 AI 寫代碼的速度是很快的,並且思路非常清楚,知道需要哪些文件以及步驟,以及怎麼把 Web 服務給部署起來。

我們可以隨時隨地和靈碼通過問答的方式來交互。 如果你對它的回答有任何的不滿意,或者是想讓靈碼擴充一些比較概括性的代碼,讓它續寫一下,再或者是遇到了某種報錯或特別的訴求尋找解決方案等等,都可以通過追問的方式進一步和靈碼溝通,靈碼會很樂意在問答的的過程中爲你提供幫助。

比如我提問有沒有通過 memory 的內存的數據庫來存儲的例子,而不是用 mysql 數據庫,靈碼就可以領會我的意思,並提供一個 redis 的方案來做這個存儲。

02/ 維護遺留系統代碼庫

另外一個比較常見的場景是我們作爲工程師會經常去維護別人留下來的一個老舊系統,可能裏面也會有一些祖傳代碼。那麼靈碼解釋代碼這樣一個預知任務的能力就可以更好的得到體現了。

比如說有這樣一段代碼,if else 非常多,也比較雜亂。我們可以點擊方法上方的一個快捷入口,讓靈碼解釋一下。這裏我們有一個設計,就是靈碼會首先給出一個相對比較簡短的 high level 解釋,幫助開發者能更快的理解這段代碼的意思。如果開發者想要更加具體的一些解釋,可以通過我們底下的追問按鈕有更詳細的回答,英文系統叫 in detail,靈碼會給出更加具體的解釋。

單元測試也是個老生常談的話題,人人都知單測好,但是能真正做到的又不多。單元測試可以提高代碼的可維護性,讓代碼更加健壯,並且其他人來接手的時候也可以更好維護一些,但是工程師的日常開發需求會更大一些。

單測客觀上講,在短期內是肯定是相對費時間的一件事情,但很多開發者就會往往追求短期的省事,而拋棄了遠期的利益。而靈碼就可以更加快速的幫助工程師來編寫單元測試,提高單測的覆蓋率,提升代碼庫的可維護性。

代碼優化也是一個高頻場景,之前有很多用戶的訴求,希望有這樣一個能力。用戶可以通過框選右鍵,也可以點擊方法上方的快捷入口來觸發代碼優化。不過客觀上講,代碼優化它是一個很寬泛的詞,它設計了風格優化、缺陷修復、程序重構、安全性優化等等。所以我們也在盡我們所能來提升代碼優化的模型能力,讓開發者的代碼質量更高。

最後介紹一下我們的運行調試錯誤排查能力。當 IDE 遇到一些 runtime 報錯的時候,靈碼會在報錯堆棧中提供一鍵排錯的功能,點擊一鍵排錯的按鈕後靈碼會自動的採集報錯堆棧,並定位到出錯代碼的上下文,幫助用戶生成一個報錯排查的提示詞來提問模型,尋求解決方案。這個功能目前在 IDEA 和 Java 中放開,後續也會在各個端側和各個語言中放出。

通義靈碼的產品亮點及優勢

首先通義靈碼產品特別關注開發者的體驗,開發者是我們的用戶。我們針對 IDE 的原生視覺做了很多交互設計上的努力,來貼合開發者的使用習慣。同時在編碼過程中,通過補全的觸發時機、長度選擇、模型速度等層面都做了處理,助力開發者的編碼心流體驗。

朱熹老先生說過,讀書有三到,謂心到眼到口到。對於靈碼來說,要生成的準,需要:

  • 一是修煉內在,強大模型,學習更多的優質數據,比如阿里雲自身的一些 SDK 跟 OpenAPI。
  • 二是提示詞工程,用精雕細琢的提示詞配合模型訓練,使生成的效果加倍提升。
  • 三是眼觀六路,比如真實的開發者要寫對下一行代碼,不光要眼看當前文件的上下文,也要知道一些跨文件信息,比如調用另一個文件中的某個方法,這樣可以減少一些幻覺問題的出現。

最重要的,也是開發者比較關注的安全可控因素。通義靈碼在大模型的生成過程中,所有代碼數據僅會用於模型推理,中間不會做任何存儲,更不會用來訓練。同時我們也提供了兩個模型,一個是雲端大模型,另外一個是純本地運行的小模型,不聯網、速度快。這兩種模型支持一鍵切換,滿足我們在不同網絡環境以及不同的補全強度訴求下的編碼需求。

點擊此處,快速體驗通義靈碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章