生信人如何用好chatGPT
chatGPT對各行各業的沖擊,自然也蔓延到了生信領域,近日arxiv上的論文“針對計算生物學家,關于如何利用GPT-4的4個小技巧”的論文,探討了大語言模型這一技術的潛力與局限,給出了不少實用的建議和資源。話不多說,讓我們逐一了解一下。

論文標題:Ten Quick Tips for Harnessing the Power of ChatGPT/GPT-4 in Computational Biology
論文地址:https://arxiv.org/pdf/2303.16429
文中給出的建議,分為兩類,第一類針對個人提升,第二類著重具體的生信分析工作
1)保持開放的心態
不要因為當前chatgpt等工具的不足,而固步自封。ChatGPT已經推出了插件支持和與Wolfram Alpha合作,提升其數學處理能力;還有研究者,將NCBI的接口和chatGPT結合,使用戶能夠通過自然語言執行比對等生信分析任務[1]。在學術研究中,chatgpt等工具的應用,也即為廣泛,包括了概述論文,回答論文相關問題,解釋代碼,生成markdown格式文檔等,具體參考[2]。對于生信相關的定制化應用,則可以參考[3]。這些日新月異的進展,意味著雖然ChatGPT不會取代計算生物學家,但那些不使用它(和類似工具)的研究人員可能會在(學術)競爭中落后。
2)提高代碼可讀性和文檔化程度
編程是計算生物學家的核心技能,但是大多數代碼缺少可讀性高的注釋。通過chatgpt的代碼閱讀和注釋功能,例如下面的提示詞:為這段代碼添加說明性注釋(Add explanatory comments to this code)”或“重命名變量以增加清晰度(Rename the variables for clarity)可以提升代碼的可讀性。之后用戶可以根據chatgpt提供的注釋,在此基礎上進行修改增補,從而提升工作效率。
3)自動化重構測試代碼,提升工作效率
chatgpt的交互式操作,使得用戶可以利用其提升編程的效率。例如可以讓chatgpt根據功能與代碼,生成用于單元測試的代碼并執行(提示詞為Write a unit test for the following function and help me implement it)。針對代碼中重復的部分,chatgpt可以重構代碼,抽取成對應的函數(提示詞為 Extract functions for increased clarity),以提升代碼的模塊化水平。chatgpt還可以修改for loop循環,節省計算資源,以提升代碼的運行效率(提示詞為Re-write and optimize this for loop)。
4)使用chatGPT改善數據清洗
生信人員的工作離不開數據清洗,如何去除數據中的異常項,缺失項,可以使用正則表達式。而chatgpt可以直接讀取正則表達式,并提取滿足要求的數據(對應提示詞Write me regex for R/python/Excel with a pattern that will extract {} from {})。對于表格類數據,chatgpt也可以使用自然語言處理,例如增加一列,去除包含缺失的行,或者計算某一行的的均值方差等統計量。
使用chatgpt改善畫圖能力
生信人的工作離不開繪制數據可視化圖。chatgpt可以生成R中的ggplot2包,以及matplotlib代碼,從而使得用戶能夠不必記得這些繁瑣的畫圖命令。利用GPT-4解析繪圖代碼,還可以根據示例圖,生成對應的畫圖代碼。除此之外,chatGPT可以幫助您為圖表選擇合適的顏色,使圖表對色盲人士更具可訪問性,并建議改進您的可視化布局(對應提示語:change my code to make the plot color-blind friendly)。為了充分利用ChatGPT的能力,必須熟悉良好圖形設計的原則,這些原則可以參考[4]
提高寫作水平
利用chatGPT最直接的方式,莫過于輔助寫作。除了修改文中的語法錯誤,還可以使用chatgpt,生成能夠使數學家、生物學家和計算機科學家能理解的語言,例如使用下面的提示語:” 給我提供以下句子的幾個不同版本(Provide me some different versions of the following sentence)“,之后再選出其中一版。還可以使用chatgpt修改文本以適應不同的讀者群體,包括撰寫媒體發布、簡化非專業人士的研究或將基于生物學家的語言適應為基于計算機科學的語言。需要注意的是,當使用了chatgpt等工具生成文本后,需要標明以免引起誤解,或違法出版商的道德要求,具體可參考[5,6]
理解并測試語言模型生成的內容
由于chatgpt只是一個語言模型,因此不論在生成代碼,還是產生文本信息時,都可能會產生誤讀或添加錯誤信息,如果不加鑒別盲目使用,會導致錯誤結論。因此,使用chatgpt編寫流程之前,需要確保已經學習過并且能夠理解或者至少能測試結果的語法尋求幫助是至關重要的。使用ChatGPT撰寫文章或解釋結果時也應謹慎,也需要仔細檢查您閱讀的內容,并確保理解和同意ChatGPT生成的所有內容。
學習提示工程
提示工程關注如何精心制定提示詞,以有效地傳達上下文、示例、角色和目標,從而生成符合您目標的響應模板。通過提供更多的上下文、細節和具體的目標,良好的提示更有可能讓ChatGPT生成一個相關和有信息價值的回答,而不好的提示可能會導致一個不太滿意的結果。盡管chatgpt可以進行多輪的優化,但隨著對話變得越來越長、微妙和更復雜,丟失上下文的風險也會增加。因此,初次交互中的特定性、客觀性和完整性是非常重要的。例如,當詢問單細胞測序的問題時,需要在提示詞中制定任務的輸入輸出,使用的語言及關鍵包,之后再針對給出的代碼要求chatgpt解釋或優化,如此才能預期chatgpt產生出符合預期的結果。
使用GPT的API擴展自己的應用
OpenAI的API允許對GPT進行微調以更好地適應您的工作。通過調用api,用戶可以使用自然語言與生信分析軟件進行交互,并用GPT將其其輸出的結果轉換為可執行代碼。API還暴露了四個與chatgpt輸出相關的參數,通過微調這些參數,可以改變chatgpt的行為。其中溫度(emperature )和 top_p parameters這兩個參數控制輸出中表現出的大膽程度和非確定性的程度,值越高,內容層面的重復性就越低。而frequency_penalty和presence_penalty則代表單詞方面的重復性,這兩個值越高,那么用戶看到的結果中重復的單詞概率就越低。調整這些參數,可以產生更簡潔、不那么重復和更簡潔的輸出。 當輸入的文本大于Web提示允許的文本長度(約為4,000個字符)時,API也可以提供幫助。可以使用像LangChain[6]這樣的工具來解析大型文檔。
不要過渡依賴chatgpt
雖然ChatGPT是一個強大的革命性的工具,但它依然是一個早期的不成熟的工具,可能會出現系統故障和崩潰,也缺乏開源的替代品。 作為研究者不應該過渡地依賴chatgpt去完成工作。在使用任何AI工具時,始終努力尋求平衡的方法,確保個人及團隊繼續擁有獨立開發必要的技能和知識。
[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