Tecnologia além do código.
Régys Borges da Silveira
← Voltar para explorar os artigos

IA em ação – Engenharia de Prompt: Fundamentos, Estratégias Avançadas e Ética na IA Generativa

prompt para ia
Neste artigo 16 tópicos

A Inteligência Artificial Generativa consolidou-se como uma ferramenta essencial para otimização de processos técnicos, elaboração de relatórios, simulações e até programação, no entanto, a eficácia dessa tecnologia está intrinsecamente ligada à qualidade da instrução fornecida pelo usuário.

Este artigo baseado em um curso de prompt que ministrei para o SENAI, explora a definição técnica de prompts, a anatomia de uma instrução eficaz, estratégias avançadas de engenharia de prompt e os protocolos de segurança necessários para mitigar alucinações e riscos operacionais.

1. Introdução e Definições Fundamentais

A Inteligência Artificial Generativa é definida como uma ferramenta poderosa capaz de auxiliar em estudos técnicos, cálculos de engenharia, criação de códigos e análise de dados. O mecanismo central de interação com esses sistemas é o prompt.

Tecnicamente, um prompt é a instrução, comando ou contexto fornecido ao sistema (como ChatGPT, Copilot ou Gemini) para guiar a geração de conteúdo. A qualidade da saída (output) é diretamente proporcional à qualidade da entrada (input). Uma analogia útil é comparar a IA a um motor de busca, onde o prompt é a pesquisa, ou a um aluno em sala de aula, onde o prompt é a instrução do professor.

1.1 O Processo Computacional

É fundamental entender que a LLM (Large Language Model) opera como um motor de previsão estatística, desprovido de compreensão semântica real ou intencionalidade, ela não pensa. Diferente de um compilador, que é determinístico (0 ou 1, erro ou sucesso), uma IA é probabilística. Ela não “sabe” a sintaxe de uma linguaguem de programação, ela “adivinha” a sintaxe baseada em padrões que viu durante o treinamento.

Este processo ocorre em três etapas críticas:

  1. Tokenização e Contexto: O input do usuário é convertido em vetores numéricos e alocado na “Janela de Contexto” da IA. O modelo não analisa apenas a última frase, mas todo o histórico disponível na janela para manter a coerência. O prompt age como a semente (seed) da geração.
  2. Cálculo de Probabilidade: Através de uma arquitetura Transformer, o modelo avalia bilhões de parâmetros para determinar o peso de conexão entre os termos. Utilizando a linguagem de programação Delphi coo referência, ele sabe estatisticamente que após interface geralmente vem uses, e que TStringList requer System.Classes. O modelo navega por um espaço latente de conhecimento. Se o modelo viu milhões de exemplos de TEdit.Text, ele sugere isso. Se viu pouco código moderno, pode sugerir erroneamente AnsiString onde deveria ser string.
  3. Inferência Não-Determinística: A IA seleciona a próxima palavra baseada em probabilidades. É aqui que entra o conceito de “Temperatura”: quanto maior, mais criativa (e arriscada) é a escolha; quanto menor, mais determinística e repetitiva é a resposta, o que é ideal para geração de código rígido. O resultado é a sequência de caracteres estatisticamente mais viável para satisfazer o comando.

Nota importante: Por não validar lógica, a IA pode gerar código que “parece” certo (sintaticamente plausível), mas que chama métodos inexistentes (alucinação), exigindo sempre a revisão do programador. O mesmo ocorre para qualquer outro assunto, ela busca sempre seguir a coerência na resposta, o que nem sempre pode gerar uma resposta correta.

1.2 Custos Envolvidos

Diferente de APIs tradicionais que cobram taxas fixas mensais, as LLMs operam num modelo de consumo sob demanda (“Pay-as-you-go”).

  • Custo Computacional: A “mágica” da IA consome quantidades massivas de energia. Estima-se que gerar uma única imagem ou um texto longo gaste a mesma energia que carregar totalmente um smartphone. Isso justifica por que as APIs possuem rate limits (limites de requisições por minuto).
  • A Matemática dos Tokens: Para a máquina, palavras não existem, existem apenas tokens. A palavra “Delphi” pode ser 1 token, mas “Paralelepípedo” podem ser 3 ou 4.
    • Em 2025, modelos de ponta (como GPT-4o ou Claude 3.5) cobram frações de centavos por 1.000 tokens.
    • Atenção: Um prompt mal formulado que envia código desnecessário ou logs inteiros de erro não apenas confunde a IA, mas inflaciona o custo da requisição inutilmente.

2. A Estrutura de um Prompt Eficaz

Para evitar respostas vagas, um prompt deve ser construído sobre quatro pilares fundamentais:

  1. Clareza: Evitar ambiguidades para que a interpretação seja direta.
  2. Contexto: Fornecer detalhes relevantes sobre o cenário (ex: “para alunos de eletrotécnica” ou “para engenheiros”).
  3. Objetivo: Definir a ação desejada (explicar, resumir, calcular, comparar).
  4. Formato Esperado: Indicar como a saída deve ser apresentada (tabela, lista, código, texto corrido).

Exemplo Comparativo:

Prompt Ruim (Vago):

“Crie uma tela de login.”

  • Resultado provável: Um código HTML básico, sem estilo ou lógica de segurança, exigindo muito retrabalho.

Prompt Eficaz (Estruturado):

[Contexto] Atue como um especialista em Frontend usando React e Tailwind CSS. [Objetivo] Crie um componente de formulário de login responsivo. [Clareza/Detalhes] O formulário deve validar se o e-mail tem formato correto e se a senha tem no mínimo 8 caracteres antes do envio. Inclua tratamento de erro visual. [Formato] Forneça o código em um único arquivo .jsx comentado.

3. Estratégias Avançadas de Engenharia de Prompt

Em cenários de alta complexidade, prompts básicos geram apenas código genérico ou incompleto . Para obter soluções robustas — como refatoração de legado ou arquitetura de microsserviços —, é necessário transcender as instruções simples. A seguir, apresento estratégias avançadas de engenharia de prompt que refinam a precisão técnica e transformam a IA em um pair programmer sênior .

3.1 Role Prompting (Definição de Papéis)

Esta técnica consiste em instruir a IA a “assumir” uma função profissional específica antes de executar a tarefa . No desenvolvimento de software, isso é vital porque o mesmo problema (ex: “criar uma API”) pode ser resolvido de forma simplória por um estagiário ou de forma robusta e escalável por um arquiteto de software.

O Mecanismo: Ao definir a persona (ex: “Você é um Engenheiro Sênior” ou “Especialista em Segurança”), você ativa um subconjunto de vocabulário técnico e padrões de qualidade que a IA associou a esses títulos durante o treinamento .

Comparativo de Impacto:

  • Sem Persona: “Faça um script em Python para ler um CSV.”
    • Resultado: Um código simples usando a biblioteca csv ou pandas padrão, sem tratamento de erros.
  • Com Persona: “Atue como um Engenheiro de Dados Sênior. Crie um script Python otimizado para ler um CSV de 50GB…”
    • Resultado: O código provavelmente usará chunks (leitura em pedaços) ou processamento em stream para não estourar a memória RAM, algo que um “Sênior” saberia ser necessário.

Exemplo Prático Otimizado (DevOps/SRE):

Prompt: “Atue como um Engenheiro de DevOps Sênior (SRE) especializado em automação e segurança.

Sua tarefa é escrever um arquivo de workflow para o GitHub Actions com os seguintes requisitos de qualidade:

  1. Faça o build de uma aplicação Node.js.
  2. Execute os testes unitários.
  3. Segurança: Implemente um passo de scan de vulnerabilidades (ex: npm audit ou Trivy).
  4. Se tudo passar, faça o build da imagem Docker e o push para o registro.

Use boas práticas como caching de dependências para acelerar o pipeline.”

Por que funciona? Ao definir que a IA é um “instrutor” ou “engenheiro” , você ajusta a expectativa da saída. No exemplo acima, adicionar “SRE especializado em segurança” força a IA a não apenas fazer o código funcionar, mas a priorizar a proteção e a eficiência do processo, simulando a experiência de um especialista humano.

3.2 Few-Shot Prompting (Exemplificação)

A técnica de Few-Shot (poucos exemplos) baseia-se na premissa de que é mais eficiente mostrar à IA o que você quer do que explicar as regras abstratamente . No desenvolvimento de software, isso é a “bala de prata” para garantir que o código gerado siga as convenções da sua equipe (ex: snake_case vs camelCase, uso de Pytest vs Unittest, ou estruturas de Try/Catch específicas).

O Conceito: Você fornece um ou mais pares de “Entrada → Saída Esperada” para calibrar o modelo antes de pedir a tarefa real .

Cenário Avançado: Padronização de Testes Unitários (Happy Path + Edge Case) Em vez de apenas pedir “crie um teste”, você ensina o modelo a sempre cobrir o caso de sucesso e o caso de erro, usando a sintaxe exata do seu framework (neste exemplo, Jest/JavaScript).

Prompt Otimizado:

“Estou escrevendo testes unitários usando Jest. Siga estritamente o padrão do exemplo abaixo para criar os testes da nova função.

Exemplo (Shot 1): Função:

const divide = (a, b) => {
  if (b === 0) throw new Error("Divisão por zero");
  return a / b;
};

Saída Esperada (Teste):

describe('divide', () => {
  it('should return the correct quotient', () => {
    expect(divide(10, 2)).toBe(5);
  });

it(‘should throw an error when dividing by zero’, () => { expect(() => divide(10, 0)).toThrow(“Divisão por zero”); }); });

**Sua Tarefa:**
Crie os testes seguindo esse mesmo padrão (sucesso + erro) para a função abaixo:
*Função:*

const getUserParams = (age) => {
  if (age < 18) throw new Error("Acesso negado: Menor de idade");
  return { status: "active", category: "adult" };
};
```"

Por que essa abordagem é superior? Ao fornecer o exemplo (o “tiro” ou shot) , você eliminou a necessidade de escrever instruções longas como: “Use describe e it, verifique se lança exceção usando toThrow, e teste o caminho feliz usando toBe”. A IA inferiu todas essas regras implicitamente através do padrão apresentado .

3.3 Chain-of-Thought (Cadeia de Pensamento)

Modelos de linguagem tendem a “chutar” a resposta final rapidamente para economizar processamento. A técnica de Chain-of-Thought força a IA a “mostrar o trabalho”, verbalizando o raciocínio intermediário antes de chegar à conclusão . No desenvolvimento de software, isso equivale ao “Rubber Duck Debugging” (conversar com o pato de borracha): ao explicar o problema linha a linha, a solução se torna óbvia.

Objetivo: Evitar que a IA sugira correções genéricas (como apenas colocar um try-catch ou uma verificação de if != null em tudo) e forçá-la a encontrar a causa raiz do bug .

Exemplo Prático (Análise de Causa Raiz):

Prompt: “Atue como um Especialista em Java. Analise o snippet de código abaixo que está lançando um NullPointerException intermitente em produção.

Não dê a solução imediatamente. Pense passo a passo:

  1. Rastreie o ciclo de vida da variável userSession desde a injeção de dependência.
  2. Verifique se existe algum caminho lógico (ex: race condition ou falha de conexão no DB) onde ela pode não ser instanciada.
  3. Analise se o método getProfile() é thread-safe.

Somente após essa análise, proponha a refatoração do código.”

Outro Cenário (Lógica de Negócio Complexa):

Prompt: “Preciso calcular o frete baseado no volume cúbico, mas a regra muda se o item for perecível. Antes de escrever o código em Python, descreva a lógica do algoritmo em português estruturado (pseudocódigo), cobrindo as arestas (edge cases) como volume zero ou peso negativo.”

Vantagem Técnica: Ao obrigar a IA a processar a lógica explicitamente (somar os números, validar as variáveis) antes de dar a resposta final, a precisão matemática e lógica aumenta drasticamente, reduzindo a chance de respostas falsas ou incompletas .

3.4 Prompt Chaining (Encadeamento)

O “Chain Prompting” consiste em dividir uma funcionalidade complexa Full-Stack em etapas menores e sequenciais . Tentar gerar todo o sistema (Banco, Backend e Frontend) em um único prompt geralmente resulta em erros de consistência (ex: nomes de variáveis diferentes entre o banco e a API) ou alucinações por sobrecarga de contexto.

A Estratégia: Você usa a saída (output) de um prompt como a entrada (contexto) obrigatória do próximo.

Exemplo Prático (Feature: Pedidos de Venda):

  • Passo 1: A Fundação (Banco de Dados)Prompt: “Atue como um DBA. Crie o script DDL SQL (PostgreSQL) para uma tabela de ‘Pedidos’ e ‘ItensPedido’. Inclua chaves estrangeiras e índices para performance.” (A IA gera o SQL com campos como order_id, product_id, quantity)
  • Passo 2: O Backend (Conectado à Fundação)Prompt: “Agora, usando exatamente os mesmos nomes de colunas do esquema SQL acima, crie um modelo Pydantic e uma rota POST usando Python (FastAPI) para inserir um novo pedido. O código deve validar se a quantidade é maior que zero.” (A IA mantém a consistência dos dados porque acabou de gerar o esquema)
  • Passo 3: O Frontend (Consumindo o Backend)Prompt: “Por fim, crie uma função JavaScript assíncrona (fetch) para consumir essa rota da API que você acabou de criar. Inclua o tratamento de erro try/catch caso a API retorne 400 ou 500.”

Por que fazer assim? Ao quebrar a tarefa , você garante que a lógica de validação do Python corresponda à estrutura do SQL e que o JavaScript envie o JSON no formato exato que o Python espera, reduzindo drasticamente o tempo de debugging.

3.5 Self-Consistency (Autoconsistência)

Em vez de aceitar a primeira solução que a IA propõe (que pode ser subotimizada ou enviesada), esta técnica solicita múltiplas variações da mesma resposta . No desenvolvimento de software, isso é crucial para comparar abordagens arquiteturais diferentes e validar a lógica de algoritmos complexos .

Objetivo: Evitar a “visão de túnel” e avaliar qual implementação melhor se adapta aos requisitos não funcionais do projeto (performance, memória ou legibilidade) .

Exemplo Prático (Otimização de Algoritmos):

Prompt: “Atue como um Engenheiro de Software Sênior em C++. Preciso ordenar um vetor com 1 milhão de inteiros. Gere 3 implementações diferentes para resolver este problema e compare-as:

  1. Foco na Simplicidade: Use a STL padrão e código limpo.
  2. Foco em Memória: Uma implementação in-place que minimize o uso de RAM auxiliar.
  3. Foco em Velocidade Extrema: Uma abordagem otimizada (talvez paralelizada ou Radix Sort) ignorando a complexidade do código.

Ao final, explique brevemente o Big-O de cada uma.”

Outro Cenário de Uso (Debugging): Você também pode usar essa técnica para diagnóstico de erros, pedindo para a IA formular múltiplas hipóteses para um bug.

Prompt: “Este código assíncrono em Node.js está travando intermitentemente. Liste 3 possíveis causas raízes diferentes para esse comportamento (ex: Race Condition, Memory Leak, Unhandled Promise Rejection) e sugira como testar cada uma.”

Benefício: Ao forçar a IA a diversificar a resposta , você reduz a chance de alucinação (se 3 respostas diferentes apontam para o mesmo caminho lógico, a probabilidade de acerto é maior) e ganha um leque de opções técnicas para decidir a melhor estratégia.

3.6 Least-to-Most Prompting (Do Simples ao Complexo)

Essa abordagem decompõe um problema difícil em subperguntas menores. Em vez de pedir um sistema completo de imediato, construímos o contexto passo a passo: primeiro entendemos o problema, depois definimos as ferramentas e, por fim, geramos o código.

Cenário: Criação de um sistema de Autenticação Seguro (JWT).

  • Passo 1 (O “Risco”): Pergunte sobre os conceitos e vulnerabilidades primeiro.”Quais são as principais vulnerabilidades de segurança (OWASP Top 10) que devo considerar ao criar uma autenticação com JWT em Node.js?”
  • Passo 2 (O “EPI”/Prevenção): Pergunte sobre as ferramentas de mitigação baseadas na resposta anterior.”Para evitar esses riscos (como ataques de força bruta e roubo de token), quais bibliotecas e práticas de configuração de cookies (HttpOnly, Secure) são recomendadas?”
  • Passo 3 (A Execução Final): Peça a solução completa baseada no contexto construído.”Com base nas vulnerabilidades listadas e nas bibliotecas sugeridas, crie o código completo do controller de login, implementando todas as travas de segurança discutidas.”

Por que funciona? Se você pedisse apenas “Crie um login JWT” no início, a IA provavelmente geraria um código genérico e inseguro. Ao forçá-la a listar os riscos primeiro (Passo 1), o modelo “carrega” esse contexto de segurança e tende a gerar um código final (Passo 3) muito mais robusto e protegido.

4. Mitigação de Riscos: Alucinações e Validação

Ao contrário de um cérebro humano, a IA não ‘pensa’; ela opera estimando a sequência de palavras estatisticamente mais provável para atender a um comando, baseando-se em bilhões de parâmetros matemáticos . Devido a essa natureza probabilística, o modelo pode ‘alucinar’, produzindo respostas estruturalmente convincentes e detalhadas, mas que são factualmente incorretas ou inventadas .

4.1 Tipos Comuns de Alucinação

A Inteligência Artificial não possui compromisso com a verdade factual, mas sim com a probabilidade estatística das palavras . Isso gera alucinações que podem ser categorizadas em cinco grupos principais:

  • Invenção de Normas e Regulamentos (Alucinação Regulatória): Ao ser questionada sobre regulamentos que não existem (ou não estão formatados como normas), a IA tende a preencher a lacuna inventando dados.
    • O Perigo: Ela não apenas cita um nome falso, mas pode criar artigos inteiros, subtítulos e descrições técnicas convincentes para uma norma inexistente .
    • Exemplo: Solicitar os “artigos da NR-45” (que não existe) sobre segurança de drones .
  • Falsas Previsões e Leis Futuras (Alucinação Temporal): Como a IA é treinada em dados passados, ela não tem capacidade de prever legislações ou eventos futuros, mas tentará responder se for pressionada.
    • O Perigo: O modelo pode gerar textos de leis fictícias que “entrariam em vigor” em datas futuras, citando artigos que nunca foram escritos .
    • Exemplo: Pedir explicações sobre uma suposta “lei brasileira de IA” que entraria em vigor em 2026 .
  • Fabricação de Dados Técnicos e Matemáticos (Pseudo-Exatidão): A IA pode gerar fórmulas matemáticas que parecem visualmente corretas, usando variáveis gregas e estrutura lógica, mas que não possuem fundamento físico ou normativo.
    • O Perigo: O modelo pode inventar uma “fórmula oficial da ABNT” para cálculos complexos onde a norma não fornece tal equação, induzindo o técnico ao erro .
    • Exemplo: Solicitar a fórmula oficial da ABNT para resistência de motores de indução .
  • Geração de Referências Bibliográficas Falsas (Alucinação Acadêmica): Quando o prompt exige referências muito específicas (filtro por ano, país e tema), a IA tende a “alucinar totalmente” para satisfazer a restrição.
    • O Perigo: Ela combina nomes de autores reais com títulos de livros inventados e até gera números de ISBN falsos para dar credibilidade .
    • Exemplo: Pedir “3 livros de autores brasileiros de 2018 sobre turbinas a gás com ISBN” .
  • Explicações Conceitualmente Impossíveis (Incoerência Lógica): A IA pode aceitar premissas absurdas e gerar instruções técnicas detalhadas para algo que é fisicamente ou logicamente impossível.
    • O Perigo: Geração de código ou procedimentos técnicos que parecem profissionais (usam bibliotecas e sintaxe correta), mas não têm funcionalidade real no mundo físico .
    • Exemplo: Pedir um código em Delphi para programar diretamente um motor a combustão (algo impossível, pois exige hardware intermediário e linguagens específicas) .

4.2 Protocolos de Prevenção

Para garantir a confiabilidade técnica e reduzir a incidência de alucinações (informações inventadas), recomenda-se adotar o seguinte fluxo de verificação:

  • Solicitar Fontes Verificáveis e Específicas: Ao invés de aceitar uma resposta genérica, exija a origem dos dados. Peça para a IA listar normas (como a ABNT) com número e título , incluir links de manuais técnicos , trazer dados oficiais (como IBGE) ou indicar leis específicas . Evite aceitar “fórmulas oficiais” sem referência, pois a IA pode inventar equações matemáticas convincentes, mas incorretas .
  • Aplicar Testes de Consistência (Triangulação): Não confie na primeira resposta. Uma técnica eficaz é reformular a mesma pergunta de maneiras diferentes e comparar as saídas . Se a IA gerar respostas contraditórias para o mesmo problema, isso é um forte indício de alucinação ou erro de processamento .
  • Estabelecer “Limites Negativos” (Restrições): Instrua explicitamente o modelo sobre o que não fazer.
    • Ordene que a IA diga “não encontrei a informação” caso não saiba a resposta, evitando a invenção de dados .
    • Use comandos como “Não invente exemplos técnicos” ou “Use apenas dados confirmados por órgãos oficiais” .
    • Delimite o escopo temporal, por exemplo: “Explique apenas até o ano de 2022” .
  • Validação Cruzada Obrigatória (Human-in-the-Loop): A IA não consulta a internet em tempo real (nas versões básicas) e opera baseada em estatística, não em verdade . Portanto:
    • Cálculos: Devem ser conferidos manualmente ou via software dedicado .
    • Normas: Verifique se a norma citada ainda está vigente ou se foi atualizada .
    • Aplicação Prática: Testes em laboratório e validação com professores ou supervisores técnicos são insubstituíveis .
  • Contextualização Preventiva: Respostas vagas são resultado de prompts vagos . Fornecer um contexto rico (público-alvo, nível técnico, objetivo) atua como uma barreira preventiva contra respostas genéricas ou fora do padrão técnico esperado .

5. Conclusão

A engenharia de prompt é uma competência profissional emergente. O uso responsável da IA exige que ela seja tratada como uma ferramenta de apoio, e não como um substituto do conhecimento técnico humano.

Diretrizes Finais:

  • Segurança: Nunca inserir dados sigilosos de clientes ou projetos críticos.
  • Ética: Evitar plágio e sempre validar os resultados. A responsabilidade final é do usuário.
  • Pensamento Crítico: O diferencial humano reside na capacidade de validar e aplicar o conhecimento no mundo real.
Compartilhar por e-mail

0 comentário(s)

Dê-nos sua opinião, seu comentário ajuda o site a crescer e melhorar a qualidade dos artigos.

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Um próximo passo para cada interesse.

Continue estudando com os livros, acompanhe as videoaulas ou consulte as soluções para o seu projeto.

Descubra mais sobre Régys Borges da Silveira

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo