La température est un nombre qui contrôle la part de hasard qu'un modèle de langage utilise pour choisir le mot suivant. À basse température, le modèle prend presque toujours le mot le plus probable : les réponses sont ciblées et reproductibles. À haute température, les chances se répartissent : les réponses varient davantage et partent parfois dans tous les sens. La température change la façon dont le modèle choisit parmi les mots qu'il envisage déjà ; elle ne change pas ce qu'il sait.
Comment un modèle choisit le mot suivant
Un modèle écrit un token à la fois, un token étant un mot ou un morceau de mot (voir tokens et fenêtre de contexte). À chaque étape, il attribue un score, appelé logit, à chaque token de son vocabulaire. Une fonction appelée softmax transforme ces scores en probabilités : chaque score est passé à l'exponentielle puis divisé par la somme de tous, si bien que les scores élevés obtiennent de plus grandes parts et que toutes les parts totalisent 1. Le modèle tire ensuite un token au hasard selon ces parts.
La température intervient juste avant la softmax. Chaque score est divisé par la température T :
probabilité(mot) = exp(score / T) / somme des exp(score / T) sur tous les candidats
Avec T inférieur à 1, les écarts entre scores grandissent, et le favori prend encore plus d'avance. Avec T supérieur à 1, les écarts se réduisent, et les outsiders rattrapent leur retard. À T = 1, vous obtenez les probabilités propres du modèle. À T = 0, la division n'est pas définie, donc les API l'interprètent comme "toujours prendre le premier token", ce qu'on appelle le décodage glouton (greedy decoding).
Essayez : le curseur de température
La démo ci-dessous continue la phrase "Mon langage de programmation préféré est" avec six mots candidats. Les scores sont illustratifs, choisis pour cette démo ; un vrai modèle attribue des scores à un vocabulaire de dizaines de milliers de tokens ou plus, et un nom de langage peut être découpé en plusieurs tokens. Les calculs, eux, sont réels : les barres sont la softmax de ces scores à la température choisie, et le bouton d'échantillonnage tire dix mots à partir d'elles.
À 1,0, Python obtient environ 46 % et COBOL moins de 1 %. Descendez à 0,5 et Python monte à environ 67 % tandis que COBOL disparaît presque. Montez à 2,0 et Python tombe à environ 32 % tandis que COBOL grimpe à environ 4 %, si bien qu'environ une série de dix tirages sur trois le contiendra au moins une fois. Remarquez ce qui n'arrive jamais : l'ordre des mots reste le même quel que soit le réglage. La température ne peut pas rendre COBOL plus probable que Python ; elle ne fait qu'élargir ou resserrer les écarts.
Une vraie réponse enchaîne des centaines de ces tirages, et chaque tirage entre dans le contexte du suivant. Un mot inhabituel au début change tout ce qui suit, c'est pourquoi une réponse à haute température s'éloigne bien plus qu'un seul mot de cette démo ne le laisse penser.
Quand choisir une température basse ou haute
| Tâche | Point de départ | Pourquoi |
|---|---|---|
| Code, corrections de bugs, SQL | Basse, de 0 à 0,3 | Il y a en général une meilleure suite, et vous voulez le même résultat à chaque exécution |
| Extraction, classification, JSON | 0 | Toute variation est du bruit, et un programme doit lire la sortie |
| Explications, questions du quotidien | La valeur par défaut du fournisseur | Les valeurs par défaut sont choisies pour un usage général |
| Brainstorming, noms, idées d'histoires | Par défaut ou un peu plus haute | Vous voulez des options différentes les unes des autres |
Deux mises en garde. D'abord, une température basse ne rend pas une réponse vraie. Si la réponse la plus probable du modèle est fausse, la température 0 vous donne cette réponse fausse à chaque fois, simplement de façon constante ; voir hallucinations de l'IA. Ensuite, des valeurs très élevées (bien au-dessus de 1, sur les API dont l'échelle va jusqu'à 2) produisent souvent un texte qui perd le fil ou n'a plus de sens, parce que des tokens improbables sont choisis de plus en plus souvent.
Le hasard est parfois le but recherché. Le prompting par self-consistency pose volontairement plusieurs fois la même question de raisonnement à une température non nulle, puis retient la réponse sur laquelle la plupart des exécutions s'accordent.
Température, top_p et top_k
Deux autres paramètres contrôlent aussi l'échantillonnage, et les API les proposent souvent à côté de la température.
top_p (nucleus sampling) ne garde que les tokens les plus probables dont les probabilités totalisent p, puis tire parmi eux. Avec les chiffres de la démo à température 1 : Python, JavaScript et Rust totalisent environ 88 %, et ajouter C fait passer la barre des 90 %. Avec top_p = 0.9, le modèle ne tire donc que parmi ces quatre ; Haskell et COBOL ne peuvent jamais apparaître. Contrairement à la température, top_p s'adapte : quand le modèle est sûr de lui, peu de tokens passent le seuil, et quand il hésite, beaucoup.
top_k garde un nombre fixe de tokens parmi les plus probables, par exemple les 40 premiers. Certaines API le proposent, d'autres non.
Les fournisseurs recommandent en général de modifier soit la température, soit top_p, mais pas les deux, car leurs effets se cumulent de façon difficile à prévoir.
Régler la température dans l'API
Les applications de chat cachent ce réglage, mais les API l'acceptent comme paramètre. La plage dépend du fournisseur : l'API Chat Completions d'OpenAI accepte de 0 à 2, et l'API Messages d'Anthropic de 0 à 1. Certains modèles de raisonnement n'acceptent que leur valeur par défaut.
from openai import OpenAI
client = OpenAI()
MODEL = "your-model-id" # e.g. from your provider's model list
response = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "Write a SQL query that counts orders per customer."}],
temperature=0.2,
)
print(response.choices[0].message.content)
import anthropic
client = anthropic.Anthropic()
MODEL = "your-model-id" # e.g. from your provider's model list
message = client.messages.create(
model=MODEL,
max_tokens=500,
temperature=0.2,
messages=[{"role": "user", "content": "Write a SQL query that counts orders per customer."}],
)
print(message.content[0].text)
Pourquoi les applications de chat la cachent, et quoi faire à la place
Les applications ChatGPT, Claude et Gemini choisissent les paramètres d'échantillonnage pour vous et n'affichent aucun curseur. Cela garde les applications simples, et pour la plupart des demandes, reformuler le prompt change bien plus la réponse qu'un paramètre d'échantillonnage.
Dans une application de chat, c'est donc le prompt qui sert de réglage. Demander une seule réponse vous donne quelque chose de proche du premier choix du modèle. Demander de nombreuses réponses différentes les unes des autres vous donne de la variété quelle que soit la température, car le modèle a désormais une raison d'éviter son premier choix. Passez d'un onglet à l'autre et changez le produit pour voir la différence.
Streakly. Il est court, facile à retenir et évoque les séries quotidiennes qui donnent envie de revenir.
Le bouton de régénération d'une application de chat tire une nouvelle réponse à partir du même prompt : c'est un moyen rapide de voir à quel point les réponses varient. Si elles varient plus que vous ne le voulez, la solution est en général un prompt plus précis : une tâche bien définie resserre l'éventail des bonnes réponses, ce qui rapproche les exécutions. Le guide pour écrire un prompt explique quoi ajouter.
Questions fréquentes
Qu'est-ce que la température d'un LLM ?
La température est un paramètre d'échantillonnage qui contrôle le degré de hasard dans le choix de chaque token suivant. Le modèle attribue un score à chaque token possible, et ces scores sont divisés par la température avant d'être transformés en probabilités. Une valeur basse laisse le premier choix dominer ; une valeur haute aplatit les chances pour que des tokens moins probables soient choisis plus souvent.
Quelle température utiliser pour coder ?
Une valeur basse, entre 0 et 0,3 environ, est un point de départ courant pour le code, l'extraction de données et toute tâche qui a une seule bonne réponse, car vous voulez la suite la plus probable et des résultats reproductibles. Montez-la quand vous voulez de la variété, par exemple pour trouver des noms ou des conceptions alternatives. Certains modèles de raisonnement n'acceptent que leur valeur par défaut : vérifiez la documentation de votre fournisseur.
Quelle est la différence entre la température et top_p ?
La température remodèle toute la distribution de probabilités. top_p, aussi appelé nucleus sampling, la coupe : le modèle ne tire qu'au sein du plus petit groupe de tokens dont les probabilités totalisent p, donc top_p = 0.9 écarte la longue traîne des tokens improbables. Les fournisseurs recommandent en général de régler l'un des deux et de laisser l'autre à sa valeur par défaut.
Une température de 0 rend-elle la sortie déterministe ?
Presque, mais pas totalement. À 0, le modèle prend le token le plus probable à chaque étape, donc des exécutions répétées sont en général identiques ou très proches. De petites différences numériques sur les serveurs du fournisseur peuvent quand même changer un token de temps en temps, et dès qu'un token diffère, la suite de la réponse peut prendre un autre chemin.
Peut-on changer la température dans ChatGPT ou Claude ?
Pas dans les applications de chat : elles choisissent les paramètres d'échantillonnage pour vous et n'affichent aucun réglage de température. Vous pouvez la définir via les API et dans des outils pour développeurs comme le Playground d'OpenAI, la Console d'Anthropic et Google AI Studio. Dans une application de chat, demandez de la variété ou de la constance dans le prompt lui-même.