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.

Nesta página
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:/.
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.
"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:
Role a tabela para a direita →
| 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:
- Temperature baixa é mais repetível, não idêntica. Não conte com respostas iguais byte a byte.
- 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. - 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.
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:
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:
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 | Entrada $/1M | Saída $/1M | Por solicitação | 100 solicitações | OpenRouter, 100 solicitações |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0000056 | $0.00056 | $0.0011 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0000098 | $0.00098 | $0.0018 |
| MiniMax-M2.7 | $0.05 | $0.15 | $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
temperaturedentro 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.



