Menu

Température d'un LLM : rôle et réglage

La température contrôle la part de hasard qu'utilise un modèle de langage pour choisir chaque mot suivant. Comment elle modifie les probabilités, quand la régler bas ou haut, et en quoi elle diffère de top_p.

Chaque prompt de cette page se modifie, puis s'ouvre dans ChatGPT, Claude ou une autre application d'IA.

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.

Mon langage de programmation préféré est …
Next word probabilities
Python46%
JavaScript28%
Rust14%
C7.6%
Haskell3.4%
COBOL0.8%
Samples
Press Sample to let the model pick a word ten times.

À 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âchePoint de départPourquoi
Code, corrections de bugs, SQLBasse, de 0 à 0,3Il y a en général une meilleure suite, et vous voulez le même résultat à chaque exécution
Extraction, classification, JSON0Toute variation est du bruit, et un programme doit lire la sortie
Explications, questions du quotidienLa valeur par défaut du fournisseurLes valeurs par défaut sont choisies pour un usage général
Brainstorming, noms, idées d'histoiresPar défaut ou un peu plus hauteVous 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.

Fill in
Propose un nom pour une application de suivi d'habitudes.
Try it
Example replyReplies vary between models and runs.

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.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER