数周以来,我们一直听到很多关于人工智能和自然语言处理的消息,尤其是最新版本的 OpenAI 的 GPT。 最近发布的 GPT 3.5,特别是非常新的 ChatGPT 工具,绝对是一个巨大的飞跃。 你可能听说过有人要求人工智能起草房地产合同和遗嘱,甚至生成编程代码。本文从略微不同的角度来探讨该工具。 如果你想用它来补充你的学习,你可以在这里观看这篇文章的视频版本: https://www.youtube.com/watch?v=GxJKuINwPSw%3F&embedable=true 试用 ChatGPT 和 Bash 脚本 我决定看看 ChatGPT 如何处理 Linux Bash 脚本。但是(剧透警报!)当我研究该工具的建议时——无论是好的代码还是坏的代码——我开始意识到有一个更强大的好处就在眼前:一个与非常有帮助的合作伙伴结对编程的机会. 人工智能最终未能解决我的问题,但它失败的 绝对令人着迷。看着 AI 寻找新答案绝对是疯狂的。 方式 第一次尝试——ChatGPT 尝试解决问题 那么让我们看看这一切是如何发生的。这里,或多或少,是我提供给 AI 的初始提示: 给我写一个 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 脚本是什么以及如何呈现代码。它甚至在注释每一行代码方面都做得很好。 AI 知道如何正确提示用户输入,然后如何将输入字符串导入名为 的变量。 url 它还知道 yt-dlp 程序及其工作原理,并适当地向它提供所提供的 URL。然后它至少尝试将下载的视频文件重命名为 myvideo.mp4。但是当它假设下载文件名为 video-filename.mp4 时,一切都会崩溃。哎呀。 无论如何,AI 很有帮助地向我展示了如何从其代码创建脚本然后运行它。 第二次尝试——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 好的,所以我可以看到解决方案看起来是怎样的。 是一个 Linux 工具,它可以去除文件系统目录,只留下实际的文件名。 basename 问题是变量 不包含本地文件名,而是一个互联网地址。这个肯定不行 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 文档,建议我们使用 参数为下载的视频命名, 现在应该可以使用该名称。在每次迭代中,AI 都会为我提供更新的代码,让我享受剪切和粘贴的乐趣。 -o basename 当然,那也行不通。在下一次尝试中,我感觉 AI 有点绝望。 如果一开始你没有成功......至少你会学到一些东西 我将跳过下一两次尝试,因为我们遇到了一个附带问题:来自 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 当我报告说那也行不通时,AI 开始感到困惑。首先它告诉我 选项需要有效的视频格式,但“mp4”无效。然后它给了我有效的选项,包括“mp4”。 -F 当 AI 的建议无效时,它放弃了,建议我确保 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 建议的方式。但是我随后通过列出当前目录中的所有文件并使用 过滤仅包含 mp4、webm 或 mkv 的文件名来隔离文件名。 (假设目录中一次不会有超过一个视频文件。) awk 然后文件名将被写入 变量。然后我将使用该变量作为 命令的一部分来重命名文件 据我所知,无论实际发送什么格式,它都可以工作。 original_filename move myvideo.mp4 包起来 人工智能今天可能还没有为现实世界的编程任务做好准备,但我不想打赌它明天……或明年的某个时候会到达那里。 不过与此同时,我绝对建议您在面临具有挑战性的编程任务时使用 ChatGPT 等工具。 两种思想(几乎)总是比一种思想更好。 通过 提示生成的特色图片“一个 AI 机器人正在举行狂欢派对”。 HackerNoon AI 除了 (您可以订阅)之外, 还链接到各种文章、书籍和课程等技术优势。 我的 YouTube 频道 我的网站 也发布 。 在这里