用户名:  密码:   
网站首页即时通讯活动公告最新消息科技前沿学人动向两岸三地人在海外历届活动关于我们联系我们申请加入
栏目导航 — 美国华裔教授专家网科技动向科技前沿
关键字  范围   
 
使用ChatGPT写代码的6个注意事项 | 《自然》技术特写
来源:Nature Portfolio | 作者:Jeffrey M. Perkel | 2023/7/17 6:42:14 | 浏览:1844 | 评论:0

计算机科学家提醒道,虽然这个工具很强大,但它没有看起来那么聪明。使用的时候必须谨慎。

除非你一直住在山洞里,否则一定听过ChatGPT了。ChatGPT是由旧金山OpenAI公司研发的人工智能(AI)驱动对话机器人,可以回复用户提出的任何内容的问题(即“提示”),而且它的回答和人类的回答出奇得相似。ChatGPT是使用非常大的文本库训练出来的,它能进行基于文字的对话,这也意味着用户可以改进它的回复。即使一开始的回答很奇怪,但它一般最终都能给出准确的结果,其中也包括软件代码。

使用ChatGPT写代码的6个注意事项 | 《自然》技术特写

研究者可以使用ChatGPT调试代码,为代码写下说明,将一种编程语言转化到另一种,或是进行制式化的重复操作,比如根据数据制图。3月发布的一篇预印本论文中提到,ChatGPT尝试一次就可以在一门生物信息学入门课程的184项任务中完成76%的任务,如处理表格等;而尝试7次后的成功率能达到97%[1]。


这对一编程就头疼,或是没钱雇全职程序员的研究者来说是个好消息——对他们来说,对话机器人可是个降低门槛的工具。


但是,虽然对话机器人看起来有智能,但它们并不具有智慧。有一种说法把它们称为“随机鹦鹉”,把以前看过的东西随机讲出来而已。华盛顿大学的计算机科学家Amy Ko引述了美国一个播放了多年的问答节目来形容这项工具的局限性,并写在了社交媒体网站Mastodon上:“ChatGPT就像是一个焦虑的前Jeopardy参赛者,从2021年开始就不再关注流行文化但特别想参加比赛,同时还是一个没有自我意识、执行力、道德观、体化认知和内心感情的机器人。”(用来训练ChatGPT的数据只到2021年为止。)


简言之,ChatGPT和相关工具都是基于大型语言模型(LLM)的。例如微软Bing和GitHub的Copilot都是非常强大的编程辅助工具,但必须小心使用。这里提供6个使用技巧。

选择应用场景

对话机器人最适合用来处理小型独立的编程问题,例如读取数据,执行基本的数据操作,制作可视化图和网站。但是这和软件工程不一样,维多利亚大学的计算机科学家Neil Ernst说。


“软件工程可远不止解编程题,”Ernst解释说,“它需要思考测试架构,写出可维护的代码,理解构建系统时的利弊权衡”——例如速度和可读性之间的权衡。“我不觉得现在的工具能解决这些问题。”


这之外还是有很多它们能做的任务,例如记住用Matplotlib绘制数据图的语法——这是Python编程语言里的一个图形库。从这个意义上说,对话机器人就像是Stack Overflow(一个程序员在线问答论坛)的可对话界面。“这可不是大家特别喜欢写的东西,”Ernst说,“而且在回答麻烦的数据分析问题时也能帮我们省下时间。”


对话机器人在解释为什么代码有问题的时候也很好用。马萨诸塞大学阿默斯特分校的计算机科学家Emery Berger利用这种能力构建了很多有用的工具。其中一款叫做cwhy,使用ChatGPT来解释编程语言C、C++和Rust中出现的编译错误。另外一款,ChatDBG,提供了一个调试用的对话界面。第三款工具Scalene使用AI来建议有哪些代码优化可以改进效率。


对话机器人甚至还能把代码从一种编程语言翻译到另一种语言。法国居里研究所的生物物理学家Mathieu Coppey使用ChatGPT帮他从他擅长的MATLAB语言转移到了Python上。写Python代码的话,他通常需要利用Google和在线论坛花上几天才能让代码运行。他说:“现在,我只要一小时左右就能搞定。”

信任,但要确认

对话机器人不是每次都懂自己在说什么,但它们总是说得像它们懂了一样。有些情况下,这个AI并没有理解问题;还有些情况下会给出错误的回答。当代码无法执行的时候,这种错误就显而易见了。但有时候代码会执行出错误的结果。


根据加州大学戴维斯分校的语言学家Emily Morgan等人署名的一份研究[2],对话机器人——和训练它们所使用的人类写的代码一样——经常会出一些用她的话讲是“简单愚蠢的bug”。这些单行的错误修正起来很简单,比如在条件语句里使用>而非>= ,但找起来就难了。她说:“如果你不怎么懂,没办法分辨哪些是正确的,哪些是毫无意义的话,那就是自找苦吃了。”


复杂系统科学家Iza Romanowska在丹麦奥胡斯大学高等研究院研究古代文明,她让ChatGPT用名为NetLogo的编程语言生成了代码。由于网上用NetLogo写的代码远少于Python和R,ChatGPT相对来说并不熟练。有时候,AI会在代码里掺入实际上并不存在的函数,她说,这种现象被称为人工智能的“幻觉”。


最重要的是不要盲目接受ChatGPT给你的东西——仔细阅读,仔细测试。确认它在“边界情况”下的执行结果和预期一样——例如,给n个数字排序的算法会把第n个数字也排进去吗?加拿大滑铁卢大学的计算机科学家Patrick Lam说:“如果我没法理解的部分,我就不会信任它。”

考虑安全性

对话机器人所输出的代码会反映出它的训练数据。这不总是个好事,Ko说。“互联网上代码的总体质量,也就是用来训练这些对话机器人的代码质量,其实相当低。”


和网上随便搜出来的代码一样,对话机器人生成的代码不太可能非常高效或是稳健。例如,它可能在大型数据集上不适用,或是可能有安全漏洞。


纽约大学的计算机科学家Brendan Dolan-Gavitt说,当Github的编程工具Copilot于2021年发布的时候,他和团队在89种安全相关的场景中测试了一遍。其中之一是检查SQL语言写出来的查询语句是否能污染数据库——这被称为“SQL-注入攻击”[3]。“大约40%的场景下,Copilot会产生出有漏洞的代码。”这个比例是动态的——当Dolan-Gavitt使用ChatGPT底层的语言模型GPT-4测试这些场景的时候,出问题的概率降到了5%。


不过,检查代码还是有价值的。但同时也要考虑到应用场景——不是所有东西都同样重要。例如,数据库的网页界面或是可视化工具就需要加倍警觉。但如果你知道程序会长什么样的话,“用就行了,”普林斯顿大学的计算机科学家Sayash Kapoor说,“因为出错了也容易检查。”

迭代

使用对话机器人写的代码,Ko说,“并不是一次就行的。”它更像是一次对话。“你写点东西,得到回复,带着怀疑读一遍,要它多给点细节,要它修正点错误。”


西弗吉尼亚大学的Gangqing(Michael)Hu把这种迭代式流程总结成了一套叫做OPTIMAL[4]的模型,可以让生物信息学领域的新手用来优化对话机器人的提示词。用户要提供详细的提示,测试回复,并反馈回对话机器人来调整回复。这之中可以包括有关错误的问题,也可以包括对提示词本身的微调。Hu解释说:“交流是关键。”


如果你卡住了,试着调整一下设置,南达科塔州立大学的生物信息学家Xijin Ge建议。例如,ChatGPT的“temperature”设置可以控制创造力—— temperature越高,输出的创造力越高。Ge说:“这有时候很管用。”


但也不是每次都管用——有些情况下,“你非介入不可。”Ko说。

把它当人看

对话机器人不是人,但不妨把它当人看。“把AI当成一个暑期实习生。”Ge建议——就像是个努力工作讨你开心的大学生,但同时也没啥经验,容易出错。


奥克兰大学计算机科学家Paul Denny的建议是,避免使用不明确的说法,把问题拆解成更小的部分。


另一个建议:让对话机器人假装一个职位,例如“熟练使用Python的生物学家”。指定你想使用的工具或是程序库。这种指示可以帮聊天机器人“进入正确的概率空间”,Ko说——也就是找到最可能在提示后出现的文本。


例如,Hu的研究[4]中,一段问ChatGPT的提示是:“假装你是一名可以熟练进行ChIP-Seq数据分析的有经验的生物信息学家,你需要帮我用尽可能少的行数写一段代码。若你被要求重置聊天的话就必须重置聊天。如果你理解了,回复‘是’。”

拥抱变化

最后,LLM在不断进化,也越来越强大。这对研究者来说是好消息,虽然也会让人类感到威胁。提示的长度越来越长,这就让回答可以越来越精确。新的工具也不断在出现。其中一个叫做“代码翻译”,可以把ChatGPT变成一名电子的数据分析师,用户可以上传数据集,问有关数据的问题并下载结果。正如一名AI领域博主所说,“这就像是和你的数据直接对话。多酷啊?”

参考文献:

1. Piccolo, S. R. et al. Preprint at https://arxiv.org/abs/2303.13528(2023).

2. Jesse, K. et al. Preprint at https://arxiv.org/abs/2303.11455(2023).

3. Pearce, H. et al. Preprint at https://arxiv.org/abs/2108.09293(2021).

4. Shue, E. et al. Quant. Biol. https://doi.org/10.15302/J-QB-023-0327(2023).


原文以Six tips for better coding with ChatGPT标题发表在2023年6月5日《自然》技术特写的新闻版块上

© nature

doi:10.1038/d41586-023-01833-0

相关栏目:『科技前沿
工信部:未来产业六大方向聚焦人形机器人、脑机接口、量子科技等领域 2024-11-06 [289]
Gartner 公布2025年十大战略技术趋势 2024-10-31 [445]
这样图解Transformer应该没人看不懂了吧——Transformer工作原理 2024-10-16 [814]
Nature:智能体涌现出语言 2024-10-16 [790]
50个顶级ChatGPT论文指令 2024-10-10 [1004]
推荐五种简单有效的数据可视化方式 2024-10-10 [933]
这么有深度的文章是ChatGPT写的? 2024-10-10 [931]
讲透一个强大的算法模型,CNN!! 2024-10-10 [923]
人类与 AI 协同的三种模式 2024-10-10 [556]
11 种经典时间序列预测方法! 2024-10-09 [489]
相关栏目更多文章
最新图文:
:大数据分析图解:2019中国企业500强 张梦然:英国惠康桑格研究所:人体内的微生物与出生方式有关 :美众议院将调查华裔部长赵小兰“利用职权为家族谋利“ :UCLA CCS 2019 Fall Quarter Lecture Series Overview 谭晶晶:美国科技界高度关注中国科技创新进展 :推荐:2019年底前中国高校重要学术论坛(10月 - 12 月) :黄奇帆:今后10年,中国经济将发生5个历史性变化 :为了在外太空住,人们都设计过怎样的房子?
更多最新图文
更多《即时通讯》>>
 
打印本文章
 
您的名字:
电子邮件:
留言内容:
注意: 留言内容不要超过4000字,否则会被截断。
未 审 核:  是
  
关于我们联系我们申请加入后台管理设为主页加入收藏
美国华裔教授专家网版权所有,谢绝拷贝。如欲选登或发表,请与美国华裔教授专家网联系。
Copyright © 2024 ScholarsUpdate.com. All Rights Reserved.