System prompt y temperatura: qué hacen y cómo configurarlos
Qué hacen el mensaje de sistema y la temperatura en una solicitud compatible con OpenAI, con ejemplos en Python y curl que puedes enviar a un modelo de CheapTokens.

En esta página
Un system prompt es un mensaje con el rol system que le indica al modelo cómo debe comportarse en cada respuesta: quién es, qué formato usar, qué evitar. La temperatura es un número, normalmente entre 0 y 2 (el rango depende del modelo), que establece cuánto puede variar la redacción: los valores bajos dan respuestas enfocadas y repetibles, los valores altos dan respuestas más variadas. Ambos van en la misma solicitud de Chat Completions, que envías a https:/.
A continuación: qué es cada uno, con qué valores empezar y una solicitud que puedes ejecutar en Python o curl. Si aún no has enviado una solicitud, empieza con tu primera solicitud a la API con CheapTokens.
¿Qué es un system prompt?#
Una solicitud de chat es una lista de mensajes, y cada mensaje tiene un rol. La referencia de Chat Completions enumera cuatro: system, user, assistant y tool (referencia de la API de DeepSeek, consultada el 22 de octubre de 2026). Para una primera solicitud necesitas tres:
system— instrucciones permanentes tuyas, el desarrollador. El modelo las trata como las reglas de la conversación.user— lo que la persona pregunta o proporciona en este turno.assistant— las respuestas anteriores del modelo. Las añades tú mismo cuando continúas una conversación.
Un mensaje de sistema necesita role establecido en system y content como cadena. El campo name es 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."}
]El mensaje de sistema va primero. El mensaje de usuario es la tarea real.
Cómo escribir un system prompt útil#
- Di qué hace el modelo en una frase: "Eres un editor", "Clasificas tickets de soporte".
- Indica el formato de salida: "Devuelve solo el texto reescrito", "Responde en dos frases", "Responde con JSON válido".
- Da las reglas como frases cortas y directas. Varias líneas claras funcionan mejor que un párrafo largo.
- Mantenlo corto. El system prompt se envía con cada solicitud y se cuenta como tokens de entrada, así que uno largo se paga cada vez. Cómo se facturan la entrada y la salida está en tokens de entrada vs salida.
¿Qué hace la temperatura?#
Un modelo elige cada siguiente token de un conjunto de candidatos probables. La temperatura controla con qué rigor se ciñe al más probable. Según la referencia de la API de DeepSeek (consultada el 22 de octubre de 2026), temperature acepta valores de 0 a 2 con un valor predeterminado de 1: los valores altos dan una salida más aleatoria, los valores bajos dan una salida más enfocada y determinista. Los rangos difieren entre modelos: DeepSeek documenta de 0 a 2, Z.ai documenta de 0 a 1 para GLM-5.3 (ambos consultados el 22 de octubre de 2026), así que los valores de 0 a 1 son seguros en ambos. Consulta el rango de tu modelo en la documentación.
Puntos de partida que funcionan para la mayoría de tareas. Son reglas generales, no garantías:
Desplaza la tabla hacia la derecha →
| Tarea | Empieza con |
|---|---|
| Extracción, clasificación, código, formatos estrictos | 0 a 0.3 |
| Preguntas y respuestas, resúmenes, reescritura | 0.3 a 0.7 |
| Lluvia de ideas, nombres, texto creativo | 0.8 a 1 |
Tres cosas que debes saber:
- Una temperatura baja es más repetible, no idéntica. No confíes en respuestas idénticas byte a byte.
- Cambia la temperatura o top_p, no ambos. Esta es la recomendación de DeepSeek;
top_pes un segundo parámetro de muestreo con un valor predeterminado de 1. Déjalo en paz mientras aprendes. - Algunos modos ignoran la temperatura. La referencia de DeepSeek dice que la temperatura no tiene efecto en el modo de razonamiento, y que
top_pestá fijado en 1.0 en el modo sin razonamiento. Si cambias un valor y no ves diferencia, comprueba primero el modo del modelo.
Envía una solicitud con ambos#
Establece la clave como variable de entorno, para que nunca acabe en el código (consulta qué es una clave de API y cómo guardarla de forma segura). Toma el id exacto del modelo de la documentación de CheapTokens: distintos proveedores nombran el mismo modelo de forma diferente. Este ejemplo 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)La misma solicitud con 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
}'Lo que deberías ver: una versión corta y más amable de la frase y stop como finish_reason. Si finish_reason es length, la respuesta alcanzó el límite de max_tokens; consulta por qué una respuesta de IA se corta a mitad de frase.
Ve la temperatura en acción#
La mejor forma de entender la temperatura es hacer la misma pregunta varias veces. Este bucle envía una solicitud corta tres veces con 0 y tres veces con 1, usando el client del ejemplo anterior:
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)Con 0 las tres líneas suelen ser la misma palabra; con 1 normalmente verás más palabras diferentes. Los modelos que razonan antes de responder pueden gastar parte de max_tokens en ese razonamiento, así que mantén el límite generoso incluso para una respuesta de una palabra. Luego cambia solo el system prompt (por ejemplo, "Responde con una palabra, en francés") y ejecútalo de nuevo: las reglas del mensaje de sistema se aplican a cualquier temperatura.
Estos experimentos son pequeños. Para hacerte una idea aproximada, aquí está el coste de 100 solicitudes de unos 120 tokens de entrada y 80 de salida cada una (una carga de trabajo de ejemplo; los recuentos de tokens dependen de tus prompts):
| Modelo | Entrada $/1M | Salida $/1M | Por solicitud | 100 solicitudes | OpenRouter, 100 solicitudes |
|---|---|---|---|---|---|
| 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 y 80 tokens de salida por solicitud. Los precios por 1M de tokens son actuales y cambian junto con nuestras tarifas; la columna de OpenRouter muestra precios de referencia para la misma carga de trabajo.
En qué modelo probarlo#
- MiniMax-M2.7 es una buena primera opción para muchas solicitudes de prueba cortas, y puedes reutilizar el mismo system prompt en él para comparar respuestas: contexto de 180K, hasta 8.192 tokens de salida, más barato que el precio de referencia de OpenRouter en ambos lados. Precio actual: entrada $0.05, salida $0.15 por 1M de tokens.
Un solo saldo cubre todos ellos, así que cambiar de modelo es un cambio de una línea en model. Todos los precios actuales están en la página de precios.
Si no funciona#
- 401 o un error de autenticación: falta la clave, está mal escrita o la variable de entorno no está establecida en este terminal. Comprueba
echo $CHEAPTOKENS_.API_ KEY - Modelo no encontrado: copia el id del modelo de la documentación exactamente, incluido el prefijo.
- Un error sobre un parámetro no válido: mantén
temperaturedentro del rango que admite tu modelo (0 a 1 es seguro) y pasa números, no cadenas. - El modelo ignora tu regla: conviértela en una frase corta y directa, muévela al principio del mensaje de sistema y repite el formato exacto que quieres.
- Cambiar la temperatura no cambia nada: puede que estés usando un modo que la ignora (ver arriba), o que la respuesta esté tan restringida ("una palabra", "JSON válido") que existan pocas variaciones.
- La respuesta se corta: aumenta
max_tokens; la guía de max_tokens explica cómo.
Siguiente paso#
Pon una regla clara en el mensaje de sistema, elige una temperatura de la tabla y ejecuta el bucle anterior en tu propia tarea. Cuando el resultado sea el que quieres, mantén el system prompt corto y reutilízalo. Obtén una clave y consulta los precios actuales en la documentación.



