Paramètres du modèle
Sur cette page
Au-delà des trois paramètres obligatoires, quelques réglages façonnent la réponse : sa longueur maximale, l’endroit où elle s’arrête, le rôle que Claude adopte, la profondeur de sa réflexion. Cette leçon les passe en revue, explique les jetons qui servent d’unité à tout cela, et dit ce qu’est devenu le paramètre temperature, au centre du carnet de 2024 et refusé par l’API depuis la version 2026-10-21.
Les jetons
Un modèle ne lit ni n’écrit des mots entiers mais des jetons, des fragments de texte : votre prompt est découpé en jetons, et la réponse est produite jeton par jeton. Tout se compte en jetons : la taille du contexte, la longueur de la réponse, la facture. Le carnet donnait environ 3,5 caractères anglais par jeton pour Claude 3. Le tokéniseur actuel, introduit avec Claude Opus 4.7, compte environ 30 % de jetons de plus pour un même texte ; la documentation donne un ordre de grandeur : un million de jetons, c’est environ 555 000 mots ou 2,5 millions de caractères. Pour un compte exact avant envoi, l’API fournit un point de terminaison dédié :
count = client.messages.count_tokens(
model="claude-opus-5-5",
messages=[{"role": "user", "content": "Écris-moi un poème"}],
)
print(count.input_tokens)
max_tokens
max_tokens fixe le nombre maximal de jetons que Claude peut produire. Le modèle n’en « sait » rien : il ne raccourcit pas sa réponse pour tenir dans la limite, il est simplement interrompu quand il l’atteint. Le carnet le montrait avec max_tokens=10 et la demande d’un poème : la réponse s’arrêtait après « Here is a poem for you: The », et stop_reason valait "max_tokens".
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=10,
messages=[{"role": "user", "content": "Écris-moi un poème"}],
)
print(response.stop_reason) # "max_tokens"
print(repr("".join(b.text for b in response.content if b.type == "text")))
Sur les modèles actuels, l’expérience réserve une surprise : la réflexion compte dans max_tokens, si bien qu’avec un plafond aussi bas la réponse peut ne contenir aucun texte, seulement un début de réflexion. Retenez la règle : fixez max_tokens assez haut pour la réflexion et la réponse, et vérifiez toujours stop_reason avant d’exploiter une réponse. À l’inverse, un plafond élevé ne force pas Claude à écrire long : avec max_tokens=1000, la blague du carnet tenait en 55 jetons.
Le plafond compte pour trois raisons : le coût (on paie les jetons produits), la durée (plus Claude écrit, plus la réponse est longue à venir, le carnet le mesurait à 1,5 s pour 100 jetons et 29 s pour 3 433 sur Claude 3 Haiku) et la complétude (un plafond trop bas tronque la réponse). Pour de longues réponses, passez au streaming (leçon 5) : le SDK vérifie qu’une requête non diffusée ne risque pas de dépasser dix minutes et la refuse sinon, et la documentation conseille le streaming, ou l’API de lots, pour les requêtes longues.
stop_sequences
stop_sequences donne une liste de chaînes qui interrompent la génération dès que Claude en produit une. Le carnet demandait un objet JSON décrivant une personne, puis fixait stop_sequences=["}"] pour couper l’explication qui suivait :
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=2048,
messages=[{"role": "user", "content": "Génère un objet JSON décrivant une personne avec un nom, un e-mail et un téléphone."}],
stop_sequences=["}"],
)
print(response.stop_reason) # "stop_sequence"
print(response.stop_sequence) # "}"
Deux remarques. La séquence d’arrêt n’apparaît pas dans la sortie : pour parser ce JSON, il faut rajouter l’accolade fermante. Et pour obtenir du JSON valide, les sorties structurées (un schéma imposé à la réponse) sont aujourd’hui la bonne méthode ; les séquences d’arrêt servent plutôt à couper une énumération ou une balise, comme dans l’exercice de cette leçon. Avec plusieurs séquences, la première rencontrée arrête la génération et stop_sequence dit laquelle.
Le prompt système
Le paramètre system donne à Claude son cadre pour toute la conversation : un rôle, un ton, un contexte, des règles constantes. Il s’applique à tous les tours sans être répété dans chaque message.
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=2048,
system="Tu es un professeur de langue bienveillant qui répond toujours en espagnol.",
messages=[{"role": "user", "content": "Salut, comment ça va ?"}],
)
Le carnet conseillait de réserver le système au rôle, au ton et au contexte, et de placer les consignes détaillées, les documents et les exemples dans le premier message user ; c’est une bonne règle de départ, que notre cours Prompt Engineering interactif développe.
L’effort, le réglage d’aujourd’hui
Les modèles actuels réfléchissent avant de répondre. Le paramètre effort, placé dans output_config, règle combien de jetons ils y consacrent, et donc l’équilibre entre profondeur, latence et coût. Ses niveaux : low, medium, high, xhigh, max ; sans valeur, le niveau par défaut du modèle s’applique (medium sur Opus 5.5 et Haiku 5.5, high sur Sonnet 5.5 et Fable 5.1).
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=8000,
output_config={"effort": "low"}, # réponse plus rapide et moins chère
messages=[{"role": "user", "content": "Donne trois idées de titres pour un article sur le compost."}],
)
La documentation le présente comme un levier souvent meilleur que le changement de modèle : un effort bas pour les tâches simples et nombreuses, un effort haut pour l’analyse et le code difficiles.
temperature : un réglage qui n’existe plus
Le carnet consacrait une longue partie à temperature, un nombre entre 0 et 1 qui rendait les réponses plus prévisibles (près de 0) ou plus variées (près de 1). Il demandait trois fois un nom de planète extraterrestre : « Xendor » trois fois à 0, trois noms différents à 1. Ce réglage a disparu. Les modèles depuis Claude Opus 4.7 n’acceptaient déjà que les valeurs par défaut ; depuis la version d’API 2026-10-21, celle qu’envoie le SDK Python à partir de sa version 2.0.0, toute requête Messages qui contient temperature, top_p ou top_k renvoie une erreur 400, sur tous les modèles, même à la valeur par défaut. Si vous reprenez du code qui les envoie, supprimez-les. Pour des réponses cohérentes, on s’appuie aujourd’hui sur la consigne, les exemples et les sorties structurées ; pour de la variété, on la demande dans le prompt.
À vous de jouer
Générer des questions. Écrivez une fonction generate_questions(topic, num_questions) qui affiche une liste numérotée de questions stimulantes sur un sujet. Utilisez system pour faire de Claude un expert du sujet, max_tokens sous 1 000 jetons de texte (avec la marge de la réflexion), et stop_sequences pour arrêter la génération dès qu’elle commencerait la question de trop : pour trois questions, la séquence "4.".
Voir une solution
def generate_questions(topic, num_questions=3):
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=4000,
system=f"Tu es un expert de « {topic} ». Tu poses des questions qui font réfléchir.",
messages=[{"role": "user",
"content": f"Génère {num_questions} questions sur « {topic} », sous forme de liste numérotée."}],
stop_sequences=[f"{num_questions + 1}."],
)
print("".join(b.text for b in response.content if b.type == "text"))
generate_questions("le libre arbitre", 3)
Mesurer l’effort. Posez la même question d’analyse à Opus 5.5 avec les efforts low, medium et high. Relevez usage.output_tokens et le temps de chaque réponse, et jugez si la différence de qualité vaut la différence de coût.
Sources officielles : 04_parameters.ipynb (anthropics/courses, archivé) · Create a Message, Effort, Errors : long requests et Migrating to API version 2026-10-21 (documentation Claude) · Models overview (tokéniseur et efforts par défaut)
Points clés à retenir
- Tout se compte en jetons ; le tokéniseur actuel en compte environ 30 % de plus que le précédent, et
count_tokensdonne le compte exact. max_tokensest un plafond, pas une cible ; la réflexion y compte ; on vérifiestop_reasonavant d’exploiter une réponse.stop_sequencesinterrompt la génération sur une chaîne, qui n’apparaît pas dans la sortie ; pour du JSON, les sorties structurées sont préférables.systemfixe le rôle, le ton et le contexte de toute la conversation.output_config.effortrègle la profondeur de réflexion ;temperature,top_pettop_ksont refusés par la version d’API 2026-10-21.