On limite la verbosité des LLM en mesurant la complexité textuelle et en réitérant des re-prompts contrôlés. Cet article détaille les métriques (ARI), un exemple pratique avec textstat et LangChain, et des seuils / bonnes pratiques pour réduire les hallucinations et augmenter la clarté.
Pourquoi la verbosité des LLM pose problème
La verbosité des LLM augmente la surface d’erreur et réduit la fiabilité des réponses. Plus un modèle produit de texte, plus il a d’occasions d’introduire des informations inventées ou mal alignées avec la vérité.
La longueur et la complexité favorisent les erreurs factuelles pour deux raisons principales. Premièrement, la génération longue multiplie les points où le modèle doit combiner faits, chiffres et relations causales, ce qui accroît la probabilité d’un alignement incorrect entre contexte et génération (voir Survey of Hallucination in Natural Language Generation, Ji et al., 2023). Deuxièmement, l’optimisation des LLM pour la fluidité linguistique plutôt que pour la véracité implique que la cohérence locale n’entraîne pas la véracité globale : une phrase plausible peut être fausse malgré un style convaincant.
La verbosité impacte aussi l’expérience utilisateur. Réponses longues entraînent une perte de temps pour extraire l’information utile, une surcharge cognitive qui réduit la capacité à vérifier les énoncés, et une baisse de confiance dès que l’utilisateur détecte une incohérence. Des études et benchmarks publics montrent des taux d’erreur factuelle variables selon les tâches, souvent de l’ordre de 10–60% selon le domaine et la difficulté (résumés dans Ji et al., 2023).
Exemples concrets illustrent le risque. Des chatbots ont généré des références bibliographiques inventées, documenté par plusieurs articles en 2023 (cas de citations fictives dans des réponses longues). Des assistants techniques ont fourni des commandes ou des fragments de code plausibles mais erronés, provoquant des bugs en production. Des outils de conseil juridique ont cité de mauvais articles de loi ou des jurisprudences inexistantes lors de réponses détaillées.
| Facteur | Effet |
| Longueur de réponse | Multiplication des points d’échec factuel |
- Augmentation des coûts de vérification humaine et du temps de revue.
- Risque opérationnel : décisions prises sur base d’informations incorrectes.
- Perte de confiance utilisateur et détérioration de l’adoption produit.
Pour limiter ces risques, on doit d’abord mesurer la complexité et la verbosité (outils comme textstat pour la lisibilité, et frameworks techniques comme LangChain et les modèles Hugging Face pour expérimenter), puis appliquer des stratégies de contrôle de la verbosité et de vérification.
Comment mesurer la complexité textuelle
Mesurer la complexité textuelle aide à limiter la verbosité des LLM et à réduire les risques d’hallucination en forçant un niveau de lisibilité adapté au public cible.
Automated Readability Index (ARI) : Indice de lisibilité automatique qui estime le niveau scolaire requis pour comprendre un texte. La formule combine le nombre de caractères, de mots et de phrases pour produire un score numérique correspondant approximativement au niveau scolaire américain. Documentation de référence : https://en.wikipedia.org/wiki/Automated_Readability_Index.
textstat : Bibliothèque Python qui calcule l’ARI et d’autres indices de lisibilité. Installation : pip install textstat. Extrait de code minimal :
import textstat
text = '...'
ari = textstat.ari(text)
print(ari)
Le score ARI se traduit en « grade level » (niveau scolaire) : par exemple un ARI de 8 équivaut à la 8ème année scolaire américaine (collège), un ARI de 12 correspond au lycée, et un ARI ≥ 13 indique un niveau universitaire. Arrondir le score à l’entier supérieur donne souvent le « grade » à afficher.
Limites de l’ARI : Métrique conçue pour l’anglais, donc moins fiable pour d’autres langues. Métrique sensible aux extraits très courts et aux textes techniques contenant des abréviations ou des noms propres. Métrique purement quantitative qui ignore la cohérence, la précision sémantique et les hallucinations factuelles.
Métriques complémentaires recommandées :
- Flesch Reading Ease : Indice où un score élevé signifie un texte plus facile à lire (textstat.flesch_reading_ease).
- SMOG ou Gunning Fog : Mesurent la densité des mots polysyllabiques pour estimer la difficulté.
- Longueur moyenne de phrase et densité lexicale : Mesures simples pour contrôler complexité syntaxique et vocabulaire.
- Type-Token Ratio (TTR) : Indicateur de diversité lexicale utile pour éviter la sur-généralisation.
Références : PyPI textstat https://pypi.org/project/textstat/ et ARI Wikipedia https://en.wikipedia.org/wiki/Automated_Readability_Index.
| ARI ≤ 8 | Accessible au grand public, communication grand public, FAQ |
| ARI 9–12 | Public éduqué général, documentation produit, articles techniques non spécialisés |
| ARI 13–16 | Contenus universitaires, rapports techniques détaillés |
| ARI > 16 | Spécialistes, publications académiques, textes très techniques |
Comment intégrer un budget de complexité dans LangChain
Limiter la verbosité d’un LLM en production demande d’ajouter un budget de complexité qui évalue la lisibilité de la sortie et réitère le prompt jusqu’à conformité.
- Architecture — Composants. Composant LLM (Hugging Face local, ex. distilgpt2). Wrapper LangChain (HuggingFacePipeline) pour normaliser les appels. Étape d’analyse textstat pour calculer l’ARI (Automated Readability Index) — l’ARI estime la complexité en fonction de longueur de mots et de phrases. Boucle de re-prompt qui modifie l’instruction (demander concision/clarité) et relance le LLM. Règles d’arrêt : max_itérations et seuil minimal d’ARI.
- Flux. Générer → Mesurer ARI → Si ARI > budget alors réécrire l’instruction en demandant condensation et relancer → Répéter jusqu’à succès ou max_itérations.
Exemple de code prêt à exécuter en local/Colab.
# Installer (exécuter en terminal ou Colab)
!pip install -q textstat transformers langchain accelerate
# Importer et configurer
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
from langchain.llms import HuggingFacePipeline
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
import textstat
# Charger modèle local (distilgpt2)
tokenizer = AutoTokenizer.from_pretrained("distilgpt2")
model = AutoModelForCausalLM.from_pretrained("distilgpt2")
pipeline_hf = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
do_sample=True,
temperature=0.7, # Voir explications plus bas
top_p=0.9,
max_new_tokens=150
)
llm = HuggingFacePipeline(pipeline=pipeline_hf)
# Template initial
template = PromptTemplate(
input_variables=["text","instruction"],
template="{instruction}\n\nTexte source : {text}"
)
chain = LLMChain(llm=llm, prompt=template)
def safe_summarize(text_input, complexity_budget=10.0, max_iter=3):
instruction = "Résume de façon claire et concise."
for it in range(1, max_iter+1):
resp = chain.run({"text": text_input, "instruction": instruction})
ari = textstat.automated_readability_index(resp)
length_words = len(resp.split())
print(f"Itération {it} | Mots={length_words} | ARI={ari:.2f}")
if ari <= complexity_budget:
return resp
instruction = ("Condensez davantage, simplifiez le vocabulaire, "
"évitez les détails non essentiels. Répondez de façon plus courte.")
return resp
Paramètres LLM recommandés et effets.
| Paramètre | Effet |
| Temperature | Contrôle la créativité; valeurs basses (0.0–0.5) réduisent la verbosité et les hallucinations. |
| Top_p | Filtre noyau probabiliste; réduit la variance si proche de 0.9, limite sorties aberrantes. |
| Max_new_tokens | Limite directe de longueur; utile pour contraindre la verbosité maximale. |
Références : LangChain docs https://langchain.readthedocs.io et Hugging Face Pipelines https://huggingface.co/docs/transformers/main/en/main_classes/pipelines.
Quelles bonnes pratiques et seuils recommander
Voici des règles opérationnelles claires pour limiter la verbosité des grands modèles de langage (LLM) et réduire les hallucinations : viser un score ARI (Automated Readability Index) de 8–12 selon l'audience, limiter à 2–3 re-prompts maximum, fixer une température basse (≤0.2) pour tâches factuelles, utiliser RAG (Retrieval-Augmented Generation, Lewis et al., 2020) et systématiser une vérification des faits en post-traitement (voir aussi la documentation LangChain pour l'orchestration des pipelines de RAG).
Choix du seuil ARI selon l'audience : Grand public nécessite en général ARI 8–10 pour lisibilité élevée (phrases courtes, vocabulaire simple).
Pour des utilisateurs experts, ARI 10–12 permet plus de précision technique sans sacrifier la lisibilité. ARI signifie Automated Readability Index et estime la difficulté de lecture à partir de caractères par mot et mots par phrase.
Stratégie de re-prompt : Préférer prompts courts, directives précises et format contraint. Exemple de formulations (à réutiliser telles quelles) :
"Résume en une phrase : [texte]"
"Liste 3 points clés, numérote et limite chaque point à 20 mots"
"Donne uniquement des faits sourcés : fournis la phrase + source (url ou référence) pour chaque fait"
Monitoring et métriques à suivre : Mesurer le taux d'itération dépassé (réponses nécessitant >3 prompts), taux d'hallucination via audits humains ou benchmarks publics comme TruthfulQA (Lin et al., 2022), latence moyenne et consommation de tokens par session.
Processus d'A/B testing pour valider seuils et coûts : Comparer configurations (ARI, température, RAG on/off) sur panels représentatifs, mesurer précision factuelle (audit), coût par 1k tokens, latence 95e centile. Inclure tests en production sur 5–10k requêtes pour robustesse statistique.
Alerting et KPI opérationnels : Définir alertes si >5% des réponses demandent >3 itérations, si taux d'hallucination détecté >2% sur échantillons aléatoires, ou si coût par requête dépasse le budget.
| Cas d'usage | ARI cible | Max re-prompts | Température | RAG |
| Support client | 8–10 | 2 | 0.0–0.2 | Oui |
| Résumé exécutif | 9–11 | 2–3 | 0.1–0.2 | Optionnel |
| Extraction de faits | 10–12 | 1–2 | 0.0–0.1 | Obligatoire |
Prêt à déployer un budget de complexité pour fiabiliser vos LLM ?
Je résume : mesurer la complexité (ex. ARI via textstat) permet d'instaurer un budget qui déclenche des re-prompts ciblés pour raccourcir et simplifier les réponses. Intégrer ce contrôle dans un pipeline LangChain/Hugging Face réduit la surface d'erreur et facilite la détection d'hallucinations. En pratique, fixez un seuil, limitez les itérations, combinez RAG et vérification, et monitorisez les KPI. Vous obtenez des réponses plus concises, plus vérifiables et plus utiles pour vos utilisateurs.
FAQ
-
Qu'est‑ce que la verbosité d'un LLM et pourquoi la mesurer ?
La verbosité correspond à la longueur et à la complexité inutile d'une réponse. La mesurer permet de détecter des sorties trop denses qui augmentent le risque d'erreurs factuelles et nuisent à l'expérience utilisateur. -
Quel indicateur utiliser pour mesurer la complexité ?
L'Automated Readability Index (ARI) est simple et implémenté par la librairie textstat (pip install textstat). Il donne un score corrélé à un niveau scolaire et sert de base pour un "budget de complexité". -
Un seuil ARI est‑il universel ?
Non. On recommande typiquement ARI 8–12 selon l'audience : plus bas pour grand public, plus haut pour experts. Il faut valider le seuil par A/B testing et monitoring. -
Comment intégrer ce contrôle dans un pipeline existant ?
Placer un scanner textstat après la génération, comparer ARI au budget, puis relancer le modèle avec un prompt demandant concision si nécessaire. LangChain + Hugging Face Pipeline sont adaptés pour orchestrer cette boucle. -
Est‑ce que réduire la verbosité supprime toutes les hallucinations ?
Non, mais cela réduit la surface d'erreur. Combinez le budget de complexité avec RAG, température basse pour les tâches factuelles et une vérification post‑génération pour limiter les hallucinations.
A propos de l'auteur
Franck Scandolera — expert & formateur en tracking server-side, Analytics Engineering, automatisation No/Low Code (n8n) et intégration de l'IA en entreprise. Responsable de l'agence webAnalyste et de l'organisme Formations Analytics. J'accompagne des clients comme Logis Hôtel, Yelloh Village, BazarChic, Fédération Française de Football, Texdecor. Dispo pour aider les entreprises => contactez moi.
⭐ Analytics engineer, Data Analyst et Automatisation IA indépendant ⭐
- Ref clients : Logis Hôtel, Yelloh Village, BazarChic, Fédération Football Français, Texdecor…
Mon terrain de jeu :
- Data Analyst & Analytics engineering : tracking avancé (GTM server, e-commerce, CAPI, RGPD), entrepôt de données (BigQuery, Snowflake, PostgreSQL, ClickHouse), modèles (Airflow, dbt, Dataform), dashboards décisionnels (Looker, Power BI, Metabase, SQL, Python).
- Automatisation IA des taches Data, Marketing, RH, compta etc : conception de workflows intelligents robustes (n8n, App Script, scraping) connectés aux API de vos outils et LLM (OpenAI, Mistral, Claude…).
- Engineering IA pour créer des applications et agent IA sur mesure : intégration de LLM (OpenAI, Mistral…), RAG, assistants métier, génération de documents complexes, APIs, backends Node.js/Python.






