# Temperatura y muestreo: por qué el mismo prompt da respuestas distintas

> Un modelo de lenguaje no elige la palabra más probable: tira un dado cargado. La temperatura, top-p y top-k deciden cuánto está cargado.

- Fuente canónica: https://www.ricardovelit.com/blog/p/temperatura-y-muestreo
- Nivel: intermedio · Lectura: 2 min · Publicado: 2026-09-06
- Etiquetas: prompting, muestreo, temperatura
- Relacionados: [atencion-en-transformers](https://www.ricardovelit.com/blog/p/atencion-en-transformers.md)
- Contiene componentes interactivos que solo funcionan en la versión web.

---
## El modelo no responde: propone

Después de procesar tu prompt, un modelo de lenguaje no produce una palabra. Produce una
**distribución de probabilidad sobre todo su vocabulario**: decenas de miles de números
que suman 1. La palabra que ves es el resultado de **muestrear** esa distribución.

Por eso el mismo prompt puede dar respuestas distintas. Y por eso existen tres perillas
para controlar el azar.

## Temperatura

Antes del muestreo, las puntuaciones del modelo pasan por un softmax dividido por la
temperatura *T*:

```text
T = 0.2  →  [0.97, 0.02, 0.01, ...]   casi determinista
T = 1.0  →  [0.60, 0.25, 0.10, ...]   la distribución "real" del modelo
T = 1.8  →  [0.35, 0.30, 0.20, ...]   aplanada: aparecen opciones raras
```

- **T → 0**: siempre sale la opción más probable. Repetitivo, pero predecible.
  Bueno para extracción, clasificación, código.
- **T = 1**: el modelo tal cual fue entrenado.
- **T > 1**: sube la probabilidad de las opciones improbables. Más variedad, más
  errores. Útil para lluvia de ideas; peligroso para hechos.

Es exactamente la misma temperatura que aplana o afila la
[atención](/p/atencion-en-transformers): misma fórmula, distinto lugar.

## Top-k y top-p (nucleus)

La temperatura cambia la forma de la distribución. Top-k y top-p **recortan la cola**:

| Perilla | Qué hace | Riesgo |
| --- | --- | --- |
| **top-k = 40** | Solo considera las 40 opciones más probables. | Rígido: 40 puede ser mucho o poco según el contexto. |
| **top-p = 0.9** | Considera las opciones más probables hasta acumular 90 %. | Adaptativo: pocas opciones si el modelo está seguro, muchas si duda. |

En la práctica, top-p se usa más porque se adapta solo. Y conviene **no mover
temperatura y top-p a la vez**: sus efectos se confunden y no sabrás cuál causó qué.

## Una receta que funciona

```json
{
  "tarea": "extraer campos de una factura",
  "temperature": 0.0,
  "top_p": 1.0
}
```

```json
{
  "tarea": "proponer diez títulos para un artículo",
  "temperature": 0.9,
  "top_p": 0.95
}
```

Para tareas con una respuesta correcta, baja la temperatura. Para tareas donde la
diversidad es el valor, súbela y deja top-p cerca de 1.

## Pruébalo

Elige un modelo y compara. Fíjate en un detalle importante: en los modelos más recientes
(Opus 5, Sonnet 5) **la temperatura ya no existe como parámetro**; la API la rechaza. Lo que
se ajusta es el **esfuerzo de razonamiento**, que decide cuánto piensa el modelo antes de
responder. Haiku 4.5 conserva la temperatura clásica. El playground te muestra el control
que cada modelo acepta de verdad.

> **[Componente interactivo: PromptPlayground]** — playground de prompts: ejecuta un prompt contra un modelo real o simulado. Solo en la versión web: https://www.ricardovelit.com/blog/p/temperatura-y-muestreo

Sin una API key configurada, la respuesta es una **simulación determinista** y lo dice. La
mecánica del formulario, los límites y las etiquetas son las mismas que con el modelo real.

## Lo que la temperatura no arregla

Bajar la temperatura a 0 **no elimina las alucinaciones**. Si la opción más probable del
modelo es falsa, saldrá con toda seguridad. La temperatura controla la *varianza*, no la
*verdad*. Para la verdad hacen falta datos en el contexto (RAG) y verificación.

## Para llevarte

Cada token es una **tirada de dados cargados**. La temperatura decide cuánto están
cargados; top-p, cuántas caras tiene el dado. Elige según la tarea, cambia una perilla a
la vez, y no le pidas al azar lo que solo pueden dar los datos.
