Voltar ao blog

IA para iniciantesGuia

Como escrever um bom prompt: 5 partes e um exemplo de antes/depois

Transforme uma solicitação vaga de uma linha em um prompt com tarefa, contexto, formato, exemplo e regras, e envie-o por uma API compatível com OpenAI.

Por CheapTokens TeamPublicado em 7 min de leitura

Capa: uma solicitação de uma linha "Resuma este e-mail" e a resposta de que ela precisa de tarefa, contexto, formato, exemplo e regras
Nesta página
  1. Por que "Resuma este e-mail" é uma aposta
  2. As cinco partes, em palavras simples
  3. Antes e depois: um e-mail de cliente
  4. Envie pela API
  5. Quanto custam as palavras extras
  6. Teste você mesmo

Seu modelo resume um e-mail de cliente em três parágrafos na segunda-feira e em dois tópicos na terça-feira. Mesmo prompt, mesmo modelo. É isso que uma solicitação de uma linha faz: deixa todas as decisões para o modelo, e o modelo decide de forma diferente a cada vez.

Um bom prompt responde a cinco perguntas: o que fazer (tarefa), com o que trabalhar (contexto), como a resposta deve ser (formato), como é uma boa resposta (exemplo) e o que evitar (restrições). Abaixo, uma solicitação vaga se torna estruturada, passa pela API CheapTokens compatível com OpenAI, e você vê o que o prompt mais longo acrescenta à conta.

Por que "Resuma este e-mail" é uma aposta#

Quando você digita "Resuma este e-mail", já tem uma resposta em mente: uma frase, qual a urgência, o que fazer em seguida. O modelo não consegue ver essa imagem. Então ele adivinha, e cada adivinhação é razoável. Juntas, elas dão uma resposta diferente a cada execução, e um script que lê a resposta não tem nada estável para analisar.

O guia de engenharia de prompt da OpenAI (lido em 27 de outubro de 2026) coloca a ideia de forma clara: engenharia de prompt é escrever instruções eficazes, e os modelos GPT se saem melhor quando você diz explicitamente como realizar uma tarefa. O hábito não se limita a texto. Em 26 de outubro de 2026, um canal do Telegram compartilhou um prompt para um vídeo gerado de 30 segundos que foi dividido em blocos: cena, estilo visual, diálogo, áudio e exclusões, especificações técnicas. Tarefa diferente, mesma jogada. O autor nomeou cada decisão de antemão em vez de deixá-la para o modelo.

Experimente você mesmoExperimente: o que um modelo teria que adivinhar a partir de "Resuma este e-mail"?Mostrar resposta

O comprimento (uma linha ou uma página), o público (você ou o cliente), a forma da resposta (prosa, tópicos, JSON), o que conta como importante e o que fazer quando o e-mail não diz. Cada um desses pontos é algo que um prompt pode resolver.

As cinco partes, em palavras simples#

Pense em orientar um novo colega no primeiro dia dele. "Lide com este" te dá um chute. Um post-it com a tarefa, o material, o formato que você quer, um exemplo e um "não faça" te dá o que você quis dizer.

Tarefa é um verbo e um objeto: "Resuma o e-mail e avalie sua urgência." Seja literal. "Ajude com este e-mail" não é uma tarefa.

Contexto é o material com que o modelo trabalha: o e-mail, uma descrição de produto, uma política. O modelo só sabe o que aprendeu no treinamento mais o que você cola. Envolva o texto colado em delimitadores, como tags no estilo XML como <email>…</email> ou cabeçalhos markdown, para que suas instruções não se misturem com o texto. O guia da OpenAI sugere ambos.

Formato é como a resposta se parece: "JSON com as chaves summary, urgency, next_step" ou "três tópicos, no máximo 12 palavras cada". Isso importa mais quando um código lê a resposta.

Exemplo é uma entrada com a saída que você quer. O guia recomenda exemplos few-shot que cobrem uma variedade diversa de entradas com as saídas desejadas. Um exemplo é um bom começo; adicione um segundo quando suas entradas diferem muito.

Restrições são os "nãos": use apenas fatos do e-mail, escreva "unknown" quando algo estiver faltando, sem reembolsos ou descontos.

As cinco partes de um prompt na ordem em que costumam aparecer
As cinco partes de um prompt estruturado: tarefa, contexto, formato, exemplo, restrições

A ordem também importa um pouco. O mesmo guia diz que uma mensagem de desenvolvedor ou de sistema geralmente segue identidade, instruções, exemplos, contexto, e que o contexto pertence perto do final porque muda entre requisições. Regras vão na mensagem de sistema; a entrada vai na mensagem de usuário.

Emparelhar os pares

Relacione cada parte de um prompt à pergunta que ela responde

  • TarefaO que o modelo deve fazer?
  • ContextoCom que material ele trabalha?
  • FormatoComo a resposta deve ser?
  • ExemploComo é uma boa resposta?
  • RestriçõesO que ele não deve fazer?

Antes e depois: um e-mail de cliente#

Aqui está a solicitação de uma linha ao lado da mesma solicitação com todas as cinco partes. O e-mail em si é o contexto, e vai na mensagem de usuário, envolto em tags <email>.

Comparar

Uma solicitação, dois prompts

Antes

text
Summarize this email.

Depois

text
You summarize customer emails for a support team.

Task: Summarize the email in the <email> tags and rate how urgent it is.

Format: Reply with JSON only, using the keys "summary" (one sentence), "urgency" ("low", "medium" or "high") and "next_step" (one short sentence).

Example:
<email>Hi, order 1042 was due Monday and it's Thursday. Where is it?</email>
{"summary": "Order 1042 is three days late and the customer asks where it is.", "urgency": "medium", "next_step": "Check the carrier tracking for order 1042 and reply with the status."}

Rules:
- Use only what the email says. If something is missing, write "unknown".
- Don't offer refunds or discounts.
- Output nothing outside the JSON.

Leia o "depois" de cima a baixo e você consegue apontar cada parte: a linha de abertura e a tarefa, a linha de formato, o exemplo, as regras. O e-mail está ausente do texto de propósito. Ele muda a cada requisição, então viaja separadamente.

O esqueleto do prompt estruturado: cinco partes rotuladas
As cinco partes de um prompt, uma linha cada (o e-mail vai na mensagem de usuário)

Envie pela API#

As instruções nunca mudam, então ficam em uma constante e vão primeiro. O e-mail muda, então vai por último. Este é o script completo, usando o SDK Python da OpenAI apontado para a CheapTokens. O modelo é DeepSeek-V4-Flash: contexto de 380K, até 32.768 tokens de saída por resposta, um preço a qualquer hora. Pegue a URL base e o id do modelo na documentação da CheapTokens; se você ainda não tem uma chave, sua primeira requisição à API explica o processo.

python
import json
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

SYSTEM_PROMPT = """You summarize customer emails for a support team.

Task: Summarize the email in the <email> tags and rate how urgent it is.

Format: Reply with JSON only, using the keys "summary" (one sentence), "urgency" ("low", "medium" or "high") and "next_step" (one short sentence).

Example:
<email>Hi, order 1042 was due Monday and it's Thursday. Where is it?</email>
{"summary": "Order 1042 is three days late and the customer asks where it is.", "urgency": "medium", "next_step": "Check the carrier tracking for order 1042 and reply with the status."}

Rules:
- Use only what the email says. If something is missing, write "unknown".
- Don't offer refunds or discounts.
- Output nothing outside the JSON.
"""

email = "Hello, I was charged twice for my subscription this month. Please fix it before Friday, my card is almost at its limit."

response = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V4-Flash-0731",
    messages=[
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": f"<email>\n{email}\n</email>"},
    ],
)

reply = response.choices[0].message.content
print(json.loads(reply))
print(response.usage.prompt_tokens, response.usage.completion_tokens)

Se a linha de formato fez seu trabalho, a resposta é um objeto JSON com summary, urgency e next_step, e json.loads o transforma em um dicionário. Se gerar um erro, o modelo envolveu o JSON em texto extra: reforce a última regra ou adicione um segundo exemplo. A última linha imprime quantos tokens entraram e saíram, que é o número sobre o qual a próxima seção trata.

Quanto custam as palavras extras#

Um token é um pedaço de uma palavra. Você paga por token pelo que envia (entrada) e pelo que o modelo escreve (saída), e a saída é o lado mais caro. Mais sobre isso em tokens de entrada vs saída.

Digamos que você rode um bot de suporte com 1.000 e-mails por dia, e o e-mail tenha cerca de 300 tokens. A solicitação de uma linha adiciona aproximadamente 10 tokens de instrução, então cerca de 310 entram; assumimos que ela obtém um resumo de forma livre de cerca de 250 tokens. O prompt de sistema acima tem cerca de 200 tokens, mais aproximadamente 10 para as tags <email>, então cerca de 500 entram; assumimos que a linha de formato mantém a resposta em um JSON de cerca de 80 tokens. No DeepSeek-V4-Flash isso é $0.00003 por e-mail para a solicitação de uma linha e $0.000016 para o prompt estruturado. O prompt ficou mais longo, mas a requisição ficou mais barata, porque a parte longa é a entrada e a parte que você encurtou é a saída. Rode o script e troque essas suposições pelos seus próprios prompt_tokens e completion_tokens.

Aqui está o prompt estruturado a 1.000 e-mails por dia entre os modelos. No total, com entrada e saída contadas juntas, a CheapTokens sai mais barata que o preço de referência do OpenRouter nesta carga de trabalho; os preços atuais estão na página de preços.

Modelo Por solicitação 1.000 solicitações OpenRouter, 1.000 solicitações
GLM-5.3-Flash $0.000013 $0.0132 $0.0234
DeepSeek-V4-Flash $0.000016 $0.0155 $0.0462
MiniMax-M2.7 $0.000037 $0.037 $0.444

500 tokens de entrada e 80 tokens de saída por solicitação. Os preços por 1M de tokens são atuais e mudam junto com nossas tarifas; a coluna OpenRouter mostra preços de referência para a mesma carga de trabalho.

Teste você mesmo#

Uma pergunta sobre o hábito que mais compensa quando um script reutiliza um prompt. Depois que a estrutura funciona, os próximos ajustes são a mensagem de sistema e a temperatura, abordados em Prompt de sistema e temperatura.

Verificação rápida

Seu script envia as mesmas instruções com um novo e-mail a cada vez. Onde o e-mail deve ir?

Mostrar resposta

Resposta: No final, depois das instruções e do exemplo

As instruções permanecem as mesmas entre requisições e o e-mail muda. O guia da OpenAI sugere colocar o contexto que varia perto do final do prompt.