生信人如何用好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