[PITCH] Criei uma ferramenta com IA para explicar erros do terminal
Hello World!!!
Vamos seguir a cultura porque é minha primeira publicação aqui no TabNews hhhhhh.
Queria partilhar convosco um projeto recente que fiz c para voltar a movimentar meu github. Recriei oTheFuck de Vladimir Iakovlev com menos da metade de código.
Daí nasceu o WTF (What is The Fault?). Dê uma olhada :)
Primeiro, o que é The Fuck?
É um app escrito em Python que corrige o último comando do terminal pela expressão correcta. TheFuck usa usa uma combinação de heurísticas e regras predefinidas para analisar o histórico recente do terminal e tentar corrigir comandos que foram digitados incorretamente. Por exemplo, ele pode sugerir o uso de sudo se o comando falhou por falta de permissões, ou pode corrigir erros de digitação, como trocar git stauts
por git status
.
Ele usa principalmente o histórico de comandos e padrões comuns de erros para determinar a correção mais provável para o comando que você queria executar. Além disso, o The Fuck é extensível, permitindo que você adicione suas próprias regras de correção.
Porquê criei WTF?
O que o TheFuck faz é magia para os olhos de um junior como eu, para ser sincero tentei ler o código durante uma semana e não, eu não consegui entender hhhhh. Aí eu falei comigo mesmo: "Vou fazer o meu!".
A ideia do WTF não é substituir o TheFuck, mas sim servir como inspiração para meu portifólio rodeado de projetos que não agregam nada para a comunidade, desde bot para baixar cursos em plataformas como Kiwify e etc. Decidi então que iria começar a fazer projetos "legais" e que agregam algo à mim ou para comunidade.
Ideia eu tenho e agora?
Eu como um bom preguiçoso que sou, achei a solução mais completa possível, mas não a melhor... Usar ChatGPT. O ChatGPT já sabe tudo, já conhece todos os erros, já conhece todos os comandos, conhece inclusive o próprio TheFuck dos pés a cabeça. Decisão feite e parti para o desenvolvimento!
Processo de contrução do WTF
O ChatGPT vai cuidar de tudo e retornar o comando correcto simples assim - Falei comigo mesmo. Só que pareceu uma solução medíocre comparado ao que TheFuck já faz e sinceramente isso me desmotivou, mas não me fez desistir 😁.
Arranjei um atalho, mas não o melhor caminho.
Primeiro passo foi implementar o mesmo comportamento, então abri meu VSCODE e decidi escolher minha stack: Python, Poetry, Langchain, OpenAI
e Typer
.
Eu poderia ter usado API da OpenAI directamente, mas eu quis fazer algo mais extensível por isso escolhi o Langchain, já que me daria liberdade de implementar outros LLMs no futuro sem muita complicação.
Depois de ter concluído o primeiro passo que era gerar o mesmo comportamento do TheFuck eu senti um vazio. O que eu fiz afinal - Me questionei. Era só um TheFuck premium já que eu teria que possuir um API_KEY da OpenAI e gastar meus míseros centavos.
O TheFuck faz isso gratuito e é muito mais rápido, não 🥲? Ah pois, foi então que decidi incrimentar um nova funcionalidade. O WTF agora além de corrigir o comando errado terá que explicar qualquer erro que apareça no terminal.
Isso foi genial porque as vezes, eu como JUNIORZÃO me pego perdido nos logs
do terminal, tudo em inglês e sem entender nada do erro. Há dias que o faço é copiar e colar o erro no ChatGPT para intrepetar e me explicar. Agora eu tenho o GPT no meu terminal sem precisar me preocupar em copiar pois WTF já faz tudo por mim:
- Pega o último erro do terminal
- Usa langchain para chamar API da OpenAI
- E me retorna tudo bonitinho na linguagem que eu preferir
Isso tá bom de maise 😊👍
(Ler na voz de Manoel Gomes).
WTF feito, funcional e publicado
Depois de concluído subi o projeto no Github, mas a minha ideia era disponibilizar como um pacote Python usado o Poetry
para que qualquer conseguisse baixar com:
pip install wtf
Algumas coisas me impediram de fazer isso e irei listar aqui para que a comunidade possa ajudar a tornar esse projeto grande e, inclusive, gratuito(sem GPT).
- Um CLI digno, algo como WTF --init para configurações iniciais como API_KEYS e etc
- Suporte para Windows
- Adição de multi-linguagem para textos estáticos
- Adição de um LLM gratuito
- Implementar funções para rodar com LLMs localmente(ex: llama)
Conlusão
É isso pessoal, o projeto está documento no github para quem quiser dar uma olhada 😊. Não se esqueça de deixar uma estrela e contribuir caso queira ajudar a tornar grande o projeto.
Desculpa se tiver alguma incosistência no texto, eu sou relativamente novo nesse mundo de escrita de artigos, cada dia que passa busco aprender e melhorar minha escrita, se tiver algum feedback sobre isso agradeceria.
Referências
- Python: Linguagem de programação usada para desenvolvimento geral, incluindo IA, web, automação e mais.
- Poetry: Ferramenta para gerenciamento de dependências e publicação de pacotes em Python.
- Langchain: Biblioteca para construção de aplicações que utilizam modelos de linguagem (LLMs).
- OpenAI: Plataforma que fornece acesso a modelos de linguagem avançados, como GPT, para diversas aplicações de IA.
- Typer: Biblioteca em Python para criação rápida e intuitiva de interfaces de linha de comando (CLIs).
Obrigado 🙌.