Как ChatGPT обрабатывает скрипты Linux Bash

Как ChatGPT обрабатывает скрипты Linux Bash

20 февраля 2023 г.

В течение нескольких недель мы много слышали об искусственном интеллекте и обработке естественного языка, в частности о последней версии GPT OpenAI.

Недавний выпуск GPT 3.5 и особенно нового инструмента ChatGPT, безусловно, является огромным шагом вперед.

Возможно, вы читали о людях, которые просили ИИ составлять контракты на недвижимость и завещания и даже генерировать программный код. В этой статье инструмент рассматривается с несколько иной точки зрения.

Вы можете посмотреть видеоверсию этой статьи здесь, если хотите использовать ее в дополнение к обучению:

https://www.youtube.com/watch?v=GxJKuINwPSw%3F&embedable =правда

Эксперименты с ChatGPT и Bash Scripting

Я решил посмотреть, как ChatGPT обрабатывает сценарии Linux Bash. Но (предупреждение о спойлере!) по мере того, как я работал с предложениями инструмента — как с хорошим кодом, так и с плохим кодом — я начал понимать, что передо мной стояло еще более важное преимущество: возможность программировать в паре с чрезвычайно полезным партнером. .

ИИ в конечном итоге не смог решить мою проблему, но то, как это удалось, было просто захватывающим. И наблюдать, как ИИ ищет новые ответы, было просто безумием.

Первая попытка — ChatGPT пытается решить проблему

Итак, давайте посмотрим, как все это было. Вот примерное изначальная подсказка, которую я дал ИИ:

<цитата>

Напишите мне сценарий Bash, который запрашивает URL-адрес видео YouTube, а затем использует программу 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< /code> теперь должно работать. С каждой итерацией ИИ дает мне этот обновленный код для вырезания и вставки.

Конечно, это тоже не сработало. При следующей попытке я чувствую, что ИИ немного отчаялся.

Если сначала у вас не получится... По крайней мере, вы чему-то научитесь

Я пропущу следующую или две попытки, поскольку мы столкнулись с побочной проблемой: видео, поступающие с 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, всякий раз, когда вы сталкиваетесь со сложной задачей программирования.

Два ума (почти) всегда лучше, чем один.

Избранное изображение, созданное с помощью HackerNoon AI “ Робот с искусственным интеллектом устраивает вечеринку».


Помимо моего канала YouTube (на который вы можете подписаться), мой веб-сайт содержит ссылки на всевозможные технические достижения, доступные в виде статей, книг и курсов.


Также опубликовано здесь.



Оригинал