Pénalités et Répétitions
É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. Les modèles Mistral offrent deux paramètres pour combattre ce phénomène : la presence penalty et la frequency penalty.
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.
Caractéristiques :
- Plage de valeurs : -2.0 à 2.0
- Valeur par défaut : 0 (désactivé)
- Valeur positive : encourage le modèle à utiliser de nouveaux mots
- Valeur négative : encourage le modèle à réutiliser les mêmes mots
# 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
)
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.
La Frequency Penalty
La frequency penalty est une pénalité cumulative qui augmente à chaque fois qu’un token est réutilisé. Plus un token apparaît fréquemment, plus il est pénalisé.
Caractéristiques :
- Plage de valeurs : -2.0 à 2.0
- Valeur par défaut : 0 (désactivé)
- Augmente proportionnellement au nombre d’occurrences du token
- Plus efficace que la presence penalty pour casser les boucles
# 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
)
La frequency penalty est idéale quand le modèle a tendance à répéter les mêmes mots ou structures dans un texte long.
Difference entre les deux pénalités
Pour bien comprendre la différence, prenons un exemple :
Le modèle a déjà généré le mot « innovation » 5 fois dans sa réponse.
- Presence penalty (0.5) : le mot « innovation » reçoit une pénalité de 0.5 (fixe, peu importe les 5 occurrences)
- Frequency penalty (0.5) : le mot « innovation » reçoit une pénalité de 2.5 (0.5 × 5 occurrences)
La frequency penalty est donc beaucoup plus agressive contre les tokens qui reviennent souvent.
Quand utiliser chaque pénalité
Presence penalty : explorer de nouveaux sujets
Utile quand vous voulez que le modèle couvre un large éventail de points :
# Brainstorming : on veut des idées variées, pas des reformulations
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
)
Frequency penalty : fluidifier le texte
Utile pour les textes longs où le modèle a tendance à se répéter :
# Rédaction longue : on veut un texte fluide sans répétitions
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
)
Combinaison des deux
Vous pouvez utiliser les deux simultanément pour un effet combiné :
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
Des pénalités trop élevées peuvent dégrader la qualité :
- Trop de presence penalty (> 1.0) : le modèle évite de réutiliser des mots communs nécessaires (articles, prépositions), produisant un texte étrange
- Trop de frequency penalty (> 1.0) : le modèle force l’utilisation de synonymes inappropriés pour éviter les répétitions
- Valeurs négatives : le modèle est encouragé à se répéter — rarement souhaitable
Recommandation : 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.
Valeurs recommandées par cas d’usage
- Extraction / classification :
presence_penalty=0,frequency_penalty=0(on veut la précision) - Rédaction courte (< 200 mots) :
presence_penalty=0,frequency_penalty=0.2 - Rédaction longue (> 500 mots) :
presence_penalty=0.3,frequency_penalty=0.5 - Brainstorming / créativité :
presence_penalty=0.6,frequency_penalty=0.3 - Listes de points uniques :
presence_penalty=0.8,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