ChatGPT能胜任高级程序员吗?
Posted c++服务器开发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ChatGPT能胜任高级程序员吗?相关的知识,希望对你有一定的参考价值。
与开发人员信任的其他软件开发工具不同,AI工具在训练、构建、托管和使用方式等方面都存在一些独特的风险。
自2022年底ChatGPT发布以来,互联网上便充斥着对其几乎相同比例的支持和怀疑的论调。不管你是否喜欢它,AI正在逐步进入你的开发组织。即使你不打算开发人工智能产品,也不打算利用AI工具为你编写代码,它仍可能被集成到用于构建、测试和运行源代码的工具和平台中。
AI工具存在一些较为特殊的风险,这些风险可能会使自动化任务所带来的生产力收益受到影响。而这些风险主要源于AI的训练、构建、托管和使用方式,AI工具在这些方面与开发人员信任的其他工具存在诸多不同之处。了解风险是管理风险的第一步,为了帮助你了解AI工具的潜在风险,我们设计了一些面向AI工具的面试问题,这些问题能够决定该工具是否能顺利“入职”你的公司。
总体而言,所有的的AI工具都存在一定的共性,无论人工智能的类型或用途如何,在选择使用它之前,都应提出如下问题:
这款AI工具的基础设施在什么位置?现代人工智能无一不需要专用且昂贵的硬件进行支持。除非你打算收购一个新的数据中心;否则你的AI工具将只能进行远程工作,并需要使用远程访问和非现场数据存储,而这将造成一定的安全隐患。
在代码离开处理边界时,采取什么样的保护措施来防止IP丢失?从智能电视到智能汽车,一切人工智能产品都在向其制造商贡献数据。一些企业使用这些数据来优化他们的软件,但另一些企业会将这些数据卖给广告商。因此,你有必要准确了解AI工具将如何使用或处理其用于主要任务的源代码或其他私有数据。
你的输入能够用于模型的训练任务吗?人工智能模型的持续训练是模型所有企业以及模型训练人员非常关注的任务。例如,模型所有企业往往不希望广告商过多介入其模型训练环节,以达到免费的广告推送的目的。
结果的准确度是多少?ChatGPT最致命的缺点是其结果的不准确性。它在生成谎言和真理方面表现都很突出;这被称为AI幻觉。了解人工智能可能产生错误的方式和场景,有助于在AI工具发生错误时进行管理。
除此之外,人工智能所有企业和开发者会存在自己的一系列安全问题。这些新的担忧包括对人工智能训练模型的威胁,这些威胁可能会破坏其结果,并泄露有关模型运行方式的专有信息,以及可能会破坏模型生成结果的质量。此外,人工智能模型必须通过API、Web访问、移动应用程序和其他需要安全构建的应用程序与传统世界进行交互。
除一般问题外,开发人员在使用AI工具时还必须提出其他方面的问题,如使用AI安全扫描程序,以便管理软件开发过程中引入的风险。
AI工具是否适合应用于此类场景?了解人工智能不擅长什么是十分关键的。例如,如果一项任务可以细分为“根据学习规则做出决定”或“编写符合学习规则的内容”;那么,人工智能通常很擅长此类任务。如果问题的变化超越此范围,人工智能可能会表现得很糟糕。
如果AI工具出现错误,该采取什么保护措施?千万不要在你的过程中引入一个单一的失败点,尤其是一个可能产生幻觉的失败点。推荐的做法应当是,依靠与深度防御相关的传统做法,或管理风险的方法——即系统中的一层产生了问题,下一层也会捕获它。
审查工具结果需要如何进行监督?其实这是一个旧事重提的问题。传统的问题日志捕获方案通常分为两部分:第一个是获取重要事件的数据;第二个是审核日志。在人工智能进一步成熟,其缺陷得到理解或缓解之前,人类仍需要保持对于循环的控制。
如今,越来越多的开发人员“雇佣”ChatGPT来编写源代码。初步报告显示,ChatGPT能够用多种编程语言编写源代码,并且能够流利地使用所有常见的语言。由于当前这个测试版的训练和模型还存在一定的局限性,所以它产生的代码并不总是完美的。它通常包含可以改变软件运行方式的业务逻辑缺陷、可能会混合不同版本软件的语法错误以及其他看似人性化的问题。
大致上来看,ChatGPT仅是一个初级程序员。那么,谁会成为它的上级?
换句话说,ChatGPT也就是一个初级开发人员水平。因此,当使用这个初级开发人员编写的代码时,必须考虑如何管理它:
谁将成为其上级,以保障其编写代码的整体效果?初级开发人员通常都需要高级开发人员的协助。每一行代码都必须经过测试,有些代码必须修复。然而,有报告表明,这种校对过程比从头开始编写代码更加耗时、更加复杂。
它是将训练代码注入还是重新混合到代码库中?一个更隐蔽的威胁是,有时像GitHub Copilot这样的人工智能机器人会产生源代码,完美地复制训练数据中的代码块。因此,需要利用反剽窃工具来确保许可证风险得到管理。
AI工具从哪里获得训练数据?一个人工智能模型的能力水平与它的训练数据密切相关。如果AI使用旧的或不正确的代码进行训练,那么它将产生旧的和不正确的结果。
引擎托管在哪里?分析源代码的AI机器人需要将源代码整合到其相应的处理设备中。在离开公司管控后,应特别考虑如何保护、使用和处置数据。
无论如何,2022年12月发布的ChatGPT预示着软件开发的新时代。关注这类工具的变化而不是被它们击败是很重要的。在采用这些新工具时要明确,事情变化越多,就越该保持不变:预防安全事件总比发现意外要好。
ChatGPTGPT-3.5 能理解 Bash 吗?与 ChatGPT AI 结对编程
目录
在过去的几个星期,我们已经听到了很多关于人工智能和自然语言处理的消息——特别是关于 OpenAI 的最新版本 GPT。
最近发布的 GPT 3.5,特别是非常新的 ChatGPT 工具,绝对是一个巨大的飞跃。
你可能已经读到有人要求人工智能起草房地产合同和遗嘱,甚至生成编程代码。这篇文章从一个稍微不同的角度来探讨这个工具。
用 ChatGPT 和 Bash 脚本进行实验
我决定看看 ChatGPT 是如何处理 Linux Bash 脚本的。但是(破坏者警报!)当我执行该工具的建议——包括好的代码和差的代码——我开始意识到有一个更强大的好处:有机会与一个非常有帮助的伙伴结对编程。
人工智能最终没能解决我的问题,但它失败的方式绝对是迷人的。看着人工智能寻找新的答案,绝对是疯狂的。
第一次尝试——ChatGPT 试图解决这个问题
让我们看看这一切是如何发生的。以下内容,或多或少,是我提供给人工智能的最初提示:
给我写一个 Bash 脚本,要求输入一个 YouTube 视频的 URL,然后使用 yt-dlp 程序从该 URL 下载。脚本应该把文件名改为 “myvideo.mp4”。
几秒钟后,ChatGPT 告诉了我一个脚本。代码是这样的:
#!/bin/bash
# Prompt user for YouTube video URL
read -p "Enter YouTube video URL: " url
# Download video from YouTube using yt-dlp
yt-dlp $url
# Get the name of the downloaded video file
yt-dlp $url
# Change the downloaded video filename to "myvideo.mkv"
mv video-filename.mp4 myvideo.mp4
人工智能显然知道什么是 Bash 脚本以及如何呈现代码。它甚至对每一行代码的注释都做得很好。人工智能知道如何正确地提示用户输入,然后如何将输入的字符串导入一个叫作 url
的变量中。
它还知道 yt-dlp 程序以及它是如何工作的,适当地给它输入了所提供的 URL。然后它至少试图将下载的视频文件重命名为 myvideo.mp4。但是,当它假设下载的文件名是 video-filename.mp4 时,一切都崩溃了。呜呼!
无论如何,人工智能很有帮助地告诉我如何从其代码中创建脚本,然后运行它。
第二次尝试——ChatGPT 纠正了自己的错误
我的第一个后续提示指出了明显的错误。几秒钟后,ChatGPT 承认了自己的错误,并提出了改进措施。
你是对的,我提供的脚本不会像预期的那样工作,因为它假定下载的视频将被保存到一个名为
video-filename.mp4
的文件中。然而,这并不能保证是这样的。为了解决这个问题......
在这里,人工智能是如何完全参与到这个过程中来的,真是令人震惊。它记住了它的第一个代码,倾听并理解了我的抱怨,并思考了一个解决方案。这就是第二次尝试。
#!/bin/bash
# Prompt user for YouTube video URL
read -p "Enter YouTube video URL: " url
# Download video from YouTube using yt-dlp
yt-dlp $url
# Get the name of the downloaded video file
filename=$(basename $url)
# Change the downloaded video filename to "myvideo.mkv"
mv $filename.mp4 myvideo.mp4
好吧,解决方案看起来是对的。basename
是一个 Linux 工具,可以剥离文件系统的目录,只留下实际的文件名。
问题是,变量 url
不包含本地文件名,而是一个互联网地址。这个肯定是行不通的。
第三次尝试——ChatGPT 再次尝试
所以我又试了一次,解释了那不是合适的工具。而 ChatGPT 又进行了一次尝试。
#!/bin/bash
# Prompt user for YouTube video URL
read -p "Enter YouTube video URL: " url
# Extract the filename from the URL
filename=$(basename $url)
# Download the video using the yt-dlp tool and specify the filename
yt-dlp -o $filename $url
# Change the downloaded video filename to "myvideo.mkv"
mv $filename.mp4 myvideo.mp4
这一次,它显示它已经熟悉了 yt-dlp 的文档,建议我们使用 -o
参数给下载的视频一个名字,basename
现在应该对它起作用。每一次迭代,人工智能都会给我更新的代码,供我剪切和粘贴使用。
当然,这也是行不通的。在下一次尝试中,我感觉到人工智能有点绝望了。
如果一开始你没有成功......至少你会学到一些东西
我打算跳过接下来的一两次尝试,因为我们遇到了一个问题:来自 YouTube 的视频并不总是 MP4,它们有时是 MKV,甚至是 WEBM。这种不确定性可能会扰乱我们正在使用的文件名,所以我要求 ChatGPT 在代码中加入这个功能。
#!/bin/bash
# Prompt user for YouTube video URL
read -p "Enter YouTube video URL: " url
# Extract the filename from the URL
filename=$(basename $url)
# Download the video using the yt-dlp tool and specify the filename
yt-dlp -F mp4 -O $filename $url
# Change the downloaded video filename to "myvideo.mkv"
mv $filename.mp4 myvideo.mp4
当我报告说这也不能工作时,人工智能开始感到困惑。首先,它告诉我,-F
选项期待一个有效的视频格式,但 “mp4” 并不有效。然后它又给我有效的选项,包括 “mp4”。
当人工智能建议的任何东西都不起作用时,它放弃了,建议我确保 yt-dlp 确实安装在我的机器上,并告诉我如何做到这一点。
我想这时候放弃也挺好。即使它没有解决这个问题,它的努力也令人惊讶,它确实向我展示了一些有用的语法,并让我思考。
如果你有兴趣,顺便说一下,这里是一个实际工作的脚本的样子:
#!/bin/bash
# Prompt user for YouTube video URL
read -p "Enter YouTube video URL: " url
# Download video from YouTube using yt-dlp
yt-dlp $url
# Get the name of the downloaded video file
original_filename=$(ls | awk '/mp4/ || /webm/ || /mkv/')
# Change the downloaded video filename to "myvideo.mkv"
mv "$original_filename" /home/ubuntu/vids/myvideo.mp4
前两行代码与 ChatGPT 建议的方式相同。但我随后通过列出当前目录中的所有文件来隔离文件名,并使用 awk
来过滤只包含 mp4、webm 或 mkv 的文件名。(这假定在同一时间,目录中永远不会有超过一个视频文件。)
然后文件名将被写入 original_filename
变量中。然后,我将使用该变量作为 move
命令的一部分来重命名文件 myvideo.mp4
。就我所知,无论实际发送的是什么格式,这都是可行的。
总结
人工智能今天可能还没有为现实世界的编程任务做好准备,但我不想赌它明天......或明年的某个时候也不能做到。
不过,在此期间,我绝对会推荐你在面临具有挑战性的编程任务时使用 ChatGPT 这样的工具。
两个头脑(几乎)总是比一个好。
以上是关于ChatGPT能胜任高级程序员吗?的主要内容,如果未能解决你的问题,请参考以下文章
ChatGPTGPT-3.5 能理解 Bash 吗?与 ChatGPT AI 结对编程
ChatGPT 未来五年会对 NLP 从业者带来怎样的冲击?—分享七月在线nlp高级