Programar com uma IA

Programar com um Agente de IA

A inteligência artificial (IA) mudou fundamentalmente a forma como programamos. Os agentes de IA podem gerar, otimizar e até ajudar na depuração de código. No entanto, existem algumas limitações que os programadores devem ter em mente ao trabalhar com IA.

Problemas com a ordem e duplicação

Os agentes de IA têm dificuldade com a ordem correta do código. Por exemplo, podem colocar inicializações no final de um ficheiro, o que causa erros de execução. Além disso, a IA pode definir, sem hesitação, várias versões da mesma classe ou função dentro de um projeto, o que leva a conflitos e confusão.

Uma plataforma de código com memória e estrutura de projeto ajuda

Uma solução para isto é a utilização de plataformas de código de IA que conseguem gerir a memória e as estruturas do projeto. Isto ajuda a manter a consistência em projetos complexos. Infelizmente, estas funções nem sempre são aplicadas de forma consistente. Como resultado, pode acontecer que a IA perca a coerência de um projeto e introduza duplicações indesejadas ou dependências incorretas durante a programação.

A maioria das plataformas de codificação de IA trabalha com as chamadas ferramentas que o modelo de linguagem grande (LLM) pode invocar. Essas ferramentas baseiam-se num protocolo de norma aberta (MCP). É, portanto, possível ligar um agente de codificação de IA a um IDE como o Visual Code. Opcionalmente, pode configurar um LLM localmente com llama ou ollama e escolher um servidor MCP para integrar. A NetCare criou um servidor MCP para ajudar na depuração e na gestão do sistema (linux) subjacente. Útil para quando pretende colocar o código em direto imediatamente.
Os modelos podem ser encontrados em huggingface.

As extensões de IDE são indispensáveis

Para gerir melhor o código gerado por IA, os programadores podem utilizar extensões de IDE que monitorizam a correção do código. Ferramentas como linters, verificadores de tipo e ferramentas avançadas de análise de código ajudam a detetar e corrigir erros precocemente. Constituem um complemento essencial ao código gerado por IA para garantir a qualidade e a estabilidade.

A causa dos erros repetitivos: contexto e papel nas APIs

Uma das principais razões pelas quais os agentes de IA continuam a repetir erros reside na forma como interpretam as APIs de IA. Os modelos de IA precisam de contexto e de uma descrição clara da função para gerar código eficaz. Isto significa que os prompts devem ser completos: não devem conter apenas os requisitos funcionais, mas também tornar explícitos o resultado esperado e as condições de contorno. Para facilitar isto, pode guardar os prompts num formato padrão (MDC) e enviá-los sempre com a IA. Isto é especialmente útil para regras de programação genéricas que utiliza, bem como para os requisitos funcionais e técnicos e a estrutura do seu projeto.

Ferramentas como FAISS e LangChain ajudam

Produtos como FAISS e LangChain oferecem soluções para permitir que a IA lide melhor com o contexto. O FAISS, por exemplo, ajuda na pesquisa e recuperação eficiente de fragmentos de código relevantes, enquanto o LangChain ajuda a estruturar o código gerado por IA e a manter o contexto dentro de um projeto maior. Mas, mesmo aqui, pode configurá-lo localmente com bases de dados RAG.

Conclusão: útil, mas ainda não autónoma

A IA é uma ferramenta poderosa para programadores e pode ajudar a acelerar os processos de desenvolvimento. No entanto, ainda não é capaz de conceber e construir autonomamente uma base de código complexa sem supervisão humana. Os programadores devem considerar a IA como um assistente que pode automatizar tarefas e gerar ideias, mas que ainda necessita de orientação e correção para alcançar um bom resultado.

Entre em contacto para ajudar a configurar o ambiente de desenvolvimento, permitindo que as equipas tirem o máximo partido do mesmo e se foquem mais na engenharia de requisitos e no design do que na depuração e na escrita de código.

 

Gerard

Gerard atua como consultor e gestor de IA. Com muita experiência em grandes organizações, ele pode desvendar um problema rapidamente e trabalhar rumo a uma solução. Combinado com uma formação econômica, ele garante escolhas comercialmente responsáveis.