Para entender la temperature, necesitas saber que sucede justo antes de que un modelo produzca un token. El modelo produce un vector de puntuaciones crudas (llamadas logits) — una puntuacion por cada token en su vocabulario, que podria tener de 32,000 a 128,000 entradas. Estos logits se dividen por el valor de temperature y se pasan por una funcion softmax, que los convierte en una distribucion de probabilidad. Cuando la temperature es 1.0, el softmax opera sobre los logits crudos tal cual. Cuando la temperature es 0.5, los logits se duplican efectivamente antes del softmax, lo que hace la distribucion de probabilidad mas aguda — el token mas probable obtiene una porcion aun mayor de la probabilidad. Cuando la temperature es 2.0, los logits se reducen a la mitad, lo que aplana la distribucion y le da a los tokens menos probables una mejor oportunidad de ser seleccionados.
Temperature 0 es un caso especial que la mayoria de los proveedores de API implementan como decodificacion greedy — siempre elegir el token con mayor probabilidad, sin muestreo involucrado. Esto hace la salida determinista (o casi; algunos proveedores agregan ruido minusculo de punto flotante). Es la opcion correcta cuando quieres resultados reproducibles: extraccion de datos estructurados, tareas de clasificacion, preguntas y respuestas factuales, o cualquier cosa donde la "creatividad" es un problema. Un patron comun en produccion es usar temperature 0 para todos los pipelines automatizados y reservar temperatures mas altas para funcionalidades creativas orientadas al usuario.
La temperature interactua con otro parametro de muestreo llamado top-p (muestreo por nucleo) de formas que confunden a la gente. Top-p limita la seleccion de tokens al conjunto mas pequeno de tokens cuya probabilidad acumulada supera el umbral p. Establecer temperature en 0.7 con top-p en 0.9 es diferente de temperature 1.0 con top-p en 0.7, aunque ambos buscan "aleatoriedad moderada". La mayoria de los profesionales recomiendan ajustar uno u otro, no ambos simultaneamente, porque la interaccion es dificil de razonar. La API de Anthropic tiene como valor predeterminado temperature 1.0 con top-p 1.0 para Claude. OpenAI tiene como predeterminado temperature 1.0 con top-p 1.0 para los modelos GPT. Si estas ajustando ambos a la vez, probablemente estas complicando las cosas de mas.
La temperature correcta depende de la tarea, y el consejo de "0.7 es bueno para todo" es una simplificacion excesiva. Para generacion de codigo, la mayoria de los desarrolladores encuentran que 0–0.3 produce los resultados mas confiables. Para asistentes conversacionales, 0.5–0.8 da variedad que suena natural sin descarrilarse. Para escritura creativa, lluvia de ideas o generar opciones diversas, 0.9–1.2 funciona bien. Ir por encima de 1.5 produce salidas cada vez mas incoherentes que rara vez son utiles en la practica. Algunos modelos soportan temperatures por encima de 2.0 tecnicamente, pero la calidad de la salida se degrada rapido — empieza a parecerse a una sopa de tokens aleatorios en lugar de texto creativo.
Un punto sutil pero importante: la temperature afecta la aleatoriedad a nivel de token, no la creatividad a nivel de ideas. Una temperature mas alta no hace que el modelo "piense de forma mas creativa" en ningun sentido significativo — lo hace mas propenso a elegir palabras inesperadas. A veces eso produce combinaciones genuinamente novedosas. Otras veces solo produce errores gramaticales, non sequiturs o alucinaciones. Si quieres enfoques genuinamente diferentes a un problema, frecuentemente es mejor ejecutar el mismo prompt multiples veces a temperature moderada (digamos 0.8) y comparar los resultados, que subir la temperature a 1.5 y esperar lo mejor. Este es el principio detras de tecnicas como auto-consistencia y muestreo best-of-N, que usan temperature moderada con multiples muestras para obtener tanto diversidad como calidad.