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