Pénalités et Répétitions
Mis à jour le 28 juillet 2026
Éviter les boucles et les répétitions
L’un des comportements les plus frustrants d’un modèle de langage est la répétition : le modèle tourne en boucle sur les mêmes mots, les mêmes structures de phrases ou les mêmes idées. Vous demandez un article de fond et vous obtenez trois paragraphes qui commencent tous par « De plus », avec le mot « innovation » à chaque ligne. Les modèles Mistral offrent deux paramètres pour combattre ce phénomène : la presence penalty et la frequency penalty. Elles se ressemblent, mais leur mécanique diffère suffisamment pour que le choix de l’une ou de l’autre change réellement le texte produit.
La Presence Penalty
La presence penalty est une pénalité unique appliquée à tout token qui est déjà apparu au moins une fois dans la réponse générée. Peu importe si le token a été utilisé 1 fois ou 50 fois : la pénalité est la même. Le paramètre accepte des valeurs de -2.0 à 2.0, avec 0 par défaut (désactivé). Une valeur positive encourage le modèle à utiliser de nouveaux mots ; une valeur négative, plus rare, l’encourage au contraire à réutiliser les mêmes.
# Presence penalty positive : vocabulaire plus varié
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Décrivez les avantages du télétravail."}
],
presence_penalty=0.6
)
En pratique, la presence penalty est idéale quand vous voulez que le modèle explore un vocabulaire plus large et aborde des aspects différents d’un sujet. Sur l’exemple du télétravail ci-dessus, elle pousse le modèle à passer de la flexibilité horaire à l’immobilier d’entreprise puis à l’empreinte carbone, plutôt que de décliner trois fois l’argument du gain de temps.
La Frequency Penalty
La frequency penalty, elle, est une pénalité cumulative : elle augmente à chaque fois qu’un token est réutilisé. Plus un mot apparaît fréquemment, plus il est pénalisé, ce qui la rend nettement plus efficace que la presence penalty pour casser les boucles. Elle partage la même plage de valeurs, de -2.0 à 2.0, avec 0 par défaut.
# Frequency penalty : réduit les répétitions de mots fréquents
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Rédigez un article de 300 mots sur l'intelligence artificielle."}
],
frequency_penalty=0.5
)
Son terrain de prédilection : les textes longs où le modèle a tendance à répéter les mêmes mots ou structures. Un article de 300 mots sur l’intelligence artificielle, sans pénalité, risque de marteler « IA » et « technologie » à chaque phrase ; la frequency penalty force progressivement le modèle à varier.
Différence entre les deux pénalités
Pour bien saisir la nuance, prenons un cas chiffré. Le modèle a déjà généré le mot « innovation » 5 fois dans sa réponse. Avec une presence penalty de 0.5, « innovation » reçoit une pénalité de 0.5 — fixe, les 5 occurrences ne changent rien. Avec une frequency penalty de 0.5, le même mot reçoit une pénalité de 2.5, soit 0.5 multiplié par ses 5 occurrences. La frequency penalty est donc beaucoup plus agressive contre les tokens qui reviennent souvent, tandis que la presence penalty applique une pression douce et uniforme sur tout ce qui a déjà été dit.
Quand utiliser chaque pénalité
Utilisez la presence penalty quand l’enjeu est la diversité thématique. Dans un brainstorming, vous voulez dix idées réellement distinctes, pas dix reformulations de la première :
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Listez 10 tendances marketing digital pour 2026."}
],
presence_penalty=0.8,
temperature=0.7
)
Utilisez la frequency penalty quand l’enjeu est la fluidité du texte. Sur un guide long, elle empêche les tics de langage de s’installer sans dénaturer le propos :
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Rédigez un guide complet sur la gestion de projet agile."}
],
frequency_penalty=0.4,
temperature=0.5
)
Rien n’interdit de combiner les deux pour un effet cumulé — une newsletter créative, par exemple, bénéficie à la fois d’un vocabulaire varié et d’un texte sans redites :
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Écrivez une newsletter créative sur les tendances tech."}
],
presence_penalty=0.3,
frequency_penalty=0.5,
temperature=0.6
)
Attention aux valeurs extrêmes
Ces pénalités ne sont pas des potards à pousser au maximum : des valeurs trop élevées dégradent la qualité au lieu de l’améliorer. Au-delà de 1.0 de presence penalty, le modèle se met à éviter des mots communs pourtant nécessaires — articles, prépositions — et le texte devient étrange. Au-delà de 1.0 de frequency penalty, il force des synonymes inappropriés juste pour ne pas se répéter : « voiture » devient « automobile », puis « véhicule », puis « engin motorisé » dans le même paragraphe. Quant aux valeurs négatives, elles encouragent la répétition, ce qui n’est que rarement souhaitable. La recommandation pratique : restez dans la plage 0.0 à 0.8 pour les deux paramètres ; au-delà, les effets secondaires l’emportent sur les bénéfices.
Pour vous orienter selon la tâche : extraction et classification se font sans aucune pénalité (presence_penalty=0, frequency_penalty=0, la précision prime) ; une rédaction courte de moins de 200 mots se contente d’un frequency_penalty=0.2 ; une rédaction longue au-delà de 500 mots gagne à combiner presence_penalty=0.3 et frequency_penalty=0.5 ; le brainstorming inverse la dominante avec presence_penalty=0.6 et frequency_penalty=0.3 ; et une liste de points uniques monte à presence_penalty=0.8 avec frequency_penalty=0.2.
Points clés à retenir
- La presence penalty encourage l’utilisation de nouveaux mots (pénalité fixe)
- La frequency penalty décourage la répétition de mots fréquents (pénalité cumulative)
- Les deux paramètres vont de -2.0 à 2.0, avec 0 par défaut
- Restez dans la plage 0.0 à 0.8 pour éviter les effets indésirables
- Utilisez la presence penalty pour la diversité thématique, la frequency penalty pour la fluidité textuelle