Simple Science

Ciência de ponta explicada de forma simples

# Informática # Engenharia de software # Inteligência Artificial

O Desafio de Usar LLMs para Infraestrutura como Código

Explorando as limitações dos LLMs em gerar Infraestrutura como Código confiável.

Mayur Amarnath Palavalli, Mark Santolucito

― 7 min ler


Desafios de Desafios de Infraestrutura e LLMs gerar IaC de forma eficaz. Analisando as limitações dos LLMs em
Índice

No mundo do desenvolvimento de software, se fala muito sobre ferramentas que ajudam os devs a fazerem seu trampo de forma mais rápida e eficiente. Uma dessas ferramentas se chama Modelos de Linguagem Grande (LLMs), que podem ajudar na hora de escrever código pra várias tarefas. Mas, mesmo que os LLMs ajudem a gerar código de verdade, ainda não conseguiram pegar o jeito de gerenciar as tarefas em volta, especialmente na hora de configurar a infraestrutura que dá suporte a esse código. É como ter um chef incrível, mas sem cozinha pra cozinhar-fica difícil servir aquelas refeições deliciosas sem um lugar pra prepará-las!

Então, qual é a dele? Esse artigo explora como os LLMs podem construir infraestrutura usando algo chamado Infraestrutura como Código (IaC). Vamos dar um passo atrás e ver o que isso significa. IaC é uma forma de gerenciar recursos na nuvem através de código. Se você já desejou que configurar servidores e armazenamento fosse tão fácil quanto digitar uma receita, é basicamente isso que o IaC faz. Ele permite que os devs escrevam código pra configurar automaticamente seus recursos na nuvem, garantindo que tudo fique consistente e fácil de gerenciar.

O Problema com Geração de Código

Agora, mesmo que o IaC tenha feito avanços incríveis em como gerenciamos a infraestrutura na nuvem, escrever o código certo ainda é um desafio. Imagine tentar montar um móvel da IKEA sem o manual de instruções-vai ser uma confusão de madeira e parafusos. Da mesma forma, quando os devs escrevem código IaC, eles muitas vezes encontram dificuldades por causa das regras complexas que regem os recursos na nuvem.

O interessante é que, enquanto os LLMs tornaram a vida mais fácil para os codificadores, ajudando com tarefas complicadas e reduzindo o tempo pra escrever código, eles ainda têm dificuldade em gerar código IaC correto. Se os LLMs podem ajudar com código normal, por que não com IaC? É isso que estamos aqui pra investigar.

O Sistema de Feedback

Tivemos uma ideia: e se criássemos um Ciclo de Feedback que permite que um LLM aprenda com seus erros ao gerar código IaC? Isso significa que toda vez que o LLM cria um pedaço de código, nós checamos por erros e damos feedback a ele. Se você parar pra pensar, é como um professor corrigindo a lição de casa de um aluno; o aluno aprende e melhora com o tempo.

Para nosso estudo, focamos em gerar código do AWS CloudFormation, um tipo específico de IaC. O AWS CloudFormation ajuda os devs a configurarem recursos na nuvem através de código, bem parecido com usar uma receita pra assar um bolo.

Pra testar esse sistema, começamos com uma série de comandos que descreviam problemas comuns de IaC. Pedimos pro LLM gerar soluções, e então rodamos essas soluções em uma ferramenta chamada cfn-lint. Essa ferramenta checa o código pra erros, como um corretor ortográfico pra escrita. Depois de checar o código, nós fornecemos o feedback pro LLM pra que ele pudesse ajustar e tentar de novo.

Resultados do Ciclo de Feedback

Os resultados foram fascinantes. Descobrimos que, enquanto o ciclo de feedback ajudou, o LLM encontrou um obstáculo após algumas rodadas. Imagine um atleta que continua praticando o mesmo movimento mas não consegue acertar-eventualmente, ele só fica estagnado. Isso é o que vimos aqui: a eficácia do LLM em corrigir erros diminuiu após certo ponto e nivelou.

Nossos testes mostraram que, depois de cerca de cinco iterações, o LLM já não estava fazendo melhorias significativas. Naquele estágio, era como tentar ensinar um gato a buscar-fofo, mas não muito produtivo. O LLM teve dificuldade em entender certas mensagens de erro, o que resultou na criação de novos erros enquanto tentava corrigir os antigos.

A Importância do Código Correto

Quando se trata de gerar IaC, não é só importante ter um código que parece bom; ele precisa funcionar também. É aí que está o desafio. Mesmo que o código passe na checagem do cfn-lint, pode ser que não faça o que o usuário realmente precisa. É como construir um carro sofisticado que não consegue dirigir-não importa quão bem feito ele seja se não cumprir seu propósito.

Isso nos leva ao conceito de Validade Semântica. Simplificando, significa que o código não só deve estar livre de erros, mas também deve fazer o que o usuário deseja. Por exemplo, uma configuração de recurso na nuvem perfeitamente estruturada, mas vazia, não seria útil de jeito nenhum. Os devs precisam garantir que o código gerado atenda às suas necessidades específicas, não só os requisitos técnicos.

Aprendendo com Outros Estudos

Já houve outros estudos nessa área, explorando como os LLMs podem ajudar a gerar IaC eficaz. Um projeto interessante focou em usar regras gramaticais pra melhorar as saídas dos LLMs e reduzir Erros de Sintaxe. Pense nisso como dar ao LLM um conjunto de regras a seguir-meio que dando uma lista de instruções pra uma criança montar um Lego.

Outra abordagem investigou como corrigir erros de sintaxe no código. Uma estrutura conseguiu uma taxa de sucesso significativa na correção de erros encontrados no código gerado-meio que como ter um super-herói pra salvar o dia quando as coisas dão errado. O desafio continua, porém, porque mesmo com essas ferramentas, os LLMs ainda têm um longo caminho a percorrer pra serem confiáveis pros desenvolvedores.

As Limitações dos LLMs

Apesar das suas capacidades, os LLMs ainda enfrentam limitações sérias na hora de gerar código IaC de forma confiável. O primeiro problema é que nem todos os LLMs funcionam da mesma maneira. Alguns podem ser melhores que outros em entender infraestrutura na nuvem, mas nenhum é perfeito ainda. É como querer uma pizza de diferentes restaurantes; às vezes você consegue uma fatia incrível, e outras vezes, é uma bagunça encharcada.

Outro problema é que o tipo de ferramenta de infraestrutura usada pode impactar o desempenho do LLM. Por exemplo, o AWS CloudFormation é bem documentado, facilitando a vida dos LLMs pra aprender a partir de dados existentes. Mas, se testássemos outra ferramenta menos conhecida, provavelmente veríamos uma queda no desempenho devido à falta de dados de treinamento disponíveis.

Direções Futuras

Então, qual é o próximo passo nessa jornada dos LLMs e IaC? Um caminho potencial é redesenhar as mensagens de erro pra torná-las mais claras pros LLMs. Se conseguirmos ajustar o feedback de forma que os modelos possam entender melhor, isso pode levar a correções mais precisas e tornar o processo todo mais tranquilo.

Também vemos potencial no desenvolvimento de novas ferramentas que chequem não apenas a validade do esquema, mas também a validade semântica. Ter uma ferramenta como a cfn-lint que avalia quão bem a infraestrutura gerada atende às necessidades do usuário seria um divisor de águas.

E não vamos esquecer de outras ferramentas de IaC como o Pulumi, que permite que os desenvolvedores usem suas linguagens de programação favoritas. Poderíamos explorar como usar essas ferramentas junto com os LLMs e integrar ciclos de feedback na mistura.

Conclusão

Resumindo, enquanto os LLMs têm o potencial de ajudar a gerar IaC, eles ainda precisam melhorar. Nossa experiência mostrou que, embora ciclos de feedback possam trazer alguns benefícios, eles também podem encontrar limitações que os impedem de serem totalmente eficazes. É um trabalho em andamento, muito parecido com tentar treinar um filhote-divertido, fofo e um pouco bagunçado às vezes.

Com alguns ajustes nas mensagens de erro e melhores ferramentas pra garantir a correção, poderíamos ver um futuro onde os LLMs desempenham um papel crucial na automação da configuração de infraestrutura. Até lá, os desenvolvedores provavelmente continuarão se debatendo com essa área complexa, buscando maneiras melhores de agilizar seu trabalho e acertar na configuração.

Artigos semelhantes