Aider: Assistente em pair programming potenciado por IA.

Olá a todos.

Hoje vamos falar mais uma vez de programação. E programação assistida por IA.

Um colega e amigo de longa data, mostrou-me esta ferramenta: O Aider, um assistente de programação com IA, diretamente no nosso terminal.
Nós, como pessoal de DevOps e de IaC, sabemos bem o que significa ter que equilibrar o tempo entre pensar numa solução e escrever o código de forma eficiente, antes de perdermos horas em testes de QA para garantir que não partimos nada. E se houvesse uma ferramenta que nos auxiliasse, diretamente a escrever código como o geek residente que por acaso naquele momento foi beber um cafe? É aqui que o Aider entra em ação.

Connecting to LLMs | aider

O que é o Aider?

Basicamente, o Aider é um assistente de pair programming potenciado por IA, que nos ajuda diretamente no terminal enquanto trabalhamos no nosso código. Integrado com modelos de linguagem de topo, como o GPT-4, LLAMA ou o Claude 3.5, o Aider oferece uma experiência fluida para quem usa git, tornando as nossas sessões de programação muito mais eficientes e dinâmicas. O mais interessante?
Funciona de uma forma muito simples: depois de instalado, basta apontarmos para o repositório git do projeto e o Aider começa a trabalhar connosco.

Porquê usar o Aider no nosso workflow?

Aider não é apenas mais uma ferramenta de IA genérica. Estamos a falar de uma solução que foi afinada para compreender o que estamos a fazer e onde queremos chegar com o nosso código.
Desde corrigir bugs, adicionar funcionalidades, descobrir situações que podem ser exploradas para comprometer a segurança, ou até melhorar a estrutura do código, o Aider consegue compreender as nossas necessidades e aplicar as modificações diretamente nos ficheiros do nosso projeto. A vantagem é que, ao contrário de outras ferramentas, o Aider compromete diretamente as alterações no git com mensagens de commit relevantes, poupando-nos tempo a tentar entender o que foi alterado depois de várias iterações.

A experiência de trabalhar com Aider é muito parecida com ter um colega a trabalhar lado a lado, a sugerir melhorias e a aplicar mudanças em tempo real, sem precisar de explicar tudo desde o início. Por exemplo, podemos dar-lhe comandos simples como “adiciona uma função que valide emails” ou “resolve o erro desta stack trace”, e o Aider não só sugere, como faz as alterações no código por nós.

A magia da integração com o Git

Para nós, que vivemos num ambiente de controlo de versões, o facto de o Aider integrar-se diretamente com git é garantidamente uma grande mais-valia. Imaginem estar a trabalhar num repositório com múltiplos ficheiros e pedir ao Aider para alterar algo em simultâneo em vários ficheiros. Ele não só faz isso, como cria automaticamente os commits, permitindo-nos manter um histórico de mudanças claro e organizado.

Outro ponto forte é o mapeamento do repositório, que permite ao Aider ter uma visão geral do nosso código. Isto é fundamental quando trabalhamos em projetos grandes, onde a compreensão do contexto é chave para evitar fazer mudanças que possam quebrar o código. Além disso, podemos editar os ficheiros no nosso editor habitual e, ao voltar ao Aider, ele já tem a versão atualizada do ficheiro.

Programar com IA: uma mudança no paradigma e forma de pensar

Nós, que estamos habituados a longas horas de debugging e a procurar soluções em fóruns, sabemos bem o quão confuso para a nossa linha de pensamento encontrar respostas. O Aider acelera esse processo, oferecendo soluções que fazem sentido no contexto do código em que estamos a trabalhar. Ele é rápido a entender o que precisamos e, mais importante ainda, trabalha de forma colaborativa connosco. Isto significa que, ao invés de nos sentirmos isolados na nossa luta com o código, temos uma IA ao nosso lado, sempre pronta a ajudar.

Outro aspeto que torna o Aider tão útil é a sua capacidade de lidar com múltiplas linguagens de programação. Python, JavaScript, TypeScript, HTML, PHP, Puppet, Ansible entre outras, são todas suportadas. Ou seja, não importa em que projeto estejamos a trabalhar, o Aider consegue adaptar-se ao contexto e ajudar-nos a atingir os nossos objetivos de forma mais rápida e eficiente.

Como começar a usar o Aider?

Para quem ainda não experimentou, a instalação é bastante simples. Podemos começar com este comando no terminal:

python -m pip install -U aider-chat

A seguir, basta navegar até ao nosso repositório git com `cd /para/o/teu/repo` e dar início ao Aider com:

aider

Dependendo do modelo de IA que queremos usar, configuramos as nossas chaves de API, seja do OpenAI ou Anthropic. A partir daí, podemos começar a dialogar diretamente com o Aider, dar-lhe comandos, pedir sugestões e ver o código a ganhar forma em tempo real.
Nota: A versão de python que usei para o Aider compilar e funcionar bem foi a 3.12. No entanto isto não está escrito em pedra. É apenas o meu caso.

Integrando com a nossa instância de Ollama

O processo de integração com o nosso Ollama é muito simples:

  • Descarregar o modelo que desejamos utilizar no nosso Ollama.
    ollama pull <model>
  • Inicar o processo de Ollama:
    ollama serve
  • Exportar as variaveis de ambiente para que o nosso Aider consiga chegar a nossa instancia de Ollama.
    export OLLAMA_API_BASE=http://127.0.0.1:11434 # Substituir o 127.0.0.1 pelo IP do computador que está a correr o nosso Ollama.Exportar as variaveis de ambiente para que o nosso Aider consiga chegar a nossa instancia de Ollama.
  • Finalmente executar o nosso Aider:
    aider --model ollama/<model>

Por exemplo: aider –model ollama/llama3:70b # Por exemplo, para usar o modelo llama3:70b
Para mais configurações suportadas visitem: https://aider.chat/docs/llms.html

Use cases: o Aider no dia a dia

Agora que já tivemos um vislumbre como o Aider funciona, imaginemos alguns cenários onde ele pode ser uma verdadeira ajuda no nosso dia a dia. Estamos a trabalhar num projeto e, de repente, deparamos-nos com um bug que não conseguimos entender. Basta passar a stack trace para o Aider e pedir-lhe para resolver o problema. Em minutos, temos uma aproximação da solução funcional, ou no pior dos casos, uma ideia de como fugir da situação.

Ou, por exemplo, estamos a adicionar novas funcionalidades a uma API. Podemos pedir ao Aider para gerar os testes unitários ou até mesmo para escrever a documentação das mudanças que fizemos no código. O resultado? Mais tempo para focar na parte criativa da programação e menos tempo perdido em tarefas repetitivas..

E claro, como o Aider pode interagir com múltiplos ficheiros ao mesmo tempo pois interage com o modelo de LLM em modo RAG, torna-se especialmente útil em projetos grandes e complexos, onde pequenas alterações podem ter impactos em várias partes do sistema. Em vez de andarmos manualmente a corrigir ficheiro a ficheiro, deixamos o Aider fazer esse trabalho complexo, desde um ponto que nós tenhamos alterado. Por exemplo rename de variáveis para uma nova convenção de nomenclatura dentro da aplicação.

Aider: um vislumbre do futuro da programação

O que mais me entusiasma com o Aider é a ideia de que estou a testemunhar um dos possíveis futuros da programação a acontecer agora. Estamos todos a passar de um modelo onde a programação é quase algo solitário e muitas vezes demorado, para um ambiente onde a colaboração com uma IA nos torna mais produtivos e criativos.
Ferramentas como o Aider não substituem de forma alguma os programadores, nem foram desenhadas para tal,  mas sim potenciam quem escreve o código, permitindo que nos concentremos no que realmente importa: a inovação e a criatividade.

Imaginem o impacto que algo como estas ferramentas pode ter para equipas inteiras de desenvolvimento. Em vez de cada membro da equipa estar preso ao seu próprio ritmo, todos podem colaborar diretamente com o Aider, mantendo uma cadência constante de progresso. Com o Aider, a barreira de entrada – a chamada curva de aprendizagem – para novos programadores também diminui, uma vez que têm acesso a um “parceiro” sénior que os guia enquanto aprendem.

Conclusão

E chegamos ao fim de mais um post semanal. Neste conseguimos claramente entender que nos encontramos numa nova era de desenvolvimento, onde a IA e a programação andam de mãos dadas.
O Aider, com a sua integração perfeita no terminal e o suporte para git, é uma ferramenta que nos dá a possibilidade de programar de forma mais colaborativa, mais rápida e com mais confiança. Para nós, que já passámos tantas horas a escrever código, e o dobro do tempo a tentar entender porque não funcionava, é impossível não ficarmos entusiasmados com a forma como ferramentas como o Aider estão a transformar o nosso trabalho.

Se ainda não experimentaram, recomendo vivamente dar uma chance ao Aider e ver como ele pode tornar os nossos dias de programação mais leves e produtivos. Porque, no final de contas, ter uma IA ao nosso lado, que entende o nosso código e as nossas intenções, é simplesmente um game changer.

Até a próxima semana. E já sabem, para corrigir alguma coisa errada ou que pode ser melhorada, estarei no sitio do costume.
Abraço
Nuno