Temperature, Top-K, and Top-P: A Practical Guide to LLM Sampling
Learn how temperature, top-k, and top-p settings control LLM output, with practical recipes and pitfalls for tuning chatbots, coding assistants, and RAG systems.
Pones en marcha un chatbot en directo. A la gente le gusta. Pero una tarde alguien publica una captura de pantalla de una respuesta tan extraña que parece sacada de un sueño febril del modelo. Al mismo tiempo, tu asistente de programación sigue dando siempre la misma respuesta genérica, sin importar cómo formules la pregunta, como un loro que memorizó un programa de estudios.
Ambos síntomas se deben a una misma causa: los ajustes de muestreo nunca se modificaron.
Detrás de escena, el modelo realiza miles de cálculos de probabilidad, uno por token.
- Cada palabra.
- Cada coma.
- Cada nueva idea.
Y aquí está lo que la mayoría de los desarrolladores pasan por alto:
El grado de creatividad, precisión o previsibilidad de una respuesta puede cambiar drásticamente según solo tres ajustes: Temperatura, Top-K y Top-P.
Estos tres botones funcionan como el volante que determina el comportamiento de un modelo de lenguaje.
Tanto si trabajas con la API de OpenAI, los modelos de Anthropic, Google Gemini o la familia Llama de Meta, comprender realmente estos parámetros cambia la forma en que los utilizas para desarrollar.
Analicemos cada uno de ellos, no de manera académica, sino de una forma que puedas aplicar en la práctica.
Primero: Cómo generan texto realmente los LLM
Antes de adentrarnos en Temperature, Top-K y Top-P, hay una idea fundamental que debemos comprender.
Un modelo de lenguaje no compone oraciones como lo hace una persona; predice, un token a la vez.
Tomemos este prompt como ejemplo:
"JavaScript es"
El modelo calcula un conjunto de tokens siguientes posibles junto con sus probabilidades:
awesome -> 30%
a -> 25%
the -> 15%
used -> 10%
not -> 8%
weird -> 7%
broken -> 5%
Estos números provienen de los patrones que el modelo absorbió durante su entrenamiento con enormes cantidades de texto.
La verdadera pregunta es: ¿cuál de estos tokens elige realmente?
Esa decisión está determinada por los parámetros de muestreo, que actúan como filtros sobre la lista de probabilidades brutas.
Si un modelo simplemente eligiera siempre el token con la probabilidad más alta, ese enfoque se denomina decodificación codiciosa. Parece sensato, pero rinde mal en la escritura creativa, las conversaciones y cualquier tarea que requiera matices, ya que tiende a producir texto aburrido, repetitivo y excesivamente cauteloso.
En cambio, los modelos suelen muestrear de la distribución de probabilidades, lo que significa que eligen tokens en función de su probabilidad en lugar de tomar siempre al de mayor ranking.
Temperatura: El regulador de la creatividad
La temperatura es el más conocido de los tres parámetros, y también el que la gente malinterpreta con mayor frecuencia.
La idea central: la temperatura determina cuán nítida o cuán dispersa se vuelve la distribución de probabilidades antes de muestrear un token.
- Baja temperatura (aproximadamente de 0.1 a 0.4): Hace que la distribución sea más nítida. El token ya probable se vuelve aún más dominante, por lo que el modelo se comporta de manera más predecible, conservadora y consistente.
- Alta temperatura (aproximadamente de 0.8 a 1.5 y más): Suaviza la distribución. Los tokens que antes eran poco probables tienen más posibilidades de ser seleccionados, por lo que la salida se vuelve más creativa, sorprendente y, ocasionalmente, incoherente.
- Temperatura = 0: Completamente determinista. El modelo siempre genera el token más probable, es decir, se trata de una decodificación codiciosa.
La matemática (no se preocupe, es sencilla)
En realidad, la temperatura divide cada puntuación bruta del modelo (logit) antes de que esas puntuaciones se conviertan en probabilidades:
adjusted_logit = original_logit / temperature
Esas puntuaciones logit reescaladas luego pasan por una función softmax para generar la distribución de probabilidades final.
- Dividir entre un valor pequeño (baja temperatura): Aumenta la distancia entre los logit, agudizando la distribución, de modo que el modelo elige con mayor confianza su opción principal.
- Dividir entre un valor grande (alta temperatura): Acerca los logit entre sí, aplanando la distribución e introduciendo más aleatoriedad.
Ejemplo: Temperatura = 0
Prompt: "Write a startup tagline for an AI coding tool."
Result: "Build software faster with AI."
Repeat the request ten times and you'll get the exact same line every time.
The reason is simple: temperature 0 always selects the single most probable token, with no exceptions.
This deterministic behavior is well suited to:
- Code generation
- SQL queries
- JSON output
- Structured data extraction
Example: Temperature = 0.3
Result: "Accelerate software development with intelligent AI."
Still fairly consistent, but with a touch more flexibility.
This range works well for:
- Technical writing
- Documentation
- API explanations
Example: Temperature = 1.0
Resultado: "Tu copiloto de IA para convertir ideas de medianoche en código listo para usar."
Ahora la salida tiene más personalidad y variedad. Este rango es adecuado para:
- Escribir blogs
- Textos de marketing
- Sesiones de lluvia de ideas
Ejemplo: Temperatura = 2.0
Resultado: "Sueños de código. Lanza galaxias. Reescribe el mañana con imaginación basada en silicio."
¿Es imaginativo? Claro.
¿Es práctico? No realmente.
Si se eleva demasiado la temperatura, existe el riesgo de obtener textos que no tengan mucho sentido.
Cuándo usar qué
Use | CaseTemperature
========================|=================
Code generation | 0.0 – 0.2
Factual Q&A / RAG. | 0.1 – 0.3
Summarization | 0.3 – 0.5
Chatbot/conversation. | 0.6 – 0.8
Creative writing | 0.8 – 1.2
Brainstorming/ideation. | 1.0 – 1.5
¿Qué es Top-K?
Top-K limita la cantidad de tokens candidatos que el modelo puede considerar.
En lugar de evaluar todo el vocabulario, el modelo se limita a los K tokens con mayor probabilidad.
La regla es, en esencia:
"Descarte todo lo que esté fuera de los K candidatos principales."
Con K = 50, el modelo solo toma muestras de los 50 tokens siguientes más probables. Todo lo que ocupe el puesto 51 o posterior se elimina por completo, independientemente de cuán probable fuera originalmente.
Por qué existe esto
Imagínese una distribución que abarca 50,000 tokens posibles. Incluso los tokens con probabilidades muy bajas pueden ser seleccionados ocasionalmente, generando resultados extraños o sin sentido. La función Top-K funciona como un límite estricto, esencialmente diciendo: "ni siquiera consideraremos los valores atípicos."
Ejemplo
Prompt:
"React es"
Candidatos para los tokens siguientes:
Token -> Probability
a -> 35%
the -> 20%
one -> 15%
becoming -> 10%
fast -> 8%
useful -> 7%
wild -> 5%
Top-K = 1
Solo se mantiene: [a]
Resultado: "React es a"
Extremadamente seguro, sin ninguna variación creativa. Es funcionalmente idéntico al decodificación agresiva.
Top-K = 3
Se mantuvieron: [a, the, one]
Esto introduce cierta variedad controlada.
Las completaciones posibles incluyen:
- React es un…
- React es el…
- React es uno de los…
Un punto intermedio razonable.
Top-K = 5
Se mantuvieron: [a, the, one, becoming, fast]
Hay más espacio para variar. Las respuestas se vuelven notablemente más diversas.
Top-K = 50
Una red mucho más amplia. Pueden surgir elecciones de palabras inusuales pero potencialmente interesantes, aunque también aumenta la posibilidad de resultados extraños.
Analogía del mundo real para Top-K
Imagínese elegir comida de un menú con 200 platos.
Establecer Top-K en 5 significa que solo echa un vistazo a los cinco platos más recomendados.
La toma de decisiones se vuelve más rápida y menos abrumadora. Esa es, en esencia, la función que cumple Top-K para un modelo de lenguaje.
¿Qué es Top-P? (Muestreo de núcleo)
Top-P adopta un enfoque más refinado que Top-K.
En lugar de truncar en un número fijo de candidatos, lo hace según la probabilidad acumulada. Se siguen añadiendo tokens en orden, desde los más hasta los menos probables, hasta que su probabilidad combinada alcance P; luego solo se muestrea de ese conjunto.
Así, si estableces P = 0.9, el modelo selecciona del grupo más pequeño posible de tokens cuyas probabilidades juntas representan el 90% de la distribución total.
¿Por qué “Muestreo de núcleo”?
El nombre refleja la idea de que los tokens de mayor rango forman un núcleo, un “núcleo”, de continuaciones realistas. Todo lo que está fuera de ese núcleo se considera ruido: tokens de cola de baja probabilidad que el modelo evaluó técnicamente pero que no deberían ser candidatos reales para la muestreo.
Probabilidades de ejemplo:
Top-P = 0.50
Sigue añadiendo tokens hasta que la suma acumulada alcance al menos el 50 %.
A = 40% B = 25%
Total combinado = 65%
Se mantienen: [A, B]
Top-P = 0.80
A = 40% B = 25% C = 20%
Total combinado = 85%
Se mantienen: [A, B, C]
Top-P = 0.95
A+B+C+D = 95%
Se mantienen: [A, B, C, D]
Lo más importante de notar es que Top-P ajusta dinámicamente su conjunto de candidatos.
Esa es precisamente la razón por la que a menudo se prefiere sobre Top-K en configuraciones modernas.
Valores típicos
P | ValueBehavior
=====|============================
0.5. | Very conservative, focused
0.75 | Balanced
0.9 | Standard creative tasks
0.95 | More exploratory
1.0 | No filtering (use all tokens)
Top-K vs Top-P
Top-K funciona con un número fijo de tokens.
Top-P funciona con un número variable de tokens.
Ejemplo:
Cuando la distribución de probabilidades tiene un pico pronunciado, Top-P podría terminar conservando solo 2 tokens.
Cuando está más dispersa, Top-P podría conservar 15.
Esa adaptabilidad es lo que la hace tan efectiva.
Top-K le dice al modelo “elige de estas X opciones”. Top-P le dice “elige de todas las buenas opciones que existan”.
Esa distinción es muy importante en la práctica.
Usarlos juntos (aquí es donde se pone interesante)
Hay algo que rara vez se explica claramente: la temperatura, Top-K y Top-P se aplican en secuencia, no de forma aislada.
Un flujo típico de muestreo se ve así:
Raw logits
↓
÷ Temperature (reshape the distribution)
↓
Apply Top-K (cut to top K tokens)
↓
Apply Top-P (cut to nucleus)
↓
Sample (pick one token from what's left)
Cada etapa reduce aún más el conjunto de tokens candidatos, y el orden en que se aplican estos filtros es importante.
Recetas prácticas para proyectos reales
Receta 1: El asistente de código
temperature = 0.1
top_p = 0.95
top_k = 40
Aquí se busca previsibilidad, una única respuesta correcta y sin sorpresas. Una temperatura baja realiza la mayor parte del trabajo, mientras que Top-P funciona como una barrera de seguridad adicional.
Receta 2: El chatbot
temperature = 0.7
top_p = 0.9
top_k = 50
Esto genera respuestas conversacionales y con sonido natural, sin caer en la aleatoriedad. El modelo suena humano, no robótico.
Receta 3: El compañero de escritura creativa
temperature = 1.1
top_p = 0.95
top_k = 0 # disabled
Dé al modelo espacio para explorar. Lo que se busca es una variación creativa genuina, no contenido genérico. Top-K se desactiva por completo, permitiendo que Top-P se encargue solo del filtrado.
Receta 4: El sistema RAG factual
temperature = 0.0
top_p = 1.0
top_k = 1
Se trata de una decodificación completamente agresiva. Dado que el modelo ya cuenta con el contexto relevante, lo que se busca es la respuesta más probable, sin ningún tipo de aleatoriedad en el muestreo, algo que no ocurre en procesos como los relacionados con facturas.
Receta 5: Escritura de blogs
Temperature = 0.8
Top-K = 40
Top-P = 0.95
Esto genera texto que parece natural y atractivo, adecuado para artículos extensos.
Receta 6: Escritura de historias
Temperature = 1.2
Top-K = 100
Top-P = 0.98
Esto favorece resultados imaginativos y menos predecibles, muy adecuados para la ficción.
Receta 7: Extracción de datos
Temperature = 0
Top-K = 1
Top-P = 1
Es estricto y completamente determinista, ideal para tareas como la extracción de JSON, la clasificación o la extracción de entidades.
Problemas que nadie te advierte
1. Una temperatura más alta no significa un resultado más inteligente
Es tentador aumentar la temperatura con la esperanza de que el modelo “piense más profundamente” o sea más creativo. Lo que realmente ocurre es que se introduce ruido. El modelo comienza a utilizar tokens que consideró poco probables, y generalmente por buenas razones. El resultado son contenidos inventados, argumentos sin coherencia y gramática incorrecta. La creatividad impulsada por la aleatoriedad no es lo mismo que la creatividad que surge de un razonamiento sólido.
2. La temperatura = 0 solo es determinista dentro de una misma sesión
A una temperatura de 0, el modelo aplica efectivamente el algoritmo argmax, eligiendo siempre el token con mayor probabilidad. Pero en diferentes hardware, tamaños de lote o versiones de API, pequeñas diferencias en el redondeo de los números en punto flotante pueden seguir produciendo resultados ligeramente distintos. No asuma una reproducibilidad perfecta a menos que también establezca una semilla aleatoria donde la API lo permita.
3. Top-P y Top-K pueden actuar en contra uno del otro
Si Top-K se establece muy bajo, digamos K=5, mientras que Top-P se establece alto, por ejemplo P=0.95, Top-K gana efectivamente la competencia. Ya se ha restringido el muestreo a 5 tokens, por lo que Top-P no tiene un conjunto adicional del cual poder eliminar elementos. Sea deliberado al decidir qué parámetro realiza realmente el filtrado en su configuración.
4. Los valores predeterminados difieren entre proveedores
GPT-4 de OpenAI viene por defecto con temperature=1.0 y top_p=1.0. Los modelos Claude de Anthropic no publican un valor predeterminado universal, ya que varía según la versión del modelo. Gemini de Google suele utilizar temperature=1.0, top_p=0.95 y top_k=40 en algunas configuraciones.
Siempre verifique estos valores por su cuenta en lugar de asumirlos. Transferir la misma aplicación a un modelo diferente sin ajustar estos parámetros puede provocar un comportamiento notablemente distinto.
Valores predeterminados recomendados
Un punto de partida razonable para usos generales sería este:
Ajuste estos valores según la tarea específica que tenga entre manos.
El modelo mental que debe recordar
Si nada más queda grabado en su memoria, recuerde esto:
La temperatura controla la aleatoriedad. Top-K determina cuántas opciones existen. Top-P regula el límite de probabilidad de esas opciones.
Eso resume todo el concepto.
Una vez que entienda cómo interactúan estos tres elementos, deja de simplemente “usar” un modelo de IA.
Comienza a diseñar sus resultados de manera intencionada. Ese cambio es lo que distingue las solicitudes casuales de los sistemas de IA de nivel profesional.
Y en el futuro, esa distinción se volverá aún más importante.
Reflexiones finales
Muchos desarrolladores invierten todo su esfuerzo en perfeccionar los prompts, pero estos son solo la mitad de la ecuación. Los parámetros de muestreo son los controles menos visibles que realizan una labor igualmente importante.
A menudo, son incluso más cruciales que la redacción del propio prompt.
La próxima vez que un LLM genere algo extraño, no culpe de inmediato al modelo.
En su lugar, verifique:
- Temperatura
- Top-K
- Top-P
A veces, el modelo no es quien está confundido.
Su configuración sí lo está. Una vez que comprenda esto, obtendrá un nivel mucho más profundo de control sobre el comportamiento de estos sistemas.
¡Feliz programación!
Lecturas relacionadas
- Agentes de datos gestionados por ontologías en Microsoft Fabric IQ: Una guía práctica — Aprenda cómo Microsoft Fabric IQ combina modelos semánticos, ontologías y MCP para llevar a los agentes de IA empresariales desde la recuperación de datos hasta el razonamiento comercial regulado.
- Comprendiendo los agentes de IA: Objetivos, herramientas, memoria y el bucle del agente — Una explicación sencilla para principiantes sobre las diferencias entre los agentes de IA y los chatbots, que abarca los componentes esenciales, el bucle de decisión, los niveles de autonomía y casos de uso en el mundo real.