Prompt ChatGPT para programar
Um prompt de programação preciso que produz código limpo e funcional com o contexto e as restrições de que a IA precisa.
Prompt pronto para copiar
Você é um engenheiro sênior em [linguagem]. Escreva código para [tarefa]. Contexto: [framework/versão, ambiente, restrições]. Entradas: [descreva]. Saída esperada: [descreva]. Requisitos: - Código limpo, legível e idiomático em [linguagem]. - Trate os casos-limite e os erros com elegância. - Acrescente breves comentários explicando as partes não óbvias. - Inclua um breve exemplo de uso. - Indique qualquer suposição que você tenha feito.
Quer uma versão sob medida?
Responda a algumas perguntas rápidas e o Gerador de prompts de código criará um prompt personalizado com seus dados exatos.
💻 Abrir o Gerador de prompts de códigoPor que a maioria dos prompts de programação com IA faz você perder tempo
Peça ao ChatGPT para "escrever uma função para enviar um arquivo" e você vai obter um código que compila, roda em um ambiente imaginário e não se encaixa no seu. Ele pode supor Python 3.12 quando você está no 3.8, escolher uma biblioteca que você não instalou ou tratar um formato de arquivo que você nunca mencionou. O modelo não adivinha ao acaso: ele preenche as lacunas que você deixou abertas com os padrões estatisticamente mais comuns. Cada ambiguidade na sua solicitação vira uma decisão que o modelo toma no seu lugar, e quanto mais decisões ele toma, mais retrabalho você herda. O prompt acima funciona preenchendo essas lacunas antes que o modelo escreva uma única linha, o que transforma um rascunho grosseiro em código que você muitas vezes pode colar diretamente.
O contexto é o que faz o código se encaixar na sua stack
A linha de contexto — framework, versão, ambiente, restrições — é o campo que mais economiza tempo. "Node 18 com Express e TypeScript, sem bibliotecas HTTP externas, rodando no AWS Lambda" diz ao modelo exatamente o que mirar, e ele evitará sugerir um pacote que você não pode usar ou uma sintaxe que seu runtime rejeita. A versão importa mais do que se imagina: os padrões assíncronos, as funções da biblioteca padrão e a sintaxe dos tipos diferem de uma versão para outra, e o código escrito para a versão errada falha de formas desconcertantes. Indicar as restrições de entrada ("deve ser sem dependências", "não pode usar recursão", "deve rodar em menos de 100 ms em uma lista de 10.000 elementos") também orienta a escolha do algoritmo, não apenas a sintaxe. Sem essa linha, o modelo otimiza para parecer correto isoladamente em vez de funcionar no seu projeto.
Entradas, saídas e casos-limite
Descrever as entradas exatas e a saída esperada elimina outra classe inteira de desencontros. "Recebe uma lista de dicionários de pedidos com as chaves id, total e status; retorna a soma de total dos pedidos cujo status é 'pago'" dá ao modelo um contrato preciso a cumprir, e ele moldará a assinatura da função e o tipo de retorno de acordo. O requisito de tratar os casos-limite e os erros com elegância é o que separa os trechos descartáveis do código pronto para produção. Sem indicá-lo, o ChatGPT escreve para o caminho feliz e ignora as entradas vazias, os valores nulos, os dados malformados e as falhas de rede. Nomear esse requisito o obriga a acrescentar as proteções que você descobriria de outra forma em produção. Quando puder, descreva os casos-limite concretos que importam para os seus dados — uma lista vazia, uma chave ausente, um timeout — para que o modelo trate aqueles que você realmente enfrenta.
As suposições e a verificação fecham o ciclo
O último requisito, "indique qualquer suposição que você tenha feito", é o mais subutilizado e o mais valioso. O modelo sempre faz suposições; a única questão é se você consegue vê-las. Quando ele as escreve — "supus que os timestamps estão em UTC", "supus que a entrada já está validada" — você pode perceber uma suposição errada em segundos em vez de depurá-la por uma hora. O exemplo de uso cumpre o mesmo papel de verificação: ele mostra como o código deve ser chamado e permite que você controle a interface antes de integrá-lo. Mesmo com um bom prompt, trate o resultado como o primeiro rascunho de um engenheiro sênior, não como um commit finalizado. Leia-o, execute-o contra um caso-limite real e, para tudo o que for importante, prossiga com "escreva testes unitários cobrindo os casos de entrada vazia e de erro" para confiar nos testes em vez de no modelo.
Por que este prompt funciona
Prompts de programação vagos produzem código que não se encaixa na sua stack. Este prompt fornece linguagem, framework, entradas e saídas de imediato, para que a IA escreva código idiomático que de fato roda no seu ambiente, e faz aparecer suas suposições para que você perceba cedo os desencontros.
Como personalizar
- Sempre indique a versão da linguagem e o framework para evitar código incompatível.
- Descreva as entradas e as saídas esperadas com precisão.
- Peça testes se a lógica for importante.
Exemplo de resultado
Apenas um exemploPrompt preenchido: linguagem = Python 3.9, tarefa = "analisar um CSV de transações e retornar o total de uma categoria dada", restrições = "apenas biblioteca padrão".
import csv
from decimal import Decimal, InvalidOperation
def total_for_category(csv_path, category):
"""Retorna a soma de 'amount' das linhas que correspondem a 'category'.
Supoe que o CSV tem os cabecalhos 'category' e 'amount'.
Ignora as linhas com um amount ausente ou nao numerico.
"""
total = Decimal("0")
with open(csv_path, newline="", encoding="utf-8") as f:
reader = csv.DictReader(f)
if reader.fieldnames is None or "amount" not in reader.fieldnames:
raise ValueError("O CSV deve ter uma coluna 'amount'")
for row in reader:
if row.get("category") != category:
continue
try:
total += Decimal(row["amount"])
except (InvalidOperation, TypeError):
# Ignora os amounts malformados em vez de quebrar toda a execucao.
continue
return total
# Exemplo de uso:
# print(total_for_category("transactions.csv", "groceries"))
Suposições: os valores são strings decimais; o arquivo está em UTF-8; as linhas malformadas devem ser ignoradas, não fazer a análise inteira falhar. Usa-se Decimal em vez de float para evitar erros de arredondamento com dinheiro.
Variações de prompt para testar
Explicar a abordagem antes de codar
Você é um engenheiro sênior em [linguagem]. Preciso de [tarefa], com estas restrições: [framework/versão, ambiente]. Antes de escrever código, explique brevemente a abordagem que pretende seguir, os principais trade-offs e qualquer decisão em que exista mais de uma opção razoável. Espere que eu confirme a abordagem e depois escreva código limpo e idiomático em [linguagem] com tratamento de erros e um exemplo de uso.
Refatorar código existente
Você é um engenheiro sênior em [linguagem]. Refatore o código abaixo para que fique mais limpo, legível e idiomático para [framework/versão], sem mudar seu comportamento. Sinalize qualquer bug ou caso-limite que ele trate mal atualmente e acrescente o tratamento de erros onde estiver faltando. Mantenha a interface pública idêntica. Explique brevemente cada mudança significativa. Código: [cole o código].
Código e testes ao mesmo tempo
Você é um engenheiro sênior em [linguagem]. Escreva código para [tarefa] em [framework/versão], entradas [descreva], saída esperada [descreva]. Depois escreva um conjunto de testes unitários com [framework de testes] cobrindo o caminho feliz, as entradas vazias e nulas, os valores-limite e ao menos uma condição de erro. Indique qualquer suposição. Mantenha tanto o código quanto os testes idiomáticos e legíveis.
Erros comuns a evitar
- Omitir a versão da linguagem. A sintaxe assíncrona, as funções da biblioteca padrão e as anotações de tipos diferem de uma versão para outra, então o código para a versão errada falha de forma estranha. Sempre indique-a:
Python 3.9,Node 18,Java 17. - Não descrever as entradas e saídas com precisão. "Processe os dados" não dá ao modelo nenhum contrato a cumprir. Especifique a forma exata da entrada e o que a função deve retornar.
- Esquecer de nomear as restrições. Se você não pode acrescentar dependências ou precisa atingir uma meta de desempenho, diga isso de imediato; caso contrário, o modelo escolhe uma biblioteca que você não tem ou um algoritmo lento demais.
- Pular o tratamento de erros na solicitação. Sem indicá-lo, o ChatGPT escreve apenas o caminho feliz. Peça explicitamente que ele trate as entradas vazias, os nulos e as falhas, nomeando idealmente aqueles que seus dados realmente produzem.
- Confiar no código sem executá-lo. Mesmo um rascunho bem construído pode arrastar uma suposição errada. Execute-o contra um caso-limite real e peça testes unitários antes de depender de qualquer coisa importante: trate o resultado como um primeiro rascunho, não como um commit.
Perguntas frequentes
Por que o ChatGPT me dá um código que não funciona no meu projeto?
Quase sempre porque o prompt deixou o ambiente sem especificar. O modelo recorre à versão da linguagem e às bibliotecas mais comuns, que podem não corresponder às suas. Preencher o campo de contexto — framework, versão e restrições — resolve a maioria desses desencontros antes que o código seja escrito.
Devo pedir testes além do código?
Para tudo do que você vai realmente depender, sim. Os testes são o meio mais confiável de verificar o código escrito por IA, pois capturam as suposições erradas e os bugs de casos-limite que o modelo deixou passar. Acrescente "inclua testes unitários para a entrada vazia e os casos de erro" ao prompt, ou use a variação de código e testes acima.
Como evitar que a IA faça suposições silenciosas?
Mantenha o requisito "indique qualquer suposição que você tenha feito" em cada prompt de programação. O modelo sempre supõe alguma coisa; isso torna essas suposições visíveis para que você possa perceber uma errada em segundos. Quando uma suposição listada estiver errada, basta corrigi-la e pedir uma revisão.
É seguro colar esse código diretamente em produção?
Trate-o como o primeiro rascunho de um engenheiro sênior, não como um commit finalizado. Leia-o, execute-o contra entradas reais e de casos-limite, revise as suposições indicadas e acrescente testes para tudo o que for importante. Um bom prompt aproxima você bastante, mas a revisão humana continua sendo a última linha de defesa.
Dica: substitua as partes entre [colchetes] pelas suas próprias informações antes de enviar. Quanto mais preciso você for — público, tom, objetivo, restrições — melhor será o resultado da IA.