paint-brush
Como o ChatGPT lida com scripts bash do Linuxpor@dclinton
18,443 leituras
18,443 leituras

Como o ChatGPT lida com scripts bash do Linux

por David Clinton6m2023/02/20
Read on Terminal Reader

Muito longo; Para ler

O ChatGPT é uma nova ferramenta da OpenAI que pode ser usada para programar em pares com um parceiro eminentemente útil. Este artigo analisa como o ChatGPT lida com scripts Linux Bash. Você pode assistir a uma versão em vídeo deste artigo aqui se quiser usá-lo para complementar seu aprendizado.
featured image - Como o ChatGPT lida com scripts bash do Linux
David Clinton HackerNoon profile picture

Temos ouvido muito sobre inteligência artificial e processamento de linguagem natural – e em particular sobre a versão mais recente do GPT da OpenAI – há semanas.


O recente lançamento do GPT 3.5, e especificamente da novíssima ferramenta ChatGPT, é definitivamente um grande avanço.


Você pode ter lido sobre pessoas que pedem à IA para redigir contratos e testamentos imobiliários e até mesmo gerar código de programação. Este artigo aborda a ferramenta de uma perspectiva ligeiramente diferente.


Você pode assistir a uma versão em vídeo deste artigo aqui se quiser usá-lo para complementar seu aprendizado:




Experimentando o ChatGPT e o Bash Scripting

Decidi ver como o ChatGPT lida com scripts Linux Bash. Mas (alerta de spoiler!) enquanto trabalhava com as sugestões da ferramenta - código bom e código ruim - comecei a perceber que havia um benefício ainda mais poderoso diante de mim: uma oportunidade de programar em par com um parceiro eminentemente útil .


A IA acabou falhando em resolver meu problema, mas a maneira como falhou foi absolutamente fascinante. E observar a IA em busca de novas respostas foi absolutamente louco.

Primeira tentativa – ChatGPT tenta resolver o problema

Então vamos ver como tudo aconteceu. Aqui, mais ou menos, está o prompt inicial que forneci ao AI:

Escreva-me um script Bash que solicite o URL de um vídeo do YouTube e, em seguida, use o programa yt-dlp para fazer o download desse URL. O script deve alterar o nome do arquivo para "myvideo.mp4"

Depois de alguns segundos, o ChatGPT me disse que um script estava chegando. Veja como ficou esse código:

 #!/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

A IA obviamente sabe o que são scripts Bash e como apresentar o código. Ele até fez um ótimo trabalho comentando cada linha de código. A IA sabe como solicitar corretamente a entrada do usuário e, em seguida, como importar a string de entrada para uma variável chamada url .


Ele também conhece o programa yt-dlp e como ele funciona, alimentando-o adequadamente com a URL fornecida. Em seguida, ele pelo menos tentou renomear o arquivo de vídeo baixado para myvideo.mp4. Mas tudo meio que quebrou quando assumiu que o nome do arquivo de download seria video-filename.mp4. Opa.


De qualquer forma, a IA me mostrou como criar o script a partir de seu código e executá-lo.

Segunda tentativa - ChatGPT se corrige

Meu primeiro prompt de acompanhamento apontou o erro óbvio e, após alguns segundos, o ChatGPT admitiu que estava errado e ofereceu uma melhoria.

Você está certo, o script que forneci não funcionaria como esperado porque supõe que o vídeo baixado será salvo em um arquivo com o nome video-filename.mp4 . No entanto, isso não é garantido para ser o caso. Para consertar isso...

É impressionante como a IA está completamente envolvida no processo aqui. Ele se lembra de seu primeiro código, ouve e entende minha reclamação e pensa em uma solução. Aqui está a segunda tentativa:

 #!/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

Ok, então posso ver como a solução parecia certa. basename é uma ferramenta do Linux que pode remover os diretórios do sistema de arquivos e não deixar nada além do nome do arquivo real.


O problema é que a variável url não contém um nome de arquivo local, mas um endereço de internet. Este definitivamente não vai funcionar.

Terceira tentativa - ChatGPT tenta novamente

Então tentei novamente, explicando como aquela não era a ferramenta certa para o trabalho. E o ChatGPT dá outra chance.

 #!/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

Desta vez, ele mostra que se familiarizou com a documentação do yt-dlp, sugerindo que usemos o argumento -o para dar um nome ao vídeo baixado, contra o qual basename deve funcionar agora. A cada iteração, a IA me fornece esse código atualizado para meu prazer de recortar e colar.


Claro, isso também não iria funcionar. Com a próxima tentativa, tenho a sensação de que a IA está um pouco desesperada.

Se no começo você não tiver sucesso... Pelo menos você aprenderá alguma coisa

Vou pular a próxima tentativa ou duas, pois encontramos um problema paralelo: os vídeos vindos do YouTube nem sempre são MP4s, às vezes são MKVs ou até WEBMs. Essa incerteza pode atrapalhar os nomes dos arquivos com os quais estamos trabalhando, então pedi ao ChatGPT para incluir isso no código.

 #!/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

Quando relatei como isso também não funcionaria, a IA começou a ficar confusa. Primeiro, ele me disse que a opção -F esperava um formato de vídeo válido, mas que "mp4" não era válido. Então me dá opções válidas, incluindo "mp4".


Quando nada sugerido pela IA funcionou, ele desistiu, aconselhando-me a garantir que o yt-dlp estivesse realmente instalado em minha máquina e me mostrando como fazer isso.


Achei que era um bom momento para desistir. Foi um esforço surpreendentemente bom e, mesmo que não resolvesse o problema, mostrou-me alguma sintaxe útil e me fez pensar.


A propósito, caso você esteja interessado, veja como seria um script de trabalho real.

 #!/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

As duas primeiras linhas de código são exatamente como o ChatGPT sugeriu. Mas, em seguida, isolo o nome do arquivo listando todos os arquivos no diretório atual e usando awk para filtrar apenas nomes de arquivos contendo mp4, webm ou mkv. (Isso pressupõe que nunca haverá mais de um arquivo de vídeo no diretório por vez.)


O nome do arquivo será gravado na variável original_filename . Em seguida, usarei essa variável como parte de um comando move para renomear o arquivo myvideo.mp4 Pelo que sei, isso funcionará independentemente do formato realmente enviado.

Empacotando

A inteligência artificial pode não estar totalmente pronta para as tarefas de programação do mundo real hoje, mas eu não gostaria de apostar que chegará lá amanhã... ou em algum momento do ano que vem.


Enquanto isso, eu recomendaria absolutamente o uso de ferramentas como o ChatGPT sempre que você se depara com uma tarefa de programação desafiadora.


Duas mentes são (quase) sempre melhores que uma.


Imagem em destaque gerada por meio do promptde IA do HackerNoon de “Um robô de IA dando uma festança”.


Além do meu canal no YouTube (no qual você pode se inscrever), meu site contém links para todos os tipos de produtos tecnológicos disponíveis como artigos, livros e cursos.


Publicado também aqui .