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

1,157次阅读
没有评论

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

原文作者:Jeffrey M. Perkel

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

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

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

插图:The Project Twins

研究者可以使用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

点击阅读原文查看英文原文

《自然》系列期刊产品试用申请

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

▲ 如果您对《自然》系列期刊产品感兴趣,愿意推荐您所在的院校或机构申请免费试用,欢迎扫描以上二维码,提交表单申请。

版权声明:

本文由施普林格·自然上海办公室负责翻译。中文内容仅供参考,一切内容以英文原版为准。欢迎转发至朋友圈,如需转载,请邮件China@nature.com。未经授权的翻译是侵权行为,版权方将保留追究法律责任的权利。

© 2023 Springer Nature Limited. All Rights Reserved

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)

文心AIGC

2023 年 12 月
 123
45678910
11121314151617
18192021222324
25262728293031
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026 Jay 2025-12-22 09...
面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25 鹭羽 2025-12-13 22:37...
钉钉又发新版本!把 AI 搬进每一次对话和会议

钉钉又发新版本!把 AI 搬进每一次对话和会议

钉钉又发新版本!把 AI 搬进每一次对话和会议 梦晨 2025-12-11 15:33:51 来源:量子位 A...
商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1

商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1

商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1 十三 2025-12-15 14:13:14 ...
跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026 一水 2025-1...
最新评论
ufabet ufabet มีเกมให้เลือกเล่นมากมาย: เกมเดิมพันหลากหลาย ครบทุกค่ายดัง
tornado crypto mixer tornado crypto mixer Discover the power of privacy with TornadoCash! Learn how this decentralized mixer ensures your transactions remain confidential.
ดูบอลสด ดูบอลสด Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
Obrazy Sztuka Nowoczesna Obrazy Sztuka Nowoczesna Thank you for this wonderful contribution to the topic. Your ability to explain complex ideas simply is admirable.
ufabet ufabet Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
ufabet ufabet You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
ufabet ufabet Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
热评文章
预见未来:96位前沿先锋超万字核心观点总结,抢抓未来产业新高地

预见未来:96位前沿先锋超万字核心观点总结,抢抓未来产业新高地

预见未来:96位前沿先锋超万字核心观点总结,抢抓未来产业新高地 henry 2025-12-11 10:27:...
Meta公开抄阿里Qwen作业,还闭源了…

Meta公开抄阿里Qwen作业,还闭源了…

Meta公开抄阿里Qwen作业,还闭源了… Jay 2025-12-11 11:48:25 来源:量子位 Ja...
MEET2026挤爆了,AI圈今年最该听的20+场演讲&对谈都在这

MEET2026挤爆了,AI圈今年最该听的20+场演讲&对谈都在这

MEET2026挤爆了,AI圈今年最该听的20+场演讲&对谈都在这 西风 2025-12-11 15:...
钉钉又发新版本!把 AI 搬进每一次对话和会议

钉钉又发新版本!把 AI 搬进每一次对话和会议

钉钉又发新版本!把 AI 搬进每一次对话和会议 梦晨 2025-12-11 15:33:51 来源:量子位 A...