演講嘉賓 | 石 琳
回顧整理 | 廖 濤
排版校對 | 李萍萍
嘉賓介紹
石琳,北京航空航天大學(xué)軟件學(xué)院教授,CCF高級(jí)會(huì)員,2022年度中國科學(xué)院軟件研究所杰出青年科技人才。研究方向?yàn)?a target="_blank">智能軟件工程,包括代碼智能、智能需求工程、經(jīng)驗(yàn)軟件工程、開源軟件、可信AI等。曾在軟件工程、人工智能領(lǐng)域的高水平國際會(huì)議發(fā)表論文50余篇,三次獲得杰出論文獎(jiǎng);主持參與多項(xiàng)國家自然科學(xué)基金項(xiàng)目、國家重點(diǎn)研發(fā)項(xiàng)目等;擔(dān)任多個(gè)國際知名會(huì)議期刊審稿人。
視頻回顧
打開嗶哩嗶哩APP,觀看更清晰視頻
正文內(nèi)容
隨著AI大模型能力的大幅提升,軟件開發(fā)已經(jīng)逐步走向新智能化時(shí)代。然而,目前代碼大模型在可靠性、隱私和合規(guī)以及用戶意圖識(shí)別等方面仍存在一定局限性。如何基于交互式需求澄清方法,讓大模型更好地理解用戶意圖,并給出更準(zhǔn)確的答案?北京航空航天大學(xué)教授石琳在第二屆OpenHarmony技術(shù)大會(huì)上進(jìn)行了精彩分享。
2022年11月,OpenAI發(fā)布ChatGPT,利用GitHub數(shù)據(jù)與RLFH強(qiáng)化學(xué)習(xí)技術(shù),在輔助編程取得進(jìn)展;2023年1月,微軟Copilot平臺(tái)用戶超過1億,CEO表示Copilot很快就會(huì)替代程序員完成80%的代碼開發(fā)。在GitHub的報(bào)告中,使用Copilot的開發(fā)者的開發(fā)效率幾乎提升了一倍,一個(gè)用Copilot的初學(xué)者就能夠像專業(yè)程序員一樣,從零開始開發(fā)出最小可行產(chǎn)品程序。此外,清華大學(xué)推出的ChatDev項(xiàng)目,支持多個(gè)智能體分工合作,能夠根據(jù)用戶指令生成休閑小游戲、效率管理工具、繪畫板、數(shù)學(xué)計(jì)算器、網(wǎng)絡(luò)爬蟲等軟件。
通過前文可知,代碼大模型在軟件開發(fā)方面“一鳴驚人”,給開發(fā)者們帶來了極大的便利。但是,代碼大模型的快速發(fā)展同時(shí)也帶來了新的問題,如:
模型問題:可靠性、幻覺、更新、形式重于內(nèi)容
數(shù)據(jù)問題:數(shù)據(jù)演化、質(zhì)量問題、安全問題、隱私和合規(guī)
應(yīng)用問題:用戶意圖不明確、復(fù)雜問題抽象和分解、項(xiàng)目上下文、領(lǐng)域?qū)I(yè)知識(shí)、遺留系統(tǒng)維護(hù)
其中,用戶的意圖表述不明確是代碼大模型在實(shí)踐中遇到的巨大阻礙。開發(fā)者想寫出一個(gè)清晰明確且全面的Prompt并不容易。既然開發(fā)者寫的Prompt不清晰,有沒有辦法讓大模型幫開發(fā)者改寫?目前,業(yè)界已經(jīng)有一些嘗試,例如GPT Engineer。GPT Engineer是一個(gè)基于需求描述自動(dòng)生成項(xiàng)目源碼的開源項(xiàng)目,主打輕量,靈活生成項(xiàng)目源碼,可以在AI生成與人工生成之間進(jìn)行切換。在接收到Prompt時(shí),GPT Engineer不會(huì)直接生成代碼,而是先梳理有哪些事項(xiàng)需要用戶進(jìn)一步澄清,然后讓用戶把需要澄清的事項(xiàng)輸入后,再進(jìn)一步生成代碼。然而,GPT Engineer經(jīng)常會(huì)問一些在Prompt中已經(jīng)提供了答案的問題,對用戶造成困擾。
如何找到Prompt中“不清楚”的地方,從而進(jìn)行精準(zhǔn)提問?石琳教授所在團(tuán)隊(duì)提出了ClarifyGPT工具。ClarifyGPT會(huì)先識(shí)別是否應(yīng)該提問,再利用大模型生成問題。
ClarifyGPT的模塊1:基于測試結(jié)果的代碼多樣性評價(jià)模塊
如何判斷是否應(yīng)該向用戶做Prompt澄清呢?這里我們從代碼大模型的輸出結(jié)果出發(fā),提出一個(gè)基本假設(shè):如果Prompt清晰,大模型生成的代碼應(yīng)該行為一致;如果Prompt模糊,大模型生成的代碼可能五花八門。因此,ClarifyGPT會(huì)先通過種子輸入進(jìn)行代碼多樣性測試,并基于測試結(jié)果判斷是否要做向用戶做Prompt的澄清。
具體而言,(1)先進(jìn)行種子測試輸入初始化。構(gòu)建prompt用于生成種子輸入,Prompt包含三部分:Instruction,Demonstrations,Query。將Prompt輸入LLM中生成一些測試輸入,并用它們初始化一個(gè)種子池;(2)再進(jìn)行類型感知的測試輸入變異(采用了標(biāo)準(zhǔn)的基于變異的模糊流程)。在每次迭代時(shí),從種子池中隨機(jī)選擇一個(gè)輸入;對于選定的輸入,我們檢查其數(shù)據(jù)類型并執(zhí)行與其類型一致的單個(gè)變異操作以創(chuàng)建新的測試用例;完成一輪突變后,我們將新生成的輸入添加到種子池中,并重復(fù)上述過程,直到獲得所需的生成輸入數(shù)量。
ClarifyGPT的模塊2:基于推理的LLM問題生成模塊
在確定了需要向用戶做Prompt澄清后,應(yīng)該問什么內(nèi)容呢?為了解決這個(gè)以問題,ClarifyGPT會(huì)進(jìn)一步分析代碼的細(xì)節(jié)差異,區(qū)分不一致的代碼,比較solution的不同點(diǎn),再基于推理進(jìn)行LLM問題生成。
具體而言,首先生成中間推理步驟(分析導(dǎo)致歧義的因素),然后基于這些中間推理步驟產(chǎn)生最終結(jié)果(有針對性的澄清問題)。此外,ClarifyGPT鼓勵(lì)LLM進(jìn)行“超前規(guī)劃”,使他們能夠更好地利用他們的推理和理解能力來提高生成問題的質(zhì)量。
經(jīng)過評測,ClarifyGPT將GPT-4在MBPP-sanitized上的表現(xiàn)(Pass@1)從70.96%提高到80.8%;將MBPP-ET的性能從51.52%提高到60.19%。相對改善平均為15.35%,優(yōu)于基線。且增加Prompt中示例的數(shù)量會(huì)帶來ClarifyGPT性能提升。
ClarifyGPT是一個(gè)交互式代碼生成框架,會(huì)引導(dǎo)用戶先澄清意圖,再利用大模型幫助用戶生成代碼。后續(xù),ClarifyGPT也會(huì)在其他生成類任務(wù)上進(jìn)行進(jìn)一步的研究和探索。
大模型加速了研發(fā)人員的工作效率,但同時(shí)也提出了新的挑戰(zhàn)。我們必須大膽嘗試LLM在改進(jìn)軟件開發(fā)方面的潛力,但同時(shí)也要謹(jǐn)慎行事,不要忘記工程思維、嚴(yán)謹(jǐn)性和經(jīng)驗(yàn)驗(yàn)證的基本原則。 【材料分享】 [1] 論文原文下載 http://arxiv.org/abs/2310.10996 [2] 開源原型工具 https://github.com/ClarifyGPT/ClarifyGPT(點(diǎn)擊閱讀原文可跳轉(zhuǎn))
E N D
關(guān)注我們,獲取更多精彩。
審核編輯 黃宇
-
AI
+關(guān)注
關(guān)注
87文章
29434瀏覽量
267730 -
代碼
+關(guān)注
關(guān)注
30文章
4700瀏覽量
68105 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3613瀏覽量
15974 -
大模型
+關(guān)注
關(guān)注
2文章
2225瀏覽量
2248
發(fā)布評論請先 登錄
相關(guān)推薦
評論