A Engenharia de Prompt e a Variação entre LLMs


No universo do desenvolvimento de software, a engenharia de prompts está emergindo como uma disciplina crucial. A habilidade de extrair respostas precisas e úteis de Modelos de Linguagem Grandes (LLMs) tornou-se uma vantagem competitiva. No entanto, um aspecto fundamental dessa nova arte está sendo largamente ignorado: a engenharia de um bom prompt pode, e vai, mudar silenciosamente dependendo do modelo utilizado. Muitos tratam os LLMs como uma entidade monolítica, esperando que um "prompt mestre" funcione universalmente, mas a realidade é muito mais complexa e cheia de nuances.
A verdade é que não existem dois LLMs iguais. Assim como diferentes linguagens de programação têm suas próprias sintaxes e paradigmas, os LLMs possuem "personalidades" distintas, moldadas por suas arquiteturas, dados de treinamento e processos de ajuste fino. Um modelo treinado com um foco massivo em código-fonte de repositórios públicos se comportará de maneira diferente de um que foi otimizado para diálogo criativo. Essas diferenças não são apenas superficiais; elas influenciam a maneira como o modelo "raciocina", interpreta a ambiguidade e estrutura suas respostas. Para um desenvolvedor, isso significa que a forma de pedir a geração de um snippet de código em Python, a explicação de um algoritmo complexo ou a criação de documentação técnica precisa ser adaptada ao "dialeto" específico do LLM em questão.
Essa variação é o ponto cego da engenharia de contexto atual. Vemos uma proliferação de guias e "receitas de bolo" para prompts, mas raramente eles vêm com uma etiqueta especificando para qual modelo foram projetados. Um prompt cuidadosamente elaborado para gerar testes unitários com o modelo A pode produzir resultados medíocres ou verbosos com o modelo B. Essa falta de conscientização pode levar a ciclos de frustração, onde desenvolvedores acreditam que a ferramenta é inadequada, quando, na verdade, a comunicação que está desalinhada. A engenharia de prompt eficaz, portanto, não é sobre encontrar uma fórmula mágica, mas sobre desenvolver a sensibilidade para entender as tendências e particularidades do LLM com o qual se está interagindo.
Para nós, desenvolvedores, isso significa que a experimentação e a adaptação são essenciais. Ao integrar um LLM em um fluxo de trabalho, seja para automação de código, análise de logs ou suporte ao cliente, é preciso investir tempo para "aprender" o modelo. Testar variações de um mesmo prompt, observar como ele lida com a falta de contexto ou com instruções complexas e documentar o que funciona melhor é um passo que não pode ser pulado. A engenharia de prompt no desenvolvimento de software deve evoluir para uma prática mais parecida com a otimização de performance: um processo contínuo de medição, ajuste e refinamento, sempre considerando as características únicas da plataforma que está sendo utilizada. A próxima fronteira não é apenas criar bons prompts, mas criar os prompts certos para o cérebro certo.
Não-Determinismo e as "Personalidades" dos Modelos
Nem todos os LLMs são criados iguais. Mas essa afirmação apenas arranha a superfície. Para um desenvolvedor de software, entender o porquê dessa variação é o que transforma a frustração em produtividade. A questão vai muito além dos dados de treinamento; ela reside na arquitetura, na filosofia de fine-tuning e, crucialmente, em uma característica inerente a esses modelos: o não-determinismo controlado.
Imagine o seguinte cenário: você pede a dois LLMs diferentes para "criar uma função em Python que valide um CPF". O Modelo A retorna um código enxuto, idiomático, usando uma expressão regular e sem comentários, assumindo que você é um desenvolvedor experiente. O Modelo B, para o mesmo prompt exato, entrega uma função muito mais longa, com validação passo a passo, try-except blocks, type hints e comentários detalhados explicando a lógica por trás de cada dígito verificador. Nenhum dos dois está "errado", mas eles operam sob filosofias distintas. O Modelo A pode ter sido otimizado para concisão e uso em ambientes de programação competitiva, enquanto o Modelo B foi ajustado com um viés para segurança, clareza e fins educacionais, priorizando um código que seja fácil de entender e manter, mesmo que mais verboso. Essas "personalidades" são o resultado direto de como os modelos foram refinados após o treinamento inicial, um processo que ensina não apenas o que responder, mas como responder.
Agora, vamos adicionar uma camada ainda mais intrigante: o não-determinismo. Você executa o mesmo prompt, no mesmo Modelo A, duas vezes seguidas e obtém duas variações ligeiramente diferentes do código. Isso não é um bug; é uma das características mais poderosas e incompreendidas dos LLMs. A maioria dos modelos expõe um parâmetro chamado "temperatura". Pense na temperatura como um "botão de criatividade" ou um "gerenciador de risco". Com a temperatura em zero, o modelo se torna “determinístico” (ou o mais próximo disso): ele sempre escolherá a palavra ou token seguinte com a maior probabilidade estatística. O resultado é mais previsível e repetitivo, útil para tarefas que exigem consistência absoluta.
No entanto, quando aumentamos a temperatura, introduzimos uma aleatoriedade calculada. O modelo passa a poder escolher palavras que não são as mais prováveis, mas que ainda fazem sentido no contexto. É como um músico de blues improvisando sobre uma melodia. A estrutura básica está lá, mas as notas escolhidas a cada momento podem variar, criando uma peça única a cada execução. Para um desenvolvedor, isso é ouro. Ao pedir para um LLM "sugerir formas de refatorar este trecho de código", uma temperatura maior que zero pode gerar três ou quatro abordagens válidas e criativas, em vez de apenas a mais óbvia e estatisticamente comum. Pode sugerir o uso de um padrão de projeto que você não havia considerado ou uma função de biblioteca mais moderna.
Essa dança entre a "personalidade" fixa de um modelo e a fluidez do seu resultado não-determinístico é o cerne da engenharia de prompt avançada. Significa que nosso trabalho não é apenas enviar uma instrução e receber uma resposta. É entender que estamos iniciando um diálogo com uma ferramenta que tem seus próprios vieses e um elemento de criatividade controlada. O prompt perfeito, portanto, não é estático. Ele pode precisar de ajustes dependendo se você está falando com o "arquiteto verboso" ou com o "codificador minimalista". E, às vezes, a melhor solução vem de fazer a mesma pergunta algumas vezes, permitindo que a "sorte" do não-determinismo lhe mostre um caminho inesperado e inovador.
Subscribe to my newsletter
Read articles from Leo Cavalcante directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Leo Cavalcante
Leo Cavalcante
Runtimes Engineer and Developer Experience at PicPay.