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