Accueil / Articles / Temperature, Top-K, and Top-P: A Practical Guide to LLM Sampling

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.

2423 mots

Ces deux symptômes ont une seule cause : les paramètres d’échantillonnage n’ont jamais été ajustés.

Dans l’ombre, le modèle effectue des milliers de calculs de probabilité, un token à la fois.

  • Chaque mot.
  • Chaque virgule.
  • Chaque idée suivante.

Et voici ce que la plupart des développeurs négligent :

Le degré de créativité, de précision ou de prévisibilité d’une réponse peut varier considérablement en fonction de seulement trois paramètres : Temperature, Top-K et Top-P.

Ces trois boutons servent de volant de direction pour déterminer le comportement d’un modèle de langage.

Que vous travailliez avec l’API d’OpenAI, les modèles d’Anthropic, Google Gemini ou la famille Llama de Meta, comprendre réellement ces paramètres change la manière dont vous les utilisez pour créer du contenu.

Examinons chacun d’eux, non pas de manière académique, mais de façon que vous puissiez vraiment les appliquer.

Tout d’abord : comment les LLM génèrent réellement du texte

Prenons cet exemple de prompt :

"JavaScript est"

awesome -> 30%
a -> 25%
the -> 15%
used -> 10%
not -> 8%
weird -> 7%
broken -> 5%

Ces chiffres proviennent des schémas que le modèle a absorbés lors de son entraînement sur d’énormes quantités de texte.

La vraie question est : lequel de ces tokens choisit-il réellement ?

Cette décision est déterminée par des paramètres d’échantillonnage, qui agissent comme des filtres sur la liste de probabilités brutes.

Si un modèle choisissait systématiquement le token ayant la probabilité la plus élevée, cette approche s’appelle décodage gourmand. Elle semble logique, mais elle donne de mauvais résultats pour l’écriture créative, les conversations ou toute tâche nécessitant de la nuance, car elle produit généralement du texte ennuyeux, répétitif et excessivement prudent.

Au lieu de cela, les modèles échantillonnent généralement à partir de la distribution de probabilités, ce qui signifie qu’ils choisissent des tokens en fonction de leur probabilité plutôt que d’opter systématiquement pour celui qui occupe la première place.

Température : le régulateur de créativité

La température est le plus connu des trois paramètres, et c’est aussi celui que les gens comprennent le moins souvent.

L’idée principale : la température influence le degré de netteté ou la dispersion de la distribution des probabilités avant échantillonnage d’un token.

  • Baixe température (environ 0,1 à 0,4) : La distribution devient plus nette. Le token déjà le plus probable devient encore plus dominant, ce qui fait que le modèle se comporte de manière plus prévisible, plus conservatrice et plus cohérente.
  • Haute température (environ 0,8 à 1,5 et plus) : La distribution s’adoucit. Les tokens peu probables ont davantage de chances d’être sélectionnés, ce qui rend la sortie plus inventive, plus surprenante, et parfois incohérente.
  • Température = 0 : Complètement déterministe. Le modèle produit toujours le token le plus probable — en somme, une décodage gourmand.
  • Température = 1,0 : Aucun ajustement n’est effectué. Le modèle utilise les probabilités originales, non modifiées.
  • Les mathématiques (ne vous inquiétez pas, c’est simple)

    Au niveau technique, la température divise chaque score brut du modèle (logit) avant que ces scores ne soient transformés en probabilités :

    adjusted_logit = original_logit / temperature
    

    Ces logits rééchelonnés sont ensuite passés à travers une fonction softmax pour produire la distribution de probabilités finale.

    • Division par une valeur faible (température basse) : Éloigne davantage les logits, affinant ainsi la distribution, ce qui permet au modèle de choisir sa meilleure option avec plus de confiance.
    • Division par une valeur élevée (température haute) : Rapproche les logits, aplatisse la distribution et introduit plus de hasard.

    Exemple : Température = 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

    Résultat : « Votre copilote IA pour transformer des idées de minuit en code fonctionnel. »

    Désormais, les résultats possèdent plus de personnalité et de variété. Cette gamme convient à :

    • L’écriture de blogs
    • Le texte marketing
    • Les séances de brainstorming

    Exemple : Température = 2,0

    Résultat : « Des rêves de code. Déployez des galaxies. Réécrivez demain grâce à l’imagination en silicium. »

    Est-ce imaginaire ? Certainement.

    Est-ce pratique ? Pas vraiment.

    Si vous augmentez trop la température, vous risquez d’obtenir des textes peu cohérents.

    Quand utiliser quoi

    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’est-ce que Top-K ?

    Top-K limite le nombre de tokens candidats que le modèle peut prendre en compte.

    Au lieu d’évaluer l’ensemble du vocabulaire, le modèle se concentre sur les K tokens ayant la plus haute probabilité.

    La règle est essentiellement :

    « Éliminez tout ce qui se trouve en dehors des K meilleurs candidats. »

    Avec K = 50, le modèle ne prend en compte que les 50 tokens suivants les plus probables. Tout ce qui est classé à la 51e place ou au-delà est complètement supprimé, quel que soit son niveau de probabilité initial.

    Pourquoi cela existe

    Imaginez une distribution couvrant 50 000 tokens possibles. Même les tokens ayant des probabilités très faibles peuvent parfois être sélectionnés, ce qui produit des résultats étranges ou absurdes. La méthode Top-K agit comme une limite stricte, en disant essentiellement : « Nous n’envisagerons même pas les valeurs atypiques. »

    Exemple

    Prompt :

    « React est »

    Candidats tokens suivants :

    Token    -> Probability
    a        -> 35%
    the      -> 20%
    one      -> 15%
    becoming -> 10%
    fast     -> 8%
    useful   -> 7%
    wild     -> 5%
    

    Top-K = 1

    Seul conservé : [a]

    Résultat : « React est a »

    Très sûr, sans aucune variation créative. Cela est fonctionnellement identique à la décodage gourmand.

    Top-K = 3

    Conservés : [a, the, one]

    Cela introduit une certaine variété régulée.

    Les complétions possibles incluent :

    • React est un…
    • React est le…
    • React est l’un des…

    C’est un compromis raisonnable.

    Top-K = 5

    Conservés : [a, the, one, becoming, fast]

    Moins de contraintes pour varier. Les réponses deviennent nettement plus diversifiées.

    Top-K = 50

    Une portée bien plus large. Des choix de mots inhabituels mais potentiellement intéressants peuvent apparaître, bien que le risque d’outputs étranges augmente également.

    Analogie du monde réel pour Top-K

    Pensez à choisir de la nourriture dans un menu comptant 200 plats.

    En fixant Top-K à 5, vous ne regardez que les cinq plats le plus recommandés.

    La décision devient plus rapide et moins déstabilisante. C’est essentiellement la fonction que Top-K remplit pour un modèle de langage.

    Qu’est-ce que Top-P ? (Échantillonnage nucléaire)

    Top-P adopte une approche plus fine que Top-K.

    Au lieu de tronquer à un nombre fixe de candidats, il tronque en fonction d’une probabilité accumulée. On continue d’ajouter des tokens dans l’ordre, du plus probable au moins probable, jusqu’à ce que leur probabilité combinée atteigne P, puis on n’échantillonne que sur cet ensemble.

    Ainsi, si vous définissez P = 0,9, le modèle tire au hasard parmi le plus petit groupe possible de tokens dont les probabilités ensemble représentent 90 % de la distribution totale.

    Pourquoi « Échantillonnage nucléaire » ?

    Le nom reflète l’idée que les tokens les mieux classés forment un noyau, un « cœur », de continuations réalistes. Tout ce qui se trouve en dehors de ce noyau est considéré comme du bruit : des tokens de queue à faible probabilité que le modèle a techniquement évalués mais qui ne devraient pas être de véritables candidats pour l’échantillonnage.

    Probabilités d’exemple :

    Top-P = 0,50

    Continuer à ajouter des tokens jusqu’à ce que la somme totale atteigne au moins 50 %.

    A = 40 % B = 25%

    Somme = 65%

    Retenus : [A, B]

    Top-P = 0,80

    A = 40 % B = 25% C = 20%

    Somme = 85%

    Retenus : [A, B, C]

    Top-P = 0,95

    A+B+C+D = 95%

    Retenus : [A, B, C, D]

    Il est important de noter que Top-P ajuste dynamiquement son ensemble de candidats.

    C’est précisément pour cette raison qu’il est souvent préféré à Top-K dans les configurations modernes.

    Valeurs typiques

    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 fonctionne avec un nombre fixe de tokens.

    Top-P fonctionne avec un nombre variable de tokens.

    Exemple :

    Lorsque la distribution de probabilités est fortement concentrée, Top-P pourrait ne conserver que 2 tokens.

    Lorsqu’elle est plus dispersée, Top-P pourrait en conserver 15.

    C’est cette adaptabilité qui en fait l’efficacité.

    Top-K indique au modèle « choisissez parmi ces X options ». Top-P lui dit « choisissez parmi autant d’options pertinentes qu’il y en a ».

    Cette distinction est très importante dans la pratique.

    Les utiliser ensemble (c’est là que ça devient concret)

    Voici quelque chose qui est rarement expliqué clairement : la température, Top-K et Top-P sont appliqués séquentiellement, et non de manière isolée.

    Un processus typique d’échantillonnage se présente comme suit :

    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)
    

    Chaque étape réduit davantage l’ensemble des tokens candidats, et l’ordre d’application de ces filtres est important.

    Recettes pratiques pour des projets réels

    Recette 1 : L’assistant de code

    temperature = 0.1
    top_p = 0.95
    top_k = 40
    

    Ici, on cherche à la prévisibilité, une seule réponse correcte et aucune surprise. Une température basse effectue la majeure partie du travail, tandis que Top-P agit comme une barrière de sécurité supplémentaire.

    Recette 2 : Le chatbot

    temperature = 0.7
    top_p = 0.9
    top_k = 50
    

    Cela produit des réponses conversationnelles et naturelles, sans tendance au hasard. Le modèle donne l’impression d’être humain, et non robotique.

    Recette 3 : Le partenaire d’écriture créative

    temperature = 1.1
    top_p = 0.95
    top_k = 0  # disabled
    

    Donnez au modèle la liberté d’explorer. Vous recherchez une véritable variété créative, et non du contenu générique. Top-K est complètement désactivé, permettant à Top-P de gérer seul le tri des résultats.

    Recette 4 : Le système RAG factuel

    temperature = 0.0
    top_p = 1.0
    top_k = 1
    

    C’est une décodage entièrement gourmand. Comme le modèle dispose déjà du contexte pertinent, on cherche la réponse la plus probable, sans aucune aléatoire de tirage au sort, comme c’est le cas dans un processus de facturation.

    Récepte 5 : Rédaction de blogs

    Temperature = 0.8
    Top-K = 40
    Top-P = 0.95
    

    Cela produit un texte qui semble naturel et captivant, adapté aux articles de long format.

    Récepte 6 : Rédaction d’histoires

    Temperature = 1.2
    Top-K = 100
    Top-P = 0.98
    

    Cela favorise des résultats imaginatifs et moins prévisibles, très adaptés à la fiction.

    Récepte 7 : Extraction de données

    Temperature = 0
    Top-K = 1
    Top-P = 1
    

    C’est strict et entièrement déterministe, idéal pour des tâches telles que l’extraction JSON, la classification ou l’ extraction d’entités.

    Les pièges sur lesquels personne ne vous avertit

    1. Une température plus élevée ne signifie pas un résultat plus intelligent

    Il est tentant d’augmenter la température dans l’espoir que le modèle « réfléchisse davantage » ou devienne plus créatif. En réalité, cela ne fait qu’ajouter du bruit. Le modèle commence alors à utiliser des tokens qu’il a jugés peu probables, généralement pour de bonnes raisons. Le résultat sont du contenu halluciné, des incohérences logiques et une grammaire incorrecte. La créativité issue du hasard n’est pas identique à celle qui provient d’un raisonnement solide.

    2. Une température de 0 n’est déterministe que au sein d’une seule session

    Au niveau de température 0, le modèle effectue en fait une recherche argmax, choisissant toujours le token ayant la plus haute probabilité. Cependant, en fonction du matériel, de la taille des lots ou des versions de l’API, de légères différences d’arrondi en virgule flottante peuvent encore produire des résultats légèrement différents. Ne supposez pas une reproductibilité parfaite à moins d’utiliser également une graine aléatoire lorsque l’API le permet.

    3. Top-P et Top-K peuvent s’opposer l’un à l’autre

    Si Top-K est réglé très bas, par exemple K=5, tandis que Top-P est réglé élevé, par exemple P=0.95, Top-K l’emporte effectivement. Le échantillonnage a déjà été restreint à 5 tokens, donc Top-P n’a plus de pool supplémentaire à réduire. Soyez précis quant au paramètre qui effectue réellement le filtrage dans votre configuration.

    4. Les valeurs par défaut diffèrent selon les fournisseurs

    GPT-4 d’OpenAI est livré avec temperature=1.0 et top_p=1.0 par défaut. Les modèles Claude d’Anthropic ne communiquent pas de valeur par défaut unique, elle varie en fonction de la version du modèle. Gemini de Google utilise souvent temperature=1.0, top_p=0.95 et top_k=40 dans certaines configurations.

    Vérifiez toujours ces valeurs vous-même plutôt que de supposer. Déployer la même application sur un modèle différent sans ajuster ces paramètres peut entraîner un comportement nettement différent.

    Paramètres par défaut recommandés

    Un point de départ raisonnable pour des utilisations générales est le suivant :

    Ajustez ces valeurs en fonction de la tâche spécifique à effectuer.

    Le modèle mental à retenir

    Si rien d’autre ne reste en mémoire, souvenez-vous de ceci :

    La température contrôle le niveau de aléatoire. Top-K détermine le nombre d’options disponibles. Top-P définit la limite de probabilité de ces options.

    C’est l’essentiel à comprendre.

    Lorsque vous comprenez comment ces trois éléments interagissent, vous cessez de simplement « utiliser » un modèle d’IA.

    Vous commencez alors à concevoir délibérément ses résultats. C’est ce changement qui distingue les prompts occasionnels des systèmes d’IA de niveau professionnel.

    Et à l’avenir, cette distinction deviendra encore plus importante.

    Considérations finales

    De nombreux développeurs consacrent tous leurs efforts à affiner les prompts, mais ceux-ci ne représentent qu’une moitié de l’équation. Les paramètres d’échantillonnage sont des contrôles moins visibles qui accomplissent tout autant de travail.

    Souvent, ils sont même plus importants que la formulation du prompt lui-même.

    La prochaine fois qu’un LLM produira quelque chose d’étrange, ne blâmez pas immédiatement le modèle.

    Vérifiez plutôt :

    • Température
    • Top-K
    • Top-P

    Parfois, ce n’est pas le modèle qui est confus.

    C’est votre configuration. Une fois que vous l’avez compris, vous obtenez un niveau de contrôle bien plus profond sur le comportement de ces systèmes.

    Bonne programmation !

    Lectures complémentaires

  • Un plan hiérarchique des concepts d’ingénierie IA et du moment où ils sont importants — Découvrez quels concepts d’ingénierie IA déterminent si un système fonctionne ou non, lesquels sont essentiels une fois que vous développez pour la production, et lesquels peuvent attendre.
  • Jev de TypeSafe AI : un modèle sans chat pour des décisions typées — Cet article explique comment le modèle Jev de TypeSafe AI élimine complètement la génération de texte, en renvoyant plutôt des réponses typées calibrées, ainsi que les situations où cet équilibre s’avère vraiment avantageux.
  • 30 techniques pratiques de prompting Claude issues d’un usage quotidien réel — Une analyse éprouvée en situation de 30 techniques de prompting Claude, classées selon leurs effets concrets, allant d’instructions simples à des systèmes de prompting complets.