生信人如何用好chatGPT
chatGPT對各行各業(yè)的沖擊,自然也蔓延到了生信領(lǐng)域,近日arxiv上的論文“針對計(jì)算生物學(xué)家,關(guān)于如何利用GPT-4的4個(gè)小技巧”的論文,探討了大語言模型這一技術(shù)的潛力與局限,給出了不少實(shí)用的建議和資源。話不多說,讓我們逐一了解一下。
論文標(biāo)題:Ten Quick Tips for Harnessing the Power of ChatGPT/GPT-4 in Computational Biology
論文地址:https://arxiv.org/pdf/2303.16429
文中給出的建議,分為兩類,第一類針對個(gè)人提升,第二類著重具體的生信分析工作
1)保持開放的心態(tài)
不要因?yàn)楫?dāng)前chatgpt等工具的不足,而固步自封。ChatGPT已經(jīng)推出了插件支持和與Wolfram Alpha合作,提升其數(shù)學(xué)處理能力;還有研究者,將NCBI的接口和chatGPT結(jié)合,使用戶能夠通過自然語言執(zhí)行比對等生信分析任務(wù)[1]。在學(xué)術(shù)研究中,chatgpt等工具的應(yīng)用,也即為廣泛,包括了概述論文,回答論文相關(guān)問題,解釋代碼,生成markdown格式文檔等,具體參考[2]。對于生信相關(guān)的定制化應(yīng)用,則可以參考[3]。這些日新月異的進(jìn)展,意味著雖然ChatGPT不會取代計(jì)算生物學(xué)家,但那些不使用它(和類似工具)的研究人員可能會在(學(xué)術(shù))競爭中落后。
2)提高代碼可讀性和文檔化程度
編程是計(jì)算生物學(xué)家的核心技能,但是大多數(shù)代碼缺少可讀性高的注釋。通過chatgpt的代碼閱讀和注釋功能,例如下面的提示詞:為這段代碼添加說明性注釋(Add explanatory comments to this code)”或“重命名變量以增加清晰度(Rename the variables for clarity)可以提升代碼的可讀性。之后用戶可以根據(jù)chatgpt提供的注釋,在此基礎(chǔ)上進(jìn)行修改增補(bǔ),從而提升工作效率。
3)自動化重構(gòu)測試代碼,提升工作效率
chatgpt的交互式操作,使得用戶可以利用其提升編程的效率。例如可以讓chatgpt根據(jù)功能與代碼,生成用于單元測試的代碼并執(zhí)行(提示詞為Write a unit test for the following function and help me implement it)。針對代碼中重復(fù)的部分,chatgpt可以重構(gòu)代碼,抽取成對應(yīng)的函數(shù)(提示詞為 Extract functions for increased clarity),以提升代碼的模塊化水平。chatgpt還可以修改for loop循環(huán),節(jié)省計(jì)算資源,以提升代碼的運(yùn)行效率(提示詞為Re-write and optimize this for loop)。
4)使用chatGPT改善數(shù)據(jù)清洗
生信人員的工作離不開數(shù)據(jù)清洗,如何去除數(shù)據(jù)中的異常項(xiàng),缺失項(xiàng),可以使用正則表達(dá)式。而chatgpt可以直接讀取正則表達(dá)式,并提取滿足要求的數(shù)據(jù)(對應(yīng)提示詞Write me regex for R/python/Excel with a pattern that will extract {} from {})。對于表格類數(shù)據(jù),chatgpt也可以使用自然語言處理,例如增加一列,去除包含缺失的行,或者計(jì)算某一行的的均值方差等統(tǒng)計(jì)量。
使用chatgpt改善畫圖能力
生信人的工作離不開繪制數(shù)據(jù)可視化圖。chatgpt可以生成R中的ggplot2包,以及matplotlib代碼,從而使得用戶能夠不必記得這些繁瑣的畫圖命令。利用GPT-4解析繪圖代碼,還可以根據(jù)示例圖,生成對應(yīng)的畫圖代碼。除此之外,chatGPT可以幫助您為圖表選擇合適的顏色,使圖表對色盲人士更具可訪問性,并建議改進(jìn)您的可視化布局(對應(yīng)提示語:change my code to make the plot color-blind friendly)。為了充分利用ChatGPT的能力,必須熟悉良好圖形設(shè)計(jì)的原則,這些原則可以參考[4]
提高寫作水平
利用chatGPT最直接的方式,莫過于輔助寫作。除了修改文中的語法錯誤,還可以使用chatgpt,生成能夠使數(shù)學(xué)家、生物學(xué)家和計(jì)算機(jī)科學(xué)家能理解的語言,例如使用下面的提示語:” 給我提供以下句子的幾個(gè)不同版本(Provide me some different versions of the following sentence)“,之后再選出其中一版。還可以使用chatgpt修改文本以適應(yīng)不同的讀者群體,包括撰寫媒體發(fā)布、簡化非專業(yè)人士的研究或?qū)⒒谏飳W(xué)家的語言適應(yīng)為基于計(jì)算機(jī)科學(xué)的語言。需要注意的是,當(dāng)使用了chatgpt等工具生成文本后,需要標(biāo)明以免引起誤解,或違法出版商的道德要求,具體可參考[5,6]
理解并測試語言模型生成的內(nèi)容
由于chatgpt只是一個(gè)語言模型,因此不論在生成代碼,還是產(chǎn)生文本信息時(shí),都可能會產(chǎn)生誤讀或添加錯誤信息,如果不加鑒別盲目使用,會導(dǎo)致錯誤結(jié)論。因此,使用chatgpt編寫流程之前,需要確保已經(jīng)學(xué)習(xí)過并且能夠理解或者至少能測試結(jié)果的語法尋求幫助是至關(guān)重要的。使用ChatGPT撰寫文章或解釋結(jié)果時(shí)也應(yīng)謹(jǐn)慎,也需要仔細(xì)檢查您閱讀的內(nèi)容,并確保理解和同意ChatGPT生成的所有內(nèi)容。
學(xué)習(xí)提示工程
提示工程關(guān)注如何精心制定提示詞,以有效地傳達(dá)上下文、示例、角色和目標(biāo),從而生成符合您目標(biāo)的響應(yīng)模板。通過提供更多的上下文、細(xì)節(jié)和具體的目標(biāo),良好的提示更有可能讓ChatGPT生成一個(gè)相關(guān)和有信息價(jià)值的回答,而不好的提示可能會導(dǎo)致一個(gè)不太滿意的結(jié)果。盡管chatgpt可以進(jìn)行多輪的優(yōu)化,但隨著對話變得越來越長、微妙和更復(fù)雜,丟失上下文的風(fēng)險(xiǎn)也會增加。因此,初次交互中的特定性、客觀性和完整性是非常重要的。例如,當(dāng)詢問單細(xì)胞測序的問題時(shí),需要在提示詞中制定任務(wù)的輸入輸出,使用的語言及關(guān)鍵包,之后再針對給出的代碼要求chatgpt解釋或優(yōu)化,如此才能預(yù)期chatgpt產(chǎn)生出符合預(yù)期的結(jié)果。
使用GPT的API擴(kuò)展自己的應(yīng)用
OpenAI的API允許對GPT進(jìn)行微調(diào)以更好地適應(yīng)您的工作。通過調(diào)用api,用戶可以使用自然語言與生信分析軟件進(jìn)行交互,并用GPT將其其輸出的結(jié)果轉(zhuǎn)換為可執(zhí)行代碼。API還暴露了四個(gè)與chatgpt輸出相關(guān)的參數(shù),通過微調(diào)這些參數(shù),可以改變chatgpt的行為。其中溫度(emperature )和 top_p parameters這兩個(gè)參數(shù)控制輸出中表現(xiàn)出的大膽程度和非確定性的程度,值越高,內(nèi)容層面的重復(fù)性就越低。而frequency_penalty和presence_penalty則代表單詞方面的重復(fù)性,這兩個(gè)值越高,那么用戶看到的結(jié)果中重復(fù)的單詞概率就越低。調(diào)整這些參數(shù),可以產(chǎn)生更簡潔、不那么重復(fù)和更簡潔的輸出。 當(dāng)輸入的文本大于Web提示允許的文本長度(約為4,000個(gè)字符)時(shí),API也可以提供幫助??梢允褂孟馤angChain[6]這樣的工具來解析大型文檔。
不要過渡依賴chatgpt
雖然ChatGPT是一個(gè)強(qiáng)大的革命性的工具,但它依然是一個(gè)早期的不成熟的工具,可能會出現(xiàn)系統(tǒng)故障和崩潰,也缺乏開源的替代品。 作為研究者不應(yīng)該過渡地依賴chatgpt去完成工作。在使用任何AI工具時(shí),始終努力尋求平衡的方法,確保個(gè)人及團(tuán)隊(duì)繼續(xù)擁有獨(dú)立開發(fā)必要的技能和知識。
[1]GeneGPT: Augmenting Large Language Models with Domain Tools for Improved Access to Biomedical Information
[2] https://github.com/binary-husky/gpt_academic
[3] GitHub - csbl-br/awesome-compbio-chatgpt: An awesome repository of community-curated applications of ChatGPT and other LLMs im computational biology
[4] Ten Simple Rules for Better Figures
[5] Stokel-Walker C, Van Noorden R. What ChatGPT and generative AI mean for science. Nature. 2023;614: 214–216.
[6]Tools such as ChatGPT threaten transparent science; here are our ground rules for their use. Nature. 2023. p. 612.
[7]https://github.com/hwchase17/langchain