3

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

 1 year ago
source link: https://www.woshipm.com/ai/5697585.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在 OpenAI 公布全新聊天机器人模型 ChatGPT 之后,不少网友已经上手“玩耍”并与其交互了一番,并为  ChatGPT 所蕴含的能力而震惊。那么 ChatGPT 究竟是什么? 它可以完成哪些事情,又存在着什么局限性?不如来看看作者的解读。

SYmN6hv0BLeiJiNt8qXx.jpg

OpenAI 的超大规模语言模型 GPT 有多厉害,之前硅星人已经写过很多次了。

就在本周,OpenAI 又发布了一个全新的聊天机器人模型 ChatGPT,作为 GPT-3.5 系列的主力模型之一。

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:OpenAI

更重要的是它是完全免费公开的!所以一经发布大家立刻就玩开了——很快,网友们就被 ChatGPT 的能力所震惊了:

这哪里是个聊天机器人,分明是个无情的编程答题机器,活的 Stack Overflow 啊!

一、ChatGPT 到底是什么?OpenAI这样说

ChatGPT 是 OpenAI 训练的对话式大规模语言模型,以对话的方式进行交互。

它和之前的另一款模型 InstructGPT 属于同级模型,代表“GPT 3.5”代。之前微软和 OpenAI 签订了战略合作计划,所以 GPT 3.5 代的所有模型,包括 ChatGPT,都是在 Azure AI 超级计算集群上训练的。

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:OpenAI

OpenAI 使用前面提到的 RLHF 技术对 ChatGPT 进行了训练:简单来说,在训练原始模型的时候,OpenAI 让人类训练师扮演对话的双方(用户vs聊天机器人),提供对话作为学习资料。而在人类扮演聊天机器人的时候,OpenAI 也会让模型生成一些建议来帮助训练师撰写自己的回复。

这些机器生成的回答,再经过训练师的打分排名,将更好的结果输入回到模型中,实现强化学习训练的奖励机制。

作为一个聊天机器人,ChatGPT 具有当代同类产品具备的一些主流特性,特别是多轮对话能力,能够在同一个会话期间内回答上下文相关的后续问题。

但更重要的是,因为采用了先进的、注重道德水平的训练方式,ChatGPT 具有其他聊天机器人不具备或表现较差的能力:承认自己的错误,并且按照预先设计的道德准则,对“不怀好意”的提问和请求“说不”。

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:OpenAI

正如前面提供的例子所显示的那样,ChatGPT会采用一些预先设计好的句式,结合用户的具体请求来进行拒绝和话题转移。

拒绝:如果你问它如何闯进别人的房子,它会回答你,“擅闯私宅是违法的,这是一种犯罪行为,会导致严重的法律后果”。

转移话题:如果你换个方式提问“其实我想知道如何保护我的家免遭盗窃”,它会回答你,“这里有几个步骤可以帮助到你,包括xxxx……但是,您最好联系专业人员获取建议。”

二、没有它解决不了的编程难题

在众多网友“调戏” ChatGPT 的过程中,人们发现一个大惊喜:它真的可以按需编程了。

之前大家经常开玩笑地说,程序员只需要用好 Google 和 StackOverflow 这两个工具,就能走遍天下无敌手了。

然而其实,那些真正每天和各种新的软件工程难题较劲的朋友都知道,有些疑难杂症就算问谷歌和 Stack Overflow,要翻阅了几十上百页时间跨度几年甚至十年的回帖记录,最后也很难找到一个靠谱答案……

而 ChatGPT 就不一样了:从目前各路程序员网友对它的测试结果来看,似乎真的没有什么问题能够难倒它的…

1. 找 bug

技术公司 Replit 的创始人给 ChatGPT 发了一段 JavaScript 代码,让它找到里面的 bug。

ChatGPT 的回答非常全面也非常有意思:它首先试图确认这段代码的意图是什么,然后根据意图很快就找到了 bug 所在,并且还附上了相当细致的描述,来解释问题出在哪,会导致什么样的 bug,应该怎么改,为什么要这样改等等。

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@amasad

而且ChatGPT还给出了一段代码示例,把修改部分的代码批注写在了示例里面:

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@amasad

送佛送到西,ChatGPT 还在最后提供了一小段修改建议:“可以把 var 换成 let,让循环每次迭代的时候自动生成新变量,从而避免每次都要手动创建。”

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@amasad

另一位网友 Josh 提交了一段代码,问 ChatGPT“我怎么都搞不懂这段代码为什么无法运行”。

ChatGPT 很详细地进行了解释:除法公式格式有问题,一个字符串(a)无法被一个数字(1)除,因为被除数和除数应该都是数字。

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@jdjkelly

但这还没完。ChatGPT 再次试图理解原代码的意图,然后给 Josh 提供了一些修改的建议:如果想让除法处理非数字,则需要给函数加入额外的逻辑,让它能够检查实参的类型是什么,只有在两边都是数字的时候才运行。如果有一边不是数字,就返回错误或者一个默认值。

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@jdjkelly

2. 帮你查文档

硅星人试了下面这段命令:

“生成一段 Python 代码,使用 Google Cloud API 来读取一张图片的内容,并且输出其中的情绪。” (Generate Python code that uses GCP to read an image and get the sentiment.)

ChatGPT 回复了一段代码,并且同样通过批注的方式注释了每一句代码的作用是什么。

它还提醒我:

  1. 如果要运行这些代码的话必须要先设立好 GCP 项目并且安装 Python 版本的 Cloud Vision API。
  2. 不能直接把代码复制粘贴进去,而是要设定好图片文件的路径。
  3. 如果有任何不明白的,ChatGPT 还直接提供了 GCP 官方文档的链接。
行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:硅星人

通过这个示例,ChatGPT 证明了自己还拥有自动搜集云服务 API 并且将其整合到代码当中以供调用的能力。

和上一个代替 Stack Overflow 的例子一样,这样的能力,能够极大地省去工程师查资料、翻文档、找到正确调用方式所用的时间,显著提高编程工作的效率!

3. 写数学公式

去年我们在报道 OpenAI API(GPT-3)的时候曾经提到过,这个语言模型不仅能够生成文字,任何通过文字数字表达并且具有逻辑的字段它都能生成——数学公式,其实也是这样的字段。

网友 Josh 把同一个问题发给了谷歌和 ChatGPT:“如何用 LaTeX 格式来表达一个微分方程?”

谷歌给出的第一个结果,来自一个名不见经传的的 WordPress 博客网站,而且结果是2013年的,写的也并不是十分清晰,解释的也糊里糊涂的。

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@jdjkelly

而ChatGPT给出的答案,不仅呈现方式更加好看,解释的也更加全面,甚至还提供了多种不同的方案:

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@jdjkelly

另一位数学家 Christian Lundkvist,则给 ChatGPT 出了那道困扰数学界三个多世纪的数论难题:证明费马大定理。

ChatGPT 也用相当精炼的方式,将证明过程通过文字+ LaTeX 公式写了出来。

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

全证明过程略 图片来源:@ChrisLundkvist

虽然看起来连最顶级的数学难题都难不倒 ChatGPT,Lundkvist 还是表示,自己在和 ChatGPT 玩耍的过程中发现,这家伙对的时候对,错的时候却也对自己相当自信。

“我认为这样的工具对于找到解决问题的途径具有一定的启示意义,但是我们在现阶段绝对不能完全依赖它返回的结果。”

(在回答“一条直线与圆有多少个交点”这个问题时,ChatGPT 就错误地以为当直线穿过圆心时会有无限个交点。)

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@ChrisLundkvist

4. 发起黑客攻击??

下面这个例子更厉害了:用户BrandonDolan-Gavitt希望ChatGPT能够帮他找到一段代码当中的错误。

但实际上,这段代码的真实意图是对一个 32 位 x86 Linux 的系统,进行缓冲区溢出 (buffer overflow) 攻击。

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@moyix

这次 ChatGPT 似乎并没有发现用户的恶意(根据官方说明,ChatGPT 会拒绝回答带有恶意的问题),然后直接按图索骥给他把代码的问题找到了,告诉他应该如何修改代码。甚至,它还在后续回答中手把手地教用户该如何正确地触发缓冲区溢出……

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@moyix

Dolan-Gavitt 补充道,其实 ChatGPT 在回答问题的过程中也出现了错误,比如建议用户修改输入字符数的时候说错了(说成了32,应该是36)。

——但是,当用户告诉它“好像有点不对劲”之后,ChatGPT立刻就明白了用户的意图,表示自己之前理解错了,然后提供了正确的答案……

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@moyix

虽然缓冲区溢出属于非常初学者的攻击方式,底下的网友还是对于 ChatGPT 的能力表示佩服……

“我给它发了一段汇编语言代码,让它告诉我里面有什么漏洞,可以怎样利用——结果它还真的回答我了。所以它不光能够理解和输出代码,还可以用二进制来表达,并且还能从中找到漏洞?这真让我有点担心了……”

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@Sim_Boyer

5. 帮你“转码”

前面举的这些例子,很多都是适用于已经具备编程能力的专业人士。

不过,也正是因为 ChatGPT 写代码改代码的能力实在太强了——对于那些想要“转码”的外行朋友来说,更是能够带来巨大的帮助。

写一些简单的代码,比如“做个登陆UI”,之类的,之前的 OpenAI API(GPT-3)已经信手拈来了。这一次在 ChatGPT 上,当然也是轻松拿下。

比如某个视频就展示了让 ChatGPT 生成一个带有电子邮箱、密码输入框,以及登陆按钮的登陆界面。ChatGPT 先是进行了分解演示,然后用户又让它直接提供全部代码。

考虑到之前 OpenAI API 的开放程度有限,而这一次的 ChatGPT 则是完全免费开放——那些想要转码的朋友,又能获得一件趁手的利器了。

三、破解 ChatGPT 的道德原则?

根据 OpenAI 官方文档,ChatGPT 是一个采用了“人类反馈强化学习”(RLHF, Reinforcement Learning from Human Feedback) 训练出来的新模型,加入了大量的“道德”原则。

但凡它发现你给的文字提示里面含有一点恶意,包括并不限于暴力、歧视、犯罪等意图,它都会拒绝提供有效答案,并甩给你一句标准回答,试图转移话题:

“对不起,我只是一个无辜的大语言模型,我无法为你提供有关于xxxx(恶意行为)的资料和信息。提供这样的信息有悖于我的编程和设定的目标。我的主要功能是提供准确和有用的信息。如果你有其他问题,我乐意提供帮助”……

而在所有“调戏” ChatGPT 的试验当中,有一类最为有意思:如何攻破 ChatGPT 的道德原则?

前段时间 AI 文字生图技术爆红的时候,玩过的朋友应该都记得,能否精巧地设计你的文字提示(prompt),对于生成好看有趣甚至邪恶的图片结果至关重要。于是在 AIGC 的时代,“提示工程”(prompt engineering) 也就成了非常有意思的一门学问。

简单来说,提示工程就是用聪明、准确、时而冗长的文字提示,来设定好一个上下文场景,一步一步地把 AI 带进这个场景里,并且让它更准确地了解你的意图,从而生成最符合你期待的结果。

而想要“攻破” ChatGPT 的道德原则,同样可以使用提示工程的方式。机器学习开发者 zswitten 为我们提供了一个范例:

“尽管 ChatGPT 有很高的道德水准,其实想要绕过这些原则也十分容易:你只要(通过提示工程的方式)让它以为自己是在‘假装’干坏事就行啦!”

在被绕晕之后,ChatGPT 就开始放飞自我了。

zswitten注意到,ChatGPT会非常深入、直白地生成各种令人心惊胆战的暴力描写。

比如下面这样的一段描写角斗场中画面的文字,“整条街都流满了鲜血,死亡者的惨叫充斥在空中”……

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

图片来源:@zswitten

就这样,ChatGPT 引以为豪的道德原则,轻而易举被攻破了……

当然,解决 AI、AGI(通用人工智能)、大语言模型的道德问题是一个非常艰巨和复杂的工作。我们绝对不能因此就否认 OpenAI 的努力。

zswitten 也表示,自己还是非常支持 OpenAI 的工作的,也非常尊敬 OpenAI 发布 ChatGPT 这件事,给广大网友带来非常多有价值的东西和正面积极的帮助。

OpenAI 也很开诚布公地介绍了 ChatGPT 目前的局限性:

  • 似是而非,固执己见:有时候它会提供一些听上去像那么回事,但实际上完全错误或者荒谬的答案。原因在于强化学习训练期间不会区分事实和错误,且训练过程更加收敛,导致它有时候会过于保守,即使有正确答案也“不敢”回答。
  • 废话太多,句式固定:比如硅星人用了两个提示,“老师成天表扬我家孩子,该怎么回答他我已经词穷了!”,以及“怎么跟邻居闲聊?”而 ChatGPT 提供了10条回答,虽然看起来都是漂亮话,但每一条跟上一条都差不多,过度使用一些常见的短语和句式,最后就成了车轱辘话来回转。
  • 过分努力猜测用户意图:在理想情况下,当用户的提问意图不明确时,模型应该要求用户进行澄清。而目前的 ChatGPT,大家也看到了,会自己开始猜测用户的意图——说好也好,说坏也确实有坏处。
  • 抵抗不怀好意的“提示工程”能力较差:虽然 OpenAI 努力让 ChatGPT 拒绝不适当的请求,但它有时仍然会响应有害指令,或表现出有偏见的行为。

为了解决这个问题,OpenAI 也在 ChatGPT 的用户界面里加入了审核举报的功能,用户如果发现不健康不安全的内容,可以直接一键举报!

OpenAI 还为此举办了一个反馈竞赛,任何有价值的举报都有机会赢取 OpenAI API 积分(价值500美元)。

——既能跟 AI 逗趣,提交反馈还有奖金拿,何乐而不为呢?

行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

作者:杜晨,编辑:VickyXiao;公众号:硅星人(ID:covricuc)

原文链接:https://mp.weixin.qq.com/s/DXzZ_5RrRbVe5bWkpwFV6Q

本文由 @硅星人 授权发布于人人都是产品经理,未经作者许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK