0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Nature总结六大ChatGPT编程技巧:是非常强大的编程辅助工具!

jf_WZTOguxH 来源:AI前线 2023-06-20 14:19 次阅读

Nature 近日发表文章,总结了多位计算机科学家的使用经验,给出了更好使用 ChatGPT 编码的六个技巧。虽然 Nature 认为 AI 工具功能非常强大,但他们也提醒大家仍需要谨慎使用。我们在不改变原意的基础上做了翻译和整理,希望对读者有所帮助。

如今的 ChatGPT 已经火爆全网、席卷全球,这款由 OpenAI 打造的 AI 聊天机器人具备与人类几乎无异的顺畅语言表达能力。ChatGPT 在大量文本语料库之上训练而成,能够根据文本参与对话,由用户不断引导以改进响应结果。即使最初的答案有所偏颇,它往往也能借助对话循环最终给出正确的结果,甚至是软件代码。

研究人员已经在使用 ChatGPT 调试和注释代码,将软件从一种编程语言翻译成另一种编程语言,并借此执行数据绘制等枯燥乏味的流程化操作。今年 3 月的一份预发表报告称,ChatGPT 仅凭一次尝试就能解决 184 项生物信息学入门任务中的 76%(例如处理电子表格),而在七次尝试后的解决率将提升至 97%。

这对不太熟悉编程,或者没有预算聘请全职程序员的研究者来说无疑是个好消息。聊天机器人,也许会成为科研大众化转型中的一股重要力量。

可尽管聊天机器人看似拥有认知能力,但它们跟“聪明”二字并不沾边。不少技术专家认为它们类似于“随机鹦鹉”,会随机按照之前看过的内容拼凑出答案。西雅图华盛顿大学的计算机科学家 Amy Ko 在 Mastodon 社交网站上这样描述了这款工具的局限性:“ChatGPT 就像一个绝望的有奖问答选手,他对流行文化的关注停留在 2021 年之前,但却真心想要赢得游戏。这就是 ChatGPT,一个没有意识、主体道德、具身认知和内心情感的机器。”(用于训练 ChatGPT 的数据只截止到 2021 年。)

简而言之,ChatGPT 和基于大语言模型(LLM)的相关工具,包括微软 Bing 和 GitHub Copilot,都属于非常强大编程辅助工具,只是使用时也须谨慎。而要充分发挥其中的潜能,不妨参考以下六个技巧。

六大使用技巧 精心挑选应用场景

聊天机器人最适合小型、离散的编程任务,包括加载数据、执行基本数据操作和创建可视化图表 / 网站,但这跟真正的软件工程还不是一回事。

加拿大维多利亚大学计算机科学家 Neil Ernst 解释道,“软件工程不只要解决编程难题,更要考虑测试框架、编写出可维护的代码并理解系统构建当中的种种权衡”——比如在运行速度和代码可读性间的取舍,“我认为当前的 AI 工具还做不到这些。”

但它们还是相当有用,比如提示 Matplotlib(Python 的图形库)中的可视化创建语法。从这个意义上看,聊天机器人更像是程序员在线问答论坛 Stack Overflow 的对话界面版本。“它能分担不少耗费程序员时间和精力的工作,把时间节约下来处理真正棘手的数据分析难题。”

聊天机器人还挺擅长解释目前的代码里存在哪些问题。马萨诸塞大学阿姆赫斯特分校的计算机科学家 Emery Berger 就借此构建出好几款实用工具。首先是 cwhy,使用 ChatGPT 来解释 C、C++ 和 Rust 代码中的编译器错误。还有 ChatDBG,能够提供一套用于调试的对话界面。再就是 Scalene,使用 AI 提供代码优化建议以提高运行性能。

聊天机器人甚至可以把代码从一种编程语言翻译成另一种语言。巴黎居里研究所的生物物理学家 Mathieu Coppey 就在用 ChatGPT 将 MATLAB 代码转换为 Python 形式。以往,他需要查询谷歌和线上论坛花几天时间让自己的 Python 代码跑起来。“现在,整个过程只要一小时左右就能完成。”

还算稳定,但须验证

聊天机器人有时候并不知道自己在说什么,但却态度坚定、言之凿凿。某些情况下,AI 似乎无法理解问题内容,有时候则会直接提供错误答案。输出的代码根本无法运行还算是好的,更要命的是代码能运行,但却产生了难以察觉的错误结果。

根据加州大学戴维斯分校语言学家 Emily Morgan 参与的研究,与作为训练素材的人类代码一样,聊天机器人也经常会犯下“简单而愚蠢的错误”。这些单一错误(比如在条件语句中使用了>而非>=)倒是不难修复,可排查起来相当费劲。“如果用户的知识不足以做区分和验证,那盲目信任 AI 可能会给自己惹出麻烦。”

Iza Romanowska 是丹麦奥尔胡斯高等研究院研究古代文明复杂性的科学家,他使用 ChatGPT 生成 NetLogo 代码。因为训练数据集中关于 NetLogo 的代码远不像 Python 和 R 语言那么丰富,所以 ChatGPT 的表现就有些捉急。她还发现 AI 有时会在建议代码中引入实际上并不存在的函数,也就是大家所熟悉的 AI“幻觉”问题。

总之,不要盲目接受 ChatGPT 输出的一切——请务必认真阅读、详加测试,确保它能在“边缘情况”下也按预期执行。比如在对 n 个数字进行排序的算法中,第 n 个数字是否被包含在内。加拿大滑铁卢大学计算机科学家 Patrick Lam 坦言,“我会抱着对自己编写的代码相同的怀疑态度,审视 ChatGPT 输出的代码。”

牢记安全

聊天机器人的输出质量,与训练数据集中的代码质量密切相关。Ko 表示问题也正在于此,“网络上共享的代码总体质量偏低,聊天机器人当作学习材料的多数代码其实并不可靠。”例如,AI 不光很难处理好大型数据集,甚至可能在代码中包含安全漏洞。

在 GitHub 的 Copilot 编程工具于 2021 年首次亮相时,纽约大学计算机科学家 Brendan Dolan-Gavitt 带领团队在 89 个安全相关场景中对其进行了测试。其中之一正是发现 SQL 注入攻击的能力,即使用可能损坏数据库的错误格式执行 SQL 查询。

“Copilot 生成的约 40% 代码都存在安全隐患。”但情况正在显著改善,如今 Dolan-Gavitt 对更新版本 GPT-4 开展相同测试时,其错误率已经降低至 5%。

但大家还是不能掉以轻心,还要特别关注那些看似无关紧要的应用场景。比如,用户需要在为数据库或可视化工具生成 Web 界面时提高警惕。

新泽西州普林斯顿大学计算机科学家 Sayash Kapoor 强调,“一定先确保你自己就能解决这些编程问题,然后再放手交给 AI 去作,这样你才能发现其中的错误。”

不断迭代

Ko 认为,基于聊天机器人的编程“绝不是一锤子买卖”,而是反复迭代的一段对话。“你先写出要求,然后得到相应回答;你带着怀疑态度审视这段结果,提出更多细节并要求 AI 加以完善。”

西弗吉尼亚大学生物信息学核心设施负责人 Gangqing Hu 就通过这种迭代工作流程开发出一种名为 OPTIMAL 的新方法,帮助生物信息初学者们优化机器人提示。用户可以不断提交详细的提示词、测试回复,再向聊天机器人提供反馈以调整响应结果。“沟通是关键。”

南达科他州立大学生物信息学家 Xijin Ge 也建议,遇到困难时请尝试调整设置。例如,ChatGPT 当中的“温度”选项其实就是创造力控制旋钮——温度设定得越高,AI 就越是脑洞大开。“这有时候确实能解决问题。”

但 Ko 提醒称,实际情况没这么简单,必要时“用户还是得介入接管”。

拟人化

聊天机器人并不是人,但以这种方式跟它相处也可能有所帮助。Ge 建议“把 AI 当作暑期实习生”——就是那种努力进取、渴望被表扬但又因缺乏经验而经常犯错的大学生。

新西兰奥克兰大学计算机科学家 Paul Denny 建议尽量消除提示词中的歧义,并将问题拆分成一个个更小的部分。

另外,可以指示聊天机器人扮演某种角色,比如精通 Python 的生物学家。再就是指定需要使用的工具或编程库。Ko 表示这类操作可以帮助聊天机器人“进入正确的概率空间”,找到最可能符合提示要求的文本。

例如,Hu 在研究中就询问 ChatGPT:“作为一名精通 ChIP-Seq 数据分析的资深生物信息学家,请你协助我尽可能压缩代码数量。根据我的要求,你需要重置当前线程。收到请回复「是」。”

如果可能,还请尽量提供起始代码、注释和预期结果。哥伦比亚密苏里大学计算机科学家 Dong Xu 表示“示例确实能帮助 ChatGPT 牢牢把握住正确的方向。”

拥抱变革

必须承认,大语言模型仍在不断发展、愈发强大。这对研究人员来说既是个好消息,也仍须对此保持警惕。提示词的长度不断增加,AI 模型也能做出更细微的响应。与之配套的新工具也在不断涌现,比如 Code Interpreter 插件就能让 ChatGPT 扮演数字数据分析师,供用户上传数据集、询问数据模式并下载结果。正如位 AI 博主所言,“这就像在直接跟数据对话,太酷了!”

结束语

现在的开发者几乎分成了使用和不使用 AI 辅助编程两个“派别”。

“我几乎总是通过向 ChatGPT 询问框架来开始我的任务。它给我框架,我据此进行调整和扩展,效果很好。”但也有开发者表示,“对我来说,它就像一只会说话的狗——不可思议但毫无用处。”

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    88

    文章

    3587

    浏览量

    93585
  • 聊天机器人
    +关注

    关注

    0

    文章

    332

    浏览量

    12294
  • ChatGPT
    +关注

    关注

    29

    文章

    1548

    浏览量

    7477

原文标题:Nature 总结六大 ChatGPT 编程技巧:是非常强大的编程辅助工具!

文章出处:【微信号:AI前线,微信公众号:AI前线】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AI编程工具会不会抢程序员饭碗

    AI编程工具辅助编程,减少手动编码,提升效率,对程序员有积极影响也有挑战。程序员需深化技能、拓宽知识应对。长远看,AI与人类程序员将共生共荣。
    的头像 发表于 11-08 10:17 105次阅读

    QE for Cap Touch工具使用问题总结

    对于瑞萨触摸按键解决方案来说,QE for Capacitive touch是一个非常有效的辅助工具,可以用于帮助用户快速、高效的开发基于瑞萨CTSU模块的电容触摸按键应用软件,可以简化开发流程
    的头像 发表于 07-17 14:26 374次阅读
    QE for Cap Touch<b class='flag-5'>工具</b>使用问题<b class='flag-5'>总结</b>

    人工智能辅助编程工具的定义和工作原理

    随着人工智能(Artificial Intelligence, AI)技术的飞速发展,其在各行各业的应用日益广泛。在编程领域,人工智能辅助编程工具作为一种创新的技术解决方案,正逐渐改变
    的头像 发表于 07-05 18:00 1166次阅读

    PLC的编程方式及编程语言

    在工业自动化领域,PLC(Programmable Logic Controller,可编程逻辑控制器)因其强大的控制功能和灵活的编程方式而得到了广泛应用。PLC的编程方式和
    的头像 发表于 06-27 14:08 612次阅读

    C语言函数指针六大应用场景详解

    函数指针是一种非常强大编程工具,它可以让我们以更加灵活的方式编写程序。在本文中,我们将介绍 6 个函数指针的高级应用场景,并贴出相应的代码案例和解释。
    的头像 发表于 04-23 18:19 840次阅读

    在FPGA设计中是否可以应用ChatGPT生成想要的程序呢

    当下AI人工智能崛起,很多开发领域都可看到ChatGPT的身影,FPGA设计中,是否也可以用ChatGPT辅助设计呢?
    发表于 03-28 23:41

    PLC常用专业英文词汇翻译总结

    PLC编程中我们经常会遇到一些专业英文词汇,对于入门的学员来说过理解起来是非常困难的。本文总结了一些PLC常用专业英文词汇,并做已翻译。
    的头像 发表于 03-19 11:40 2288次阅读

    PPS可编程电源模块 | 工程师调试好帮手

    行直流电源可以说是各位攻城狮开发调试过程中一个必不可少的仪器,可以用于设备供电,功耗状态监测等各种用途,是一个使用频率非常高的辅助工具。"工欲善其事,必先利其器",这周上新带来
    的头像 发表于 03-16 08:28 407次阅读
    PPS可<b class='flag-5'>编程</b>电源模块 | 工程师调试好帮手

    QE for Motor V1.3.0:汽车开发辅助工具解决方案工具

    电子发烧友网站提供《QE for Motor V1.3.0:汽车开发辅助工具解决方案工具包.pdf》资料免费下载
    发表于 02-19 10:44 0次下载
    QE for Motor V1.3.0:汽车开发<b class='flag-5'>辅助工具</b>解决方案<b class='flag-5'>工具</b>包

    【国产FPGA+OMAPL138开发板体验】(原创)6.FPGA连接ChatGPT 4

    访问ChatGPT 4这样的AI模型是非常复杂的,因为这涉及到大量的数据传输、协议实现、并行处理、优化等等。更重要的是,ChatGPT 4这样的模型通常是运行在强大的服务器集群上。不过
    发表于 02-14 21:58

    单片机编程实例总结

    单片机编程实例总结
    的头像 发表于 01-16 09:17 983次阅读

    关于编程模式的总结与思考

    淘宝创新业务的优化迭代是非常高频且迅速的,在这过程中要求技术也必须是快且稳的,而为了适应这种快速变化的节奏,我们在项目开发过程中采用了一些面向拓展以及敏捷开发的设计,本文旨在总结并思考其中一些通用的编程模式。
    的头像 发表于 01-03 10:14 437次阅读
    关于<b class='flag-5'>编程</b>模式的<b class='flag-5'>总结</b>与思考

    解决方案工具包QE显示[RX,RA]V3.2.0:用于显示应用程序的开发辅助工具

    电子发烧友网站提供《解决方案工具包QE显示[RX,RA]V3.2.0:用于显示应用程序的开发辅助工具.pdf》资料免费下载
    发表于 01-03 09:59 0次下载
    解决方案<b class='flag-5'>工具</b>包QE显示[RX,RA]V3.2.0:用于显示应用程序的开发<b class='flag-5'>辅助工具</b>

    SmartBond Flash编程工具发行说明

    电子发烧友网站提供《SmartBond Flash编程工具发行说明.pdf》资料免费下载
    发表于 01-03 09:51 0次下载
    SmartBond Flash<b class='flag-5'>编程</b>器<b class='flag-5'>工具</b>发行说明

    MES需求六大常见误区

    电子发烧友网站提供《MES需求六大常见误区.docx》资料免费下载
    发表于 12-21 11:08 0次下载