IAMaîtriser l'IA générative Plan du corpus
Accueil/Fondamentaux des LLM/Les paramètres du modèle

Les paramètres du modèle

Les boutons que tu peux tourner : temperature, top_p, max_tokens, stop sequences, system prompt, effort de raisonnement.

Temps de lecture : 15 min | Niveau : Intermédiaire

Ce que tu sauras faire après

  • Choisir le bon réglage selon que tu extrais des données ou que tu brainstormes.
  • Écrire un appel API Python complet avec les bons champs.
  • Savoir quel paramètre est déprécié chez qui, et par quoi il est remplacé.
  • Éviter les deux pièges classiques : régler temperature et top_p ensemble, et envoyer une température à un modèle qui n'en accepte plus.
  • Réutiliser un gabarit d'appel pour tes scripts data.

1. Vue d'ensemble : qui a quoi

Les trois grands fournisseurs n'ont pas les mêmes noms de champs. Tableau de correspondance, établi en lisant les références officielles :

Ce que tu veux réglerAnthropic (Messages API)Google (Gemini)OpenAI (Responses API)
Aléatoire du tiragetemperature (déprécié)generationConfig.temperaturenon documenté sur la page lue
Troncature nucleustop_p (déprécié)generationConfig.topPnon documenté sur la page lue
Nb de candidats par tokentop_k (déprécié)generationConfig.topKnon documenté sur la page lue
Longueur max de sortiemax_tokens (obligatoire)generationConfig.maxOutputTokensnon documenté sur la page lue
Séquences d'arrêtstop_sequencesgenerationConfig.stopSequencesnon documenté sur la page lue
Instruction systèmesysteminstruction systèmeinstructions
Effort de raisonnementoutput_config.effortgenerationConfig.thinking_levelreasoning.effort

Deux choses à lire dans ce tableau :

  • Chez Anthropic, les trois paramètres d'échantillonnage sont dépréciés. Le levier moderne est output_config.effort (section 7).
  • La page OpenAI Text generation que j'ai lue documente model, input, instructions et reasoning.effort, mais ne mentionne pas temperature, top_p ni max_output_tokens. Je ne les invente pas ici : si tu en as besoin, va les chercher dans la référence API OpenAI.

2. temperature

À quoi ça sert

Anthropic :

Temperature is a parameter that controls the randomness of a model's predictions during text generation. Higher temperatures lead to more creative and diverse outputs [...] Lower temperatures result in more conservative and deterministic outputs.

Valeurs et défauts

FournisseurPlage documentéeDéfaut et statut
Anthropic0.0 à 1.0Défaut 1.0, mais déprécié (voir l'encadré ci-dessous)
Google Gemini0.0 à 2.01.0, et Google recommande de ne pas y toucher sur Gemini 3.x
Azure OpenAI (doc Microsoft)0 à 2non précisé sur la page

Le point à retenir côté Anthropic, mot pour mot dans la référence de la Messages API :

Deprecated. Models released after Claude Opus 4.6 do not support setting temperature. A value of 1.0 will be accepted for backwards compatibility, all other values will be rejected with a 400 error.

Traduction concrète : sur Claude Opus 5.5, Fable 5.1 ou Sonnet 5, envoyer temperature=0 ne rend pas la sortie plus stable, ça fait échouer ta requête avec une erreur 400. Le levier de réglage est désormais output_config.effort (section 7). Si tu écris du nouveau code Claude, ne pars pas de temperature.

Quand y toucher (là où c'est encore actif)

Le tableau ci-dessous vaut pour les plateformes où la température est encore un vrai levier : Azure OpenAI, et les modèles Claude antérieurs à Claude Opus 4.6.

Conseil Microsoft, cité mot pour mot : "A higher value, for example 0.7 makes the output more random and produce more divergent responses, while a lower value, like 0.2, makes the output more focused and concrete." Attention, cette page précise en tête que ses techniques "aren't recommended for reasoning models like gpt-5 and o-series models".

Tâche dataRéglage
Extraction de champs depuis des logs, classification, mapping de colonnesTempérature basse (0 à 0.2)
Génération de SQL ou de code de pipelineTempérature basse (0 à 0.3)
Nommage de métriques, idées de dashboards, hypothèses d'analyseTempérature plus haute (0.7 à 1.0)
Rédaction d'un compte rendu d'analyseMoyenne (0.4 à 0.7)

Le piège numéro un

Ne règle jamais temperature et top_p ensemble. Choisis-en un. Microsoft, explicitement : "The general recommendation is to alter one of these two parameters at a time, not both."


3. top_p (et top_k)

top_p, ou nucleus sampling : les tokens sont retenus du plus probable au moins probable, jusqu'à ce que la somme de leurs probabilités atteigne le seuil fixé. topP = 0.8 veut donc dire : on garde les tokens les plus probables dont les probabilités cumulées font 80 %, et on tire dans ce paquet. top_k limite le nombre de candidats : topK = 10 garde les 10 tokens les plus probables.

État des lieux :

  • Anthropic : top_p et top_k sont marqués dépréciés. Même règle que pour la température : les modèles sortis après Claude Opus 4.6 ne les acceptent plus.
  • Google : topP et topK existent toujours dans generationConfig.

Sur Gemini 3.x, Google demande de garder la valeur par défaut. Mot pour mot dans le guide développeur Gemini 3 : "For all Gemini 3 models, we strongly recommend keeping the temperature parameter at its default value of 1.0." Et la raison : "Changing the temperature (setting it below 1.0) may lead to unexpected behavior, such as looping or degraded performance, particularly in complex mathematical or reasoning tasks." La consigne vérifiée porte sur la température ; le guide la présente comme valable pour les paramètres d'échantillonnage en général, donc traite topP et topK de la même façon tant que tu n'as pas mesuré le contraire.

Conclusion des deux côtés : sur les modèles récents, Anthropic comme Google, tu ne règles plus l'aléatoire à la main. Tu règles l'effort de raisonnement et tu contrains le format de sortie.


4. max_tokens

C'est le plafond dur de ce que le modèle peut générer sur une réponse.

Chez Anthropic, max_tokens est obligatoire dans chaque requête, avec un minimum de 0 (la valeur 0 sert uniquement à préchauffer le cache de prompt sans générer de réponse). Deux points importants :

  1. Le raisonnement compte dedans. La doc sur l'effort le dit : max_tokens "is a hard limit on total output (thinking plus response text)". Si tu mets un effort élevé et un max_tokens serré, le modèle peut épuiser son budget en réfléchissant.
  2. Sortie max par modèle (page de comparaison des modèles) : 128k tokens pour Fable 5.1, Opus 5.5 et Sonnet 5 ; 64k pour Haiku 4.5.

Côté Google, l'équivalent est maxOutputTokens.

Conseil pratique : ne mets pas une valeur trop basse "pour économiser". Une réponse coupée au milieu d'un bloc SQL te fait relancer l'appel, donc payer deux fois.


5. stop sequences

Des chaînes de caractères qui arrêtent la génération dès qu'elles apparaissent.

  • Anthropic : champ stop_sequences (tableau de chaînes). Quand l'une d'elles déclenche l'arrêt, la réponse porte stop_reason: "stop_sequence".
  • Google : stopSequences dans generationConfig. Le nombre maximal de séquences est indiqué dans la référence GenerationConfig : vérifie-le là-bas plutôt que de te fier à une valeur de mémoire.

Usage typique en data : tu demandes uniquement du SQL et tu mets "\n\n--" ou "\n\nExplication" en stop sequence pour couper court aux commentaires.

Astuce documentée par Microsoft : utiliser un séparateur clair comme --- entre les sections permet de s'en servir ensuite "as a stopping condition for generation".


6. system prompt (instruction système)

Le system est l'instruction permanente qui cadre le comportement du modèle, séparée du message utilisateur.

  • Anthropic : champ system, de type chaîne ou tableau de blocs de texte.
  • OpenAI (Responses API) : champ instructions. La doc le décrit ainsi : "The instructions parameter gives the model high-level instructions on how it should behave while generating a response, including tone, goals, and examples of correct responses." Elle définit aussi une hiérarchie de rôles : developer ("instructions provided by the application developer, prioritized ahead of user messages"), puis user, puis assistant.
  • Microsoft rappelle que dans l'API Chat Completion, "instructions take the form of the system message".

Ce qu'on met dedans : le rôle et le domaine, les règles permanentes (dialecte SQL, style de code, langue de réponse), le format de sortie par défaut, les interdits du type "ne fabrique jamais de nom de colonne".

Ce qu'on n'y met pas : la question du jour (elle va dans le message user), et les données volumineuses qui changent à chaque appel, car elles cassent le cache de prompt.


7. effort / raisonnement

C'est le paramètre moderne, celui qui remplace en grande partie la température sur les modèles récents.

Chez Anthropic

Champ : output_config.effort. Valeurs documentées : low, medium, high, xhigh, max.

Ce qu'il fait, mot pour mot :

The effort parameter affects all tokens in the response, including text responses and explanations, tool calls and function arguments, and thinking.

Niveaux et défauts, résumés de la doc :

NiveauQuand l'utiliserModèles où c'est le défaut
lowTâches simples, sous-agents, gros volume, latence critique—
mediumÉquilibre vitesse / coût / qualitéClaude Opus 5.5
highRaisonnement complexe, code difficile, tâches agentiquesTous les modèles qui supportent effort sauf Opus 5.5 (donc Fable 5.1, Sonnet 5...)
xhighTravail agentique long (plus de 30 minutes)—
maxCapacité maximale, sans contrainte de coût—

Claude Haiku 4.5 ne supporte pas effort. Précision utile : "Setting effort to the model's default produces exactly the same behavior as omitting the effort parameter entirely." Et un avertissement : "Effort is a behavioral signal, not a strict token budget." Ce n'est pas un plafond.

Attention au cache : "Changing the top-level effort value between requests invalidates prompt caching." Fixe un niveau au début d'une session et garde-le.

Chez Google

thinking_level dans generationConfig. C'est un niveau, pas un nombre de tokens : les valeurs documentées sont minimal, low, medium et high selon le modèle. (Le budget en tokens thinking_budget appartient à la génération précédente.)

Chez OpenAI

reasoning: {"effort": "low"} d'après l'exemple de la doc Text generation.


8. Exemples d'appel API

Anthropic : extraction déterministe (cas data classique)

import anthropic

client = anthropic.Anthropic()

reponse = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=4096,
    system=(
        "Tu es data engineer PostgreSQL 16. "
        "Tu reponds uniquement par du SQL valide, sans commentaire ni explication. "
        "Tu n'inventes jamais un nom de colonne."
    ),
    stop_sequences=["\n\n--", "\n\nExplication"],
    output_config={"effort": "low"},
    messages=[
        {
            "role": "user",
            "content": (
                "TABLE public.commandes(id bigint, date_commande timestamptz, "
                "montant_ht numeric, statut text)\n\n"
                "TACHE : chiffre d'affaires HT par mois sur 12 mois glissants, statut = 'validee'."
            ),
        }
    ],
)

for bloc in reponse.content:
    if bloc.type == "text":
        print(bloc.text)

Pour un usage brainstorming, garde la même structure et change deux choses : output_config={"effort": "high"}, et un prompt qui demande explicitement N variantes (par exemple "donne 8 hypothèses différentes expliquant une chute de 15 % du panier moyen").

Google Gemini : corps de requête REST

Sur Gemini 3.x, on laisse temperature, topP et topK de côté (recommandation de Google, section 3) et on règle le raisonnement et le format :

{
  "generationConfig": {
    "thinking_level": "low",
    "maxOutputTokens": 800,
    "stopSequences": ["Explication"]
  }
}

OpenAI : forme Responses API

from openai import OpenAI

client = OpenAI()

reponse = client.responses.create(
    model="gpt-6-astra",
    instructions="Tu es data engineer. Tu reponds uniquement en SQL PostgreSQL.",
    input="CA HT par mois sur 12 mois glissants, table public.commandes.",
    reasoning={"effort": "low"},
)

print(reponse)

Le nom de modèle vient de l'exemple de la documentation officielle : remplace-le par celui de ton compte.


9. Templates prêts à copier-coller

Template A : gabarit d'appel déterministe pour la data

import anthropic

client = anthropic.Anthropic()

SYSTEM = """Tu es [ROLE, ex: data engineer PostgreSQL 16].
Regles permanentes :
- [REGLE_1, ex: SQL PostgreSQL uniquement]
- [REGLE_2, ex: jamais de SELECT *]
- [REGLE_3, ex: pas d'explication, uniquement du code]
- Si une information te manque, demande-la au lieu de l'inventer."""

reponse = client.messages.create(
    model="[MODEL_ID, ex: claude-opus-5-5]",
    max_tokens=[MAX_TOKENS, ex: 4096],
    system=SYSTEM,
    stop_sequences=["[SEQUENCE_D_ARRET]"],
    output_config={"effort": "[low|medium|high|xhigh|max]"},
    messages=[{"role": "user", "content": "[TA_DEMANDE]"}],
)

Template B : choisir son réglage en trois questions

1. Ai-je besoin d'UNE bonne reponse ou de PLUSIEURS pistes ?
   UNE -> effort low/medium, sortie contrainte
   PLUSIEURS -> effort high, demande explicitement N variantes

2. La sortie sera-t-elle relue par un humain ou consommee par un script ?
   HUMAIN -> format libre autorise
   SCRIPT -> format strict + stop_sequences + "aucun texte hors du bloc"

3. Est-ce que je vais renvoyer le meme contexte a chaque appel ?
   OUI -> mets-le dans system, active le cache, garde le meme effort
   NON -> mets-le dans le message user

À retenir

  • temperature, top_p et top_k sont dépréciés chez Anthropic : les modèles sortis après Claude Opus 4.6 refusent toute valeur de température autre que 1.0 (erreur 400). Le levier, c'est output_config.effort.
  • Google fait le même choix : sur Gemini 3.x, laisse la température à 1.0.
  • Là où temperature et top_p existent encore, n'en règle qu'un seul à la fois (recommandation Microsoft).
  • max_tokens est obligatoire chez Anthropic et inclut les tokens de raisonnement : ne le serre pas trop.
  • Les séquences d'arrêt sont le moyen le plus simple d'empêcher le modèle d'ajouter des explications non demandées.
  • Le system porte les règles permanentes ; la question du jour reste dans le message user.
  • Changer l'effort en cours de conversation invalide le cache de prompt : fixe-le au départ.

Sources

Corpus personnel de formation · genere le 26/09/2026 · source : 03-parametres-du-modele.md