如何為軟件工程優化ChatGPT和其他大模型 原創
譯者 | 陳峻
審校 | 重樓
引言:本文解讀了一份最新研究成果,提供了一些有關軟件工程師如何在軟件工程中使用ChatGPT的任務類型、以及影響其使用體驗等方面的重要因素與推斷。
自ChatGPT發布以來,上至企業、下到軟件工程師都在致力于尋找如何通過使用大語言模型(LLM),來提高工作效率的方法。雖然大多數LLM都能夠為復雜的問題生成代碼示例,但是具體如何將其集成到軟件開發環境的過程,卻各有不同。
在最近的一項??研究??中,來自查爾姆斯理工大學(Chalmers University of Technology)、哥德堡大學(University of Gothenburg)和瑞典RISE研究所的研究團隊,對10家不同公司的24名專業軟件工程師進行了為期一周的跟蹤調查。這些工程師在日常工作中都會使用到ChatGPT。他們的研究結果提供了一些有關軟件工程師如何在軟件工程中使用ChatGPT的任務類型、以及影響其使用體驗等方面的重要因素與推斷。總的說來,這些發現對于那些希望將LLM納入日常工作流程的企業來說,具有非常重要的意義。
ChatGPT的軟件工程任務
這項研究包括了對ChatGPT 3.5各個聊天會話的調查。由結果可知,軟件工程師主要會在如下三類任務中使用LLM:
- 代碼生成和修改:該類別也被研究人員稱為“工件操控(Artifact Manipulation)”,其中包括了:生成、重構和修復代碼等任務。在與ChatGPT的交互中,工件操控約占三分之一。此類交互通常較短,畢竟用戶要么很快地收到了預期結果,要么會直接放棄嘗試。然而,當用戶持續嘗試讓ChatGPT提供源代碼,或糾正其生成的方案中的錯誤時,雙方就會出現較長的對話。
- 專家咨詢:工程師經常會向ChatGPT尋求資源、指導、建議或詳細信息,以協助其完成工作任務。此類互動的目的不是為了獲得具體的解決方案,而是旨在獲得正確方向的提示。因此,在這些互動中,ChatGPT充當了一個虛擬同事的角色,或是比搜索互聯網更為有效的替代方式。而在參與研究的軟件工程師的互動中,此類咨詢的占比為62%。
- 指導和學習:軟件工程師有時會使用ChatGPT獲取與其工作任務相關的、更廣泛的理論或實踐知識。雖然此類對話只占整體互動的一小部分,但是會經常涉及到多個后續跟進的詢問,以理清之前的答案。
優缺點
ChatGPT的最大優勢在于能夠幫助軟件工程師學習到新的概念,畢竟與LLM交流所獲得的專業知識,要比在互聯網上搜索資源容易得多。
這項研究的參與者還使用了ChatGPT,來協助他們進行“頭腦風暴式”會話。也就是說,在軟件的開發、規劃和設計階段,LLM可以協助生成多種可供選擇、且非常有價值的方案與想法。
在另一方面,一些參與者表示他們并不信任AI生成式工具,尤其是在處理公司特定的復雜任務時。這種不信任往往會導致他們對于ChatGPT所提供的任何建議,都要進行徹底的反復檢查,進而使得結果可能適得其反。
另一個重要的問題是缺乏背景。由于LLM并不了解公司的具體信息,因此使用者需要為之提供相關的背景知識。否則,LLM在根據提示編譯和提供上下文時,會增加“摩擦”,進而影響用戶的使用體驗。當然,在某些情況下,出于隱私考慮和公司政策,工程師確實無法共享詳細的信息,這就可能會導致交互的不完整,甚至引發挫敗感。
使用ChatGPT的第三個重要缺點在于減少了團隊的交流和專注度。這往往在其他研究中較少被提及。參與者有時會直接使用聊天機器人,來回答各種問題。而這些問題其實本應由他們的同事來回答,才更為妥當且全面。同時,ChatGPT可能會降低使用者的專注度,畢竟軟件工程師可能會花費更多的時間去調整提示,以生成完美的代碼,而不愿自行修復略有缺陷的輸出。
這對企業意味著什么?
作為一名軟件工程師,您是否應該在日常的軟件工程中利用LLM,來提高自己的工作效率,則完全取決于是否能夠充分放大其優勢并最小化其缺點。上述研究是在ChatGPT 3.5上進行的,而目前ChatGPT 3.5的性能已與GPT-4o和Claude 3 Opus等前沿模型的水平相差甚遠。當前的模型擁有更廣泛的知識,并在防止幻覺和虛假信息方面也更勝一籌。
不過,在企業應用方面,一些涉及到上下文的特定問題,即使用到最前沿的模型也無法很好地解決。例如,無論模型接受了多少訓練,它總會對公司內部的專有信息不甚了解。因此,在工程師與模型進行交互時,如果聊天界面能夠自動向模型提供上下文信息,則將會對用戶體驗的提升起到關鍵性作用。目前,業界已有幾種方法可以做到這一點,其中包括:檢索增強生成(RAG),即上下文信息在發送到模型之前,會被自動添加到用戶的提示中。另外,LLM還可以被集成到用戶的IDE(集成開發環境)中,在回答問題的同時,自動使用代碼和項目文件作為上下文。
另一個有待解決的問題是:隱私和數據共享限制。許多公司對于可與第三方共享的信息種類有著嚴格的規定。這可能會限制工程師與ChatGPT等LLM的互動。目前,一種變通的辦法是使用諸如Llama 3之類的開放模型。與私有模型相比,此類開源社區已經取得了令人矚目的進展。同時,您也可以在自己的服務器上運行它們,并將其集成到自己的基礎架構中,以便確保數據永遠不會離開您的組織。
此外,上述研究也提出了一點:工程師在提示模型時所投入的精力。鑒于使用者提出請求和下達指令的方式,對于LLM性能的影響較大,因此減少提示工程的摩擦,會有助于改善用戶體驗,節省工程師與LLM交互的時間。目前,Anthropic的“提示生成器(Prompt Generator”和DeepMind開發的自動優化提示技術--OPRO,都在此方面表現卓越。
最后,該研究還提到了通過將LLM整合到團隊工作中,可以在一定程度上緩解由于使用ChatGPT所導致的討論分散和聚焦不集中等問題。例如,作為一款新的企業級聊天應用,Glue能夠將LLM作為代理添加到各種討論線程中,從而讓孤立的LLM體驗,升級為將AI代理植入群組對話中的效果。
毫無疑問,LLM將成為軟件工程的重要組成工具,而并非簡單的替代品。為了最大限度地利用好這個“腳手架”,我們需要讓它揚長避短,充分發揮其在互動與生產式方面的優勢。
譯者介紹
陳峻(Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗。
原文標題:How to optimize ChatGPT and other LLMs for software engineering,作者:Ben Dickson
鏈接:https://bdtechtalks.com/2024/05/27/chatgpt-software-engineering/
