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égler | Anthropic (Messages API) | Google (Gemini) | OpenAI (Responses API) |
|---|---|---|---|
| Aléatoire du tirage | temperature (déprécié) | generationConfig.temperature | non documenté sur la page lue |
| Troncature nucleus | top_p (déprécié) | generationConfig.topP | non documenté sur la page lue |
| Nb de candidats par token | top_k (déprécié) | generationConfig.topK | non documenté sur la page lue |
| Longueur max de sortie | max_tokens (obligatoire) | generationConfig.maxOutputTokens | non documenté sur la page lue |
| Séquences d'arrêt | stop_sequences | generationConfig.stopSequences | non documenté sur la page lue |
| Instruction système | system | instruction système | instructions |
| Effort de raisonnement | output_config.effort | generationConfig.thinking_level | reasoning.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,instructionsetreasoning.effort, mais ne mentionne pastemperature,top_pnimax_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
| Fournisseur | Plage documentée | Défaut et statut |
|---|---|---|
| Anthropic | 0.0 à 1.0 | Défaut 1.0, mais déprécié (voir l'encadré ci-dessous) |
| Google Gemini | 0.0 à 2.0 | 1.0, et Google recommande de ne pas y toucher sur Gemini 3.x |
| Azure OpenAI (doc Microsoft) | 0 à 2 | non 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 data | Réglage |
|---|---|
| Extraction de champs depuis des logs, classification, mapping de colonnes | Température basse (0 à 0.2) |
| Génération de SQL ou de code de pipeline | Température basse (0 à 0.3) |
| Nommage de métriques, idées de dashboards, hypothèses d'analyse | Température plus haute (0.7 à 1.0) |
| Rédaction d'un compte rendu d'analyse | Moyenne (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_pettop_ksont 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 :
topPettopKexistent toujours dansgenerationConfig.
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 traitetopPettopKde 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 :
- 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 unmax_tokensserré, le modèle peut épuiser son budget en réfléchissant. - 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 portestop_reason: "stop_sequence". - Google :
stopSequencesdansgenerationConfig. Le nombre maximal de séquences est indiqué dans la référenceGenerationConfig: 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 : "Theinstructionsparameter 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"), puisuser, puisassistant. - 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 :
| Niveau | Quand l'utiliser | Modèles où c'est le défaut |
|---|---|---|
low | Tâches simples, sous-agents, gros volume, latence critique | — |
medium | Équilibre vitesse / coût / qualité | Claude Opus 5.5 |
high | Raisonnement complexe, code difficile, tâches agentiques | Tous les modèles qui supportent effort sauf Opus 5.5 (donc Fable 5.1, Sonnet 5...) |
xhigh | Travail agentique long (plus de 30 minutes) | — |
max | Capacité 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_pettop_ksont 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'estoutput_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_tokensest 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
systemporte les règles permanentes ; la question du jour reste dans le messageuser. - Changer l'effort en cours de conversation invalide le cache de prompt : fixe-le au départ.
Sources
- Anthropic — Messages API reference (champs de requête)
- Anthropic — Effort
- Anthropic — Glossaire (temperature, non-déterminisme)
- Anthropic — Models overview (sorties max, effort par défaut)
- Google — Gemini API : Generating content (GenerationConfig)
- Google — Gemini 3 developer guide (temperature à 1.0, risque de boucles)
- Google — Gemini API : Thinking (
thinking_level) - OpenAI — Text generation (roles, instructions, reasoning.effort)
- Microsoft Learn — Prompt engineering techniques (temperature et top_p)