Voltar ao blog

IA para iniciantesGuia

System prompt e temperature: o que fazem e como defini-los

O que a mensagem de sistema e a temperature fazem em uma requisição compatível com OpenAI, com exemplos em Python e curl que você pode enviar a um modelo CheapTokens.

Por CheapTokens TeamPublicado em Atualizado em 6 min de leitura

Diagrama de requisição de chat: uma mensagem de sistema com as regras, uma mensagem de usuário com a tarefa e um controle de temperature
Nesta página
  1. O que é um system prompt?
  2. Como escrever um system prompt útil
  3. O que a temperature faz?
  4. Envie uma requisição com ambos
  5. Veja a temperature em ação
  6. Em qual modelo testar
  7. Se não funcionar
  8. Próximo passo

Um system prompt é uma mensagem com o papel system que diz ao modelo como se comportar em cada resposta: quem ele é, qual formato usar, o que evitar. Temperature é um número, geralmente entre 0 e 2 (o intervalo depende do modelo), que define o quanto a redação pode variar: valores baixos geram respostas focadas e repetíveis, valores altos geram respostas mais variadas. Ambos entram na mesma requisição Chat Completions, que você envia para https://api.cheaptokens.dev/v1.

A seguir: o que é cada um, com quais valores começar e uma requisição que você pode executar em Python ou curl. Se você ainda não enviou uma requisição, comece com sua primeira requisição de API com CheapTokens.

O que é um system prompt?#

Uma requisição de chat é uma lista de mensagens, e cada mensagem tem um papel. A referência do Chat Completions lista quatro: system, user, assistant e tool (referência da API DeepSeek, verificada em 22 de outubro de 2026). Para uma primeira requisição você precisa de três:

  • system — instruções permanentes suas, o desenvolvedor. O modelo as trata como as regras da conversa.
  • user — o que a pessoa pergunta ou fornece neste turno.
  • assistant — as respostas anteriores do modelo. Você mesmo as adiciona quando continua uma conversa.

Uma mensagem de sistema precisa de role definido como system e content como string. O campo name é opcional.

json
"messages": [
  {"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
  {"role": "user", "content": "Send me the report by tonight or I will be upset."}
]

A mensagem de sistema vem primeiro. A mensagem do usuário é a tarefa propriamente dita.

Como escrever um system prompt útil#

  • Diga o que o modelo faz em uma frase: "Você é um editor", "Você classifica tickets de suporte".
  • Declare o formato de saída: "Retorne apenas o texto reescrito", "Responda em duas frases", "Responda com JSON válido".
  • Dê regras como frases curtas e diretas. Várias linhas claras funcionam melhor que um parágrafo longo.
  • Mantenha curto. O system prompt é enviado em toda requisição e contado como tokens de entrada, então um longo é pago toda vez. Como entrada e saída são cobradas está em tokens de entrada vs saída.

O que a temperature faz?#

Um modelo escolhe cada próximo token de um conjunto de candidatos prováveis. A temperature controla o quão estritamente ele se mantém ao mais provável. Segundo a referência da API DeepSeek (verificada em 22 de outubro de 2026), temperature aceita valores de 0 a 2 com padrão 1: valores mais altos geram saída mais aleatória, valores mais baixos geram saída mais focada e determinística. Os intervalos variam entre modelos: a DeepSeek documenta 0 a 2, a Z.ai documenta 0 a 1 para GLM-5.3 (ambas verificadas em 22 de outubro de 2026), então valores de 0 a 1 são seguros em ambos. Verifique o intervalo do seu modelo na documentação.

Pontos de partida que funcionam para a maioria das tarefas. São regras práticas, não garantias:

Tarefa Comece com
Extração, classificação, código, formatos estritos 0 a 0.3
Perguntas e respostas, resumos, reescrita 0.3 a 0.7
Brainstorming, nomes, texto criativo 0.8 a 1

Três coisas a saber:

  1. Temperature baixa é mais repetível, não idêntica. Não conte com respostas iguais byte a byte.
  2. Altere temperature ou top_p, não ambos. Esta é a recomendação da DeepSeek; top_p é um segundo parâmetro de amostragem com padrão 1. Deixe-o em paz enquanto aprende.
  3. Alguns modos ignoram a temperature. A referência da DeepSeek diz que a temperature não tem efeito no modo de raciocínio, e que top_p é fixo em 1.0 no modo sem raciocínio. Se você alterar um valor e não ver diferença, verifique primeiro o modo do modelo.

Envie uma requisição com ambos#

Defina a chave como variável de ambiente, para que ela nunca acabe no código (veja o que é uma chave de API e como armazená-la com segurança). Pegue o id exato do modelo na documentação do CheapTokens: provedores diferentes nomeiam o mesmo modelo de formas diferentes. Este exemplo usa MiniMax-M2.7.

python
import os
from openai import OpenAI

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

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",
    messages=[
        {"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
        {"role": "user", "content": "Send me the report by tonight or I will be upset."},
    ],
    temperature=0.3,
    max_tokens=1000,
)

print(response.choices[0].message.content)
print(response.choices[0].finish_reason)

A mesma requisição com curl:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [
      {"role": "system", "content": "You are an editor. Rewrite the user'\''s text to be shorter and friendlier. Return only the rewritten text."},
      {"role": "user", "content": "Send me the report by tonight or I will be upset."}
    ],
    "temperature": 0.3,
    "max_tokens": 1000
  }'

O que você deve ver: uma versão curta e mais amigável da frase e stop como o finish_reason. Se o finish_reason for length, a resposta atingiu o limite de max_tokens; veja por que uma resposta de IA para no meio da frase.

Veja a temperature em ação#

A melhor forma de entender a temperature é fazer a mesma pergunta várias vezes. Este loop envia uma requisição curta três vezes com 0 e três vezes com 1, usando o client do exemplo acima:

python
for temp in (0, 1):
    print("temperature", temp)
    for _ in range(3):
        r = client.chat.completions.create(
            model="MiniMaxAI/MiniMax-M2.7",
            messages=[
                {"role": "system", "content": "Answer with one word."},
                {"role": "user", "content": "Name a fruit."},
            ],
            temperature=temp,
            max_tokens=500,
        )
        print(" ", r.choices[0].message.content)

Com 0 as três linhas geralmente são a mesma palavra; com 1 você normalmente verá mais palavras diferentes. Modelos que raciocinam antes de responder podem gastar parte de max_tokens nesse raciocínio, então mantenha o limite generoso mesmo para uma resposta de uma palavra. Depois altere apenas o system prompt (por exemplo, "Responda com uma palavra, em francês") e execute de novo: as regras na mensagem de sistema se aplicam em qualquer temperature.

Esses experimentos são pequenos. Para uma ideia aproximada, aqui está o custo de 100 requisições de cerca de 120 tokens de entrada e 80 de saída cada (uma carga de exemplo; as contagens de tokens dependem dos seus prompts):

Modelo Por solicitação 100 solicitações OpenRouter, 100 solicitações
GLM-5.3-Flash $0.0000056 $0.00056 $0.0011
DeepSeek-V4-Flash $0.0000098 $0.00098 $0.0018
MiniMax-M2.7 $0.000018 $0.0018 $0.0132

120 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.

Em qual modelo testar#

  • MiniMax-M2.7 é uma boa primeira escolha para muitas requisições curtas de teste, e você pode reutilizar o mesmo system prompt nele para comparar respostas: contexto de 180K, até 8.192 tokens de saída, mais barato que o preço de referência do OpenRouter nos dois lados. Preço atual: entrada $0.05, saída $0.15 por 1M tokens.

Um saldo cobre todos eles, então trocar o modelo é uma mudança de uma linha em model. Todos os preços atuais estão na página de preços.

Se não funcionar#

  • 401 ou erro de autenticação: a chave está ausente, digitada errado ou a variável de ambiente não está definida neste terminal. Verifique echo $CHEAPTOKENS_API_KEY.
  • Modelo não encontrado: copie o id do modelo da documentação exatamente, incluindo o prefixo.
  • Erro sobre parâmetro inválido: mantenha temperature dentro do intervalo suportado pelo seu modelo (0 a 1 é seguro) e passe números, não strings.
  • O modelo ignora sua regra: transforme-a em uma frase curta e direta, mova-a para o topo da mensagem de sistema e repita o formato exato que você quer.
  • Alterar a temperature não muda nada: você pode estar usando um modo que a ignora (veja acima), ou a resposta é tão restrita ("uma palavra", "JSON válido") que existem poucas variações.
  • A resposta está cortada: aumente max_tokens; o guia de max_tokens explica como.

Próximo passo#

Coloque uma regra clara na mensagem de sistema, escolha uma temperature da tabela e execute o loop acima na sua própria tarefa. Quando o resultado for o que você quer, mantenha o system prompt curto e reutilize-o. Obtenha uma chave e confira os preços atuais na documentação.