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