這個觀點在卡內基梅隆大學與谷歌研究人員合作文章
《Using an LLM to Help With Code Understanding》
中提出。
論文地址:https://dl.acm.org/doi/abs/10.1145/3597503.3639187
摘要
理解程式碼非常具有挑戰性,尤其是在新且複雜的開發環境中。程式碼註釋和文件可以幫助,但通常資源不足或難以導航。大型語言模型(LLMs)正在徹底改變編寫程式碼的過程。它們是否能同樣助力於理解程式碼?
本研究提供了LLM為基礎的對話型使用者介面的首次研究,該介面直接嵌入IDE(整合開發環境)中,旨在促進程式碼的理解。
我們的IDE外掛使用OpenAI的GPT-3.5-turbo模型查詢四項高階請求,使用者無需編寫明確的提示即可完成這些請求:解釋高亮程式碼段、提供程式碼中使用的API詳情、解釋特定領域的術語以及提供API的使用示例。
該外掛還支援開放式提示,這些提示會自動根據正在編輯的程式對LLM進行上下文化。
我們將這個系統在32位參與者中進行使用者研究評價,結果顯示使用我們的外掛可以比網頁搜尋更加促進任務的完成。
我們還詳細分析了開發人員如何使用我們的系統,以及他們認為系統有用的方式。其中發現,學生和專業人員使用系統及從中獲得的利益有所不同。
我們總結指出,與大型語言模型進行在IDE中直接、無需提示的互動是工具構建者探索的一個有希望的未來方向。
介紹
構建和維護軟體系統需要對程式碼庫有深刻的理解。因此,開發人員要花費大量的時間來搜尋和蒐集他們所需的資訊,並組織和消化他們找到的所需要的資訊。
理解程式碼是一項艱鉅的任務,開發人員需要吸收大量的有關程式碼語義、使用的API細微之處以及相關領域的專業知識的資訊。
這些資訊通常散落在多個來源中,對於開發者,尤其是初學者或那些與不熟悉的API協同工作的開發者來說,要找到需要的資訊會變得非常困難。此外,大部分相關的資訊大多未得到充分的文件化,或者散佈在不同的格式和介質中,最終導致資訊過時。
隨著大型語言模型(LLM)驅動的程式碼生成工具的興起,對程式碼理解的資訊支援的需求顯然也在增加。
這些工具能夠自動生成程式碼,即使是那些程式設計技巧有限或者對特定領域知識瞭解不多的開發者也能獲得有效的結果。然而,這種便利性往往伴隨著代價——開發者可能會得到完全不懂的程式碼。
的確,對LLM程式碼生成工具的早期研究發現,開發人員在除錯由LLM生成的程式碼時會遇到困難,並且很容易感到沮喪。
幸運的是,LLMs(大型語言模型)在這個領域也提供了一個機會,即透過提供面向開發者的即需即用的基於程式碼生成的資訊支援,幫助他們處理遇到的不熟悉程式碼問題。
與一般的網路搜尋查詢相比,LLM(大型語言模型)提示可以讓開發者提供更多的上下文資訊。這實際上能夠使他們獲取到更加精確地符合自己具體需求的資訊。相較於從網路上獲取大量資訊然後再篩選出符合特定需求的內容,使用LLM提示在時間投入上可能更加節省。
開發人員確實開始大規模使用像ChatGPT這樣的基於網路的會話LLM工具來獲取程式設計支援,但這種設定需要他們在切換上下文時再將相關上下文從整合開發環境中複製到聊天系統中以獲得支援。
為了探究生成式資訊支援直接在開發者的程式設計環境中的應用潛力,我們開發了一個名為GILT(Generation-based Information-support with LLM Technology)的原型工具。
GILT能夠生成個性化的、即時的資訊,並將其與使用者的本地編碼環境相結合。我們透過在提供給後臺語言模型(LLM)的提示中融入這些資訊,將這種方法與LLM的互動變得更為自然。這種方式還引入了一種全新的互動方式,無需提供提示。這一設計旨在減輕那些對特定領域或程式設計知識瞭解有限的開發人員在編寫提示時所承受的認知負擔。
鑑於利用大型語言模型(LLM)提供資訊支援(而非僅程式碼生成)的最佳實踐知識尚不充分,我們進行了一項探索性使用者研究,共有32名參與者被分配任務:理解並擴充套件涉及新領域概念以及Python資料視覺化和3D渲染API的陌生程式碼這段充滿挑戰性的任務。我們的研究透過比較在一個程式碼編輯器內部使用帶有LLM助手的效果,在網路瀏覽器中直接搜尋網頁的效果,以及在兩者之間測量任務完成率和程式碼理解程度來進行量化對比。此外,我們透過定性研究參與者如何使用這兩個工具,以及他們對這一新型互動模式的總體滿意度來深入探討。
具體來說,我們回答了以下三個研究問題:
- GILT在面對陌生程式碼時,對開發者理解程度、任務完成時間以及任務完成率的影響有多大?
- 開發人員如何與GILT進行互動,不同參與者之間有何差異?
- 開發人員如何看待GILT的有用性?
我們的結果證實,在使用GILT(Generation-based Information-support with LLM Technology)來完成任務時,相較於進行網頁搜尋,我們確實取得了統計意義上顯著的優勢,顯示了這種資訊支援的實用性。然而,我們並未在時間效率及理解深度上發現同樣的提升,這為我們未來改進留下了空間。我們還發現,這種效益的幅度在學生和專業人士之間有所差異,並對此進行了探討。
結論
我們進行了一項使用者研究,旨在調查使用大型語言模型(LLMs)進行生成式資訊支援以幫助開發者理解程式碼的有效性。藉助我們的內嵌IDE原型工具GILT,我們展示了這種方法顯著增強了開發者完成任務的能力,與傳統的基於搜尋的資訊獲取相比。同時,我們也發現在學生和專業人士之間,開發者可以從工具中獲得的好處程度不同,他們與工具的互動方式也基於自己的學習風格和對其他AI工具的熟悉度不同。