Nature 近日發(fā)表文章,總結了多位計算機科學家的使用經驗,給出了更好使用 ChatGPT 編碼的六個技巧。雖然 Nature 認為 AI 工具功能非常強大,但他們也提醒大家仍需要謹慎使用。我們在不改變原意的基礎上做了翻譯和整理,希望對讀者有所幫助。
如今的 ChatGPT 已經火爆全網、席卷全球,這款由 OpenAI 打造的 AI 聊天機器人具備與人類幾乎無異的順暢語言表達能力。ChatGPT 在大量文本語料庫之上訓練而成,能夠根據(jù)文本參與對話,由用戶不斷引導以改進響應結果。即使最初的答案有所偏頗,它往往也能借助對話循環(huán)最終給出正確的結果,甚至是軟件代碼。
研究人員已經在使用 ChatGPT 調試和注釋代碼,將軟件從一種編程語言翻譯成另一種編程語言,并借此執(zhí)行數(shù)據(jù)繪制等枯燥乏味的流程化操作。今年 3 月的一份預發(fā)表報告稱,ChatGPT 僅憑一次嘗試就能解決 184 項生物信息學入門任務中的 76%(例如處理電子表格),而在七次嘗試后的解決率將提升至 97%。
這對不太熟悉編程,或者沒有預算聘請全職程序員的研究者來說無疑是個好消息。聊天機器人,也許會成為科研大眾化轉型中的一股重要力量。
可盡管聊天機器人看似擁有認知能力,但它們跟“聰明”二字并不沾邊。不少技術專家認為它們類似于“隨機鸚鵡”,會隨機按照之前看過的內容拼湊出答案。西雅圖華盛頓大學的計算機科學家 Amy Ko 在 Mastodon 社交網站上這樣描述了這款工具的局限性:“ChatGPT 就像一個絕望的有獎問答選手,他對流行文化的關注停留在 2021 年之前,但卻真心想要贏得游戲。這就是 ChatGPT,一個沒有意識、主體道德、具身認知和內心情感的機器。”(用于訓練 ChatGPT 的數(shù)據(jù)只截止到 2021 年。)
簡而言之,ChatGPT 和基于大語言模型(LLM)的相關工具,包括微軟 Bing 和 GitHub Copilot,都屬于非常強大編程輔助工具,只是使用時也須謹慎。而要充分發(fā)揮其中的潛能,不妨參考以下六個技巧。
六大使用技巧 精心挑選應用場景
聊天機器人最適合小型、離散的編程任務,包括加載數(shù)據(jù)、執(zhí)行基本數(shù)據(jù)操作和創(chuàng)建可視化圖表 / 網站,但這跟真正的軟件工程還不是一回事。
加拿大維多利亞大學計算機科學家 Neil Ernst 解釋道,“軟件工程不只要解決編程難題,更要考慮測試框架、編寫出可維護的代碼并理解系統(tǒng)構建當中的種種權衡”——比如在運行速度和代碼可讀性間的取舍,“我認為當前的 AI 工具還做不到這些。”
但它們還是相當有用,比如提示 Matplotlib(Python 的圖形庫)中的可視化創(chuàng)建語法。從這個意義上看,聊天機器人更像是程序員在線問答論壇 Stack Overflow 的對話界面版本。“它能分擔不少耗費程序員時間和精力的工作,把時間節(jié)約下來處理真正棘手的數(shù)據(jù)分析難題。”
聊天機器人還挺擅長解釋目前的代碼里存在哪些問題。馬薩諸塞大學阿姆赫斯特分校的計算機科學家 Emery Berger 就借此構建出好幾款實用工具。首先是 cwhy,使用 ChatGPT 來解釋 C、C++ 和 Rust 代碼中的編譯器錯誤。還有 ChatDBG,能夠提供一套用于調試的對話界面。再就是 Scalene,使用 AI 提供代碼優(yōu)化建議以提高運行性能。
聊天機器人甚至可以把代碼從一種編程語言翻譯成另一種語言。巴黎居里研究所的生物物理學家 Mathieu Coppey 就在用 ChatGPT 將 MATLAB 代碼轉換為 Python 形式。以往,他需要查詢谷歌和線上論壇花幾天時間讓自己的 Python 代碼跑起來。“現(xiàn)在,整個過程只要一小時左右就能完成。”
還算穩(wěn)定,但須驗證
聊天機器人有時候并不知道自己在說什么,但卻態(tài)度堅定、言之鑿鑿。某些情況下,AI 似乎無法理解問題內容,有時候則會直接提供錯誤答案。輸出的代碼根本無法運行還算是好的,更要命的是代碼能運行,但卻產生了難以察覺的錯誤結果。
根據(jù)加州大學戴維斯分校語言學家 Emily Morgan 參與的研究,與作為訓練素材的人類代碼一樣,聊天機器人也經常會犯下“簡單而愚蠢的錯誤”。這些單一錯誤(比如在條件語句中使用了>而非>=)倒是不難修復,可排查起來相當費勁。“如果用戶的知識不足以做區(qū)分和驗證,那盲目信任 AI 可能會給自己惹出麻煩。”
Iza Romanowska 是丹麥奧爾胡斯高等研究院研究古代文明復雜性的科學家,他使用 ChatGPT 生成 NetLogo 代碼。因為訓練數(shù)據(jù)集中關于 NetLogo 的代碼遠不像 Python 和 R 語言那么豐富,所以 ChatGPT 的表現(xiàn)就有些捉急。她還發(fā)現(xiàn) AI 有時會在建議代碼中引入實際上并不存在的函數(shù),也就是大家所熟悉的 AI“幻覺”問題。
總之,不要盲目接受 ChatGPT 輸出的一切——請務必認真閱讀、詳加測試,確保它能在“邊緣情況”下也按預期執(zhí)行。比如在對 n 個數(shù)字進行排序的算法中,第 n 個數(shù)字是否被包含在內。加拿大滑鐵盧大學計算機科學家 Patrick Lam 坦言,“我會抱著對自己編寫的代碼相同的懷疑態(tài)度,審視 ChatGPT 輸出的代碼。”
牢記安全
聊天機器人的輸出質量,與訓練數(shù)據(jù)集中的代碼質量密切相關。Ko 表示問題也正在于此,“網絡上共享的代碼總體質量偏低,聊天機器人當作學習材料的多數(shù)代碼其實并不可靠。”例如,AI 不光很難處理好大型數(shù)據(jù)集,甚至可能在代碼中包含安全漏洞。
在 GitHub 的 Copilot 編程工具于 2021 年首次亮相時,紐約大學計算機科學家 Brendan Dolan-Gavitt 帶領團隊在 89 個安全相關場景中對其進行了測試。其中之一正是發(fā)現(xiàn) SQL 注入攻擊的能力,即使用可能損壞數(shù)據(jù)庫的錯誤格式執(zhí)行 SQL 查詢。
“Copilot 生成的約 40% 代碼都存在安全隱患。”但情況正在顯著改善,如今 Dolan-Gavitt 對更新版本 GPT-4 開展相同測試時,其錯誤率已經降低至 5%。
但大家還是不能掉以輕心,還要特別關注那些看似無關緊要的應用場景。比如,用戶需要在為數(shù)據(jù)庫或可視化工具生成 Web 界面時提高警惕。
新澤西州普林斯頓大學計算機科學家 Sayash Kapoor 強調,“一定先確保你自己就能解決這些編程問題,然后再放手交給 AI 去作,這樣你才能發(fā)現(xiàn)其中的錯誤。”
不斷迭代
Ko 認為,基于聊天機器人的編程“絕不是一錘子買賣”,而是反復迭代的一段對話。“你先寫出要求,然后得到相應回答;你帶著懷疑態(tài)度審視這段結果,提出更多細節(jié)并要求 AI 加以完善。”
西弗吉尼亞大學生物信息學核心設施負責人 Gangqing Hu 就通過這種迭代工作流程開發(fā)出一種名為 OPTIMAL 的新方法,幫助生物信息初學者們優(yōu)化機器人提示。用戶可以不斷提交詳細的提示詞、測試回復,再向聊天機器人提供反饋以調整響應結果。“溝通是關鍵。”
南達科他州立大學生物信息學家 Xijin Ge 也建議,遇到困難時請嘗試調整設置。例如,ChatGPT 當中的“溫度”選項其實就是創(chuàng)造力控制旋鈕——溫度設定得越高,AI 就越是腦洞大開。“這有時候確實能解決問題。”
但 Ko 提醒稱,實際情況沒這么簡單,必要時“用戶還是得介入接管”。
擬人化
聊天機器人并不是人,但以這種方式跟它相處也可能有所幫助。Ge 建議“把 AI 當作暑期實習生”——就是那種努力進取、渴望被表揚但又因缺乏經驗而經常犯錯的大學生。
新西蘭奧克蘭大學計算機科學家 Paul Denny 建議盡量消除提示詞中的歧義,并將問題拆分成一個個更小的部分。
另外,可以指示聊天機器人扮演某種角色,比如精通 Python 的生物學家。再就是指定需要使用的工具或編程庫。Ko 表示這類操作可以幫助聊天機器人“進入正確的概率空間”,找到最可能符合提示要求的文本。
例如,Hu 在研究中就詢問 ChatGPT:“作為一名精通 ChIP-Seq 數(shù)據(jù)分析的資深生物信息學家,請你協(xié)助我盡可能壓縮代碼數(shù)量。根據(jù)我的要求,你需要重置當前線程。收到請回復「是」。”
如果可能,還請盡量提供起始代碼、注釋和預期結果。哥倫比亞密蘇里大學計算機科學家 Dong Xu 表示“示例確實能幫助 ChatGPT 牢牢把握住正確的方向。”
擁抱變革
必須承認,大語言模型仍在不斷發(fā)展、愈發(fā)強大。這對研究人員來說既是個好消息,也仍須對此保持警惕。提示詞的長度不斷增加,AI 模型也能做出更細微的響應。與之配套的新工具也在不斷涌現(xiàn),比如 Code Interpreter 插件就能讓 ChatGPT 扮演數(shù)字數(shù)據(jù)分析師,供用戶上傳數(shù)據(jù)集、詢問數(shù)據(jù)模式并下載結果。正如位 AI 博主所言,“這就像在直接跟數(shù)據(jù)對話,太酷了!”
結束語
現(xiàn)在的開發(fā)者幾乎分成了使用和不使用 AI 輔助編程兩個“派別”。
“我?guī)缀蹩偸峭ㄟ^向 ChatGPT 詢問框架來開始我的任務。它給我框架,我據(jù)此進行調整和擴展,效果很好。”但也有開發(fā)者表示,“對我來說,它就像一只會說話的狗——不可思議但毫無用處。”
-
編程
+關注
關注
88文章
3627瀏覽量
93807 -
聊天機器人
+關注
關注
0文章
339瀏覽量
12330 -
ChatGPT
+關注
關注
29文章
1564瀏覽量
7799
原文標題:Nature 總結六大 ChatGPT 編程技巧:是非常強大的編程輔助工具!
文章出處:【微信號:AI前線,微信公眾號:AI前線】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論