đ Nolife Langage - Ne parlez pas de coĂ»t, mais d'investissement.
le 6 septembre 2026
đ Nolife Langage - Ne parlez pas de coĂ»t. Parlez d'investissement.
Le chiffre ne change pas. Câest le contexte qui change.
CoĂ»t donne lâimpression dâune perte. Investissement donne lâimpression dâune action que vous alliez de toute façon entreprendre, avec un retour sur investissement Ă la clĂ©. Basique donne lâimpression dâune option de second ordre. Indispensable donne lâimpression de ce dont vous avez besoin. Standard est gĂ©nĂ©rique. PersonnalisĂ© a Ă©tĂ© conçu spĂ©cialement pour vous.
Jâai entendu cet argumentaire dans une vidĂ©o de vente :
Ne dites pas « 1 000 $ », dites « 999 $ », ça semble moins cher. Ne dites pas « achetez maintenant », dites « il nâen reste plus que trois ». Ne dites jamais le mot « basique », dites « essentiel ». Ne dites jamais « standard », dites toujours « sur mesure ». Le mot « peu », ne le dites pas, dites toujours « en quantitĂ© limitĂ©e ». Et nâutilisez jamais le mot « coĂ»t », dites toujours « investissement ».
Les mots ont leur importance quand on essaie dâinciter les gens Ă acheter. Je voulais savoir ce qui se passe lorsque le lecteur nâest pas seulement un ĂȘtre humain, mais aussi un tokeniseur.
La premiĂšre surprise est venue de lâallemand. Sur ce corpus, avec lâencodage o200k_base, le mot maĂgeschneidert, plus percutant sur le plan commercial, a pris cinq tokens. Standard nâen a pris quâun. Soit +400 %. Unverzichtbar pour Basis est passĂ© de 1 Ă 4. Le discours commercial sâest amplifiĂ©. Le compteur de tokens a Ă©voluĂ© dans le sens inverse.
signification
|
|
coût en tokens ----+---- persuasion
Il sâagit lĂ de trois axes diffĂ©rents. Une expression peut gagner sur lâun et perdre sur un autre. Cet article est la petite expĂ©rience de Darkwood qui a tentĂ© de les garder sĂ©parĂ©s.
Les mots ont déjà un prix
Les six substitutions en anglais ne constituent pas un jeu de cartes. Elles forment un laboratoire : suffisamment petit pour ĂȘtre tokenisĂ©, suffisamment intĂ©ressant sur le plan sĂ©mantique pour faire lâobjet dâun dĂ©bat.
| Original | Remplacement | cadre (prétendu) |
|---|---|---|
| 1 000 $ | 999 $ | semble moins cher |
| acheter maintenant | il nâen reste que trois | raretĂ© |
| de base | essentiel | nécessaire, sans perte de valeur |
| standard | personnalisĂ© | conçu pour lâacheteur |
| peu | limité | rareté |
| coût | investissement | rendement attendu, pas une perte |
Je nâai pas effectuĂ© de test A/B sur le taux de conversion. Je ne prĂ©tends pas que la question psychologique soit tranchĂ©e. Je prĂ©tends simplement que ces substitutions mĂ©ritent dâĂȘtre prises en compte.
En anglais, « coĂ»t » â « investissement » est lâexemple le plus clair : mĂȘme idĂ©e, cadre diffĂ©rent. Sur « o200k_base », cela nâa pas non plus dâincidence pour le tokeniseur. Les deux versions ont Ă©tĂ© mesurĂ©es Ă 1 token. Le nombre nâa pas bougĂ©. Le message a tout de mĂȘme changĂ©.
« $1 000 » â « $999 » a eu un double effet : un prix plus attractif et moins de tokens (4 â 2). La raretĂ© a pris le sens inverse. « Acheter maintenant » correspond Ă 2 tokens ; « Plus que trois en stock » en compte 3.
Câest dĂ©jĂ le triangle. Le sens peut rester proche. La persuasion peut sâintensifier. Les tokens peuvent augmenter, diminuer ou rester inchangĂ©s.
Ensuite, le modĂšle attribue un autre prix aux mots
Les API et les fenĂȘtres de contexte ne facturent pas au mot. Elles facturent en tokens : des fragments de texte obtenus aprĂšs quâun tokeniseur a dĂ©coupĂ© la chaĂźne de caractĂšres. Un tokeniseur nâest pas un dictionnaire. Câest une compression de sĂ©quences dâoctets quâil a souvent rencontrĂ©es. Lâanglais est surreprĂ©sentĂ© dans cet historique. Dâautres langues, et mĂȘme dâautres orthographes anglaises de la mĂȘme notion, peuvent se retrouver en un plus grand nombre de fragments.
Câest lâarticle de Damian Zygmuntowicz sur le coĂ»t cachĂ© des tokens selon les langues â avec le mot polonais przedsiÄbiorstwo comme exemple provocateur â qui mâa poussĂ© Ă me pencher sur la question. Je nâai pas reproduit les comptages en polonais. Darkwood est disponible en anglais, en français et en allemand. Ce sont ces langues que jâai mesurĂ©es.
LâunitĂ© de mesure a son importance. Les caractĂšres ne sont pas des tokens. Les mots ne sont pas des tokens. Les tokens dâentrĂ©e ne sont pas les tokens de sortie. Les accĂšs au cache ne sont pas des factures. Une heuristique « octets / 4 » est une estimation, pas une mesure. Jâai exĂ©cutĂ© localement le BPE dâOpenAI avec « yethee/tiktoken » :
- Principal :
o200k_base(famille GPT-4o) - Secondaire :
cl100k_base(famille GPT-4 / 3.5-turbo)
Ce ne sont ni des jetons Claude, ni des jetons Gemini, ni des « jetons LLM universels ». Lâencodage fait partie du rĂ©sultat.
Trois langues, une seule idée
Jâai rĂ©digĂ© deux courts passages parallĂšles â une annonce dâatelier et une ligne de prix â en anglais, en français et en allemand. MĂȘme sens, intentionnellement. Petit corpus : version 1.0.2, hachage 7510f01cf7c3âŠ. Il ne sâagit pas dâune Ă©tude statistique du « français » ou de lâ« allemand ». Un laboratoire dĂ©terministe.
Puis jâai comptĂ©.
Sur ce corpus avec o200k_base, la version anglaise utilisait 46 tokens, la version française 58 (+26,09 % par rapport Ă lâanglais), et la version allemande 63 (+36,96 % par rapport Ă lâanglais).
| Langue | Mots | CaractĂšres | Tokens (o200k_base) |
Tokens / mot | par rapport Ă lâanglais |
|---|---|---|---|---|---|
| Anglais | 41 | 240 | 46 | 1,12 | référence |
| Français | 46 | 273 | 58 | 1,26 | +26,09 % |
| Allemand | 41 | 298 | 63 | 1,54 | +36,96 % |
Ces pourcentages sâappliquent Ă ce corpus et Ă ce tokeniseur. Ils ne constituent pas une pĂ©nalisation du français ou de lâallemand.
Lâallemand a utilisĂ© le mĂȘme nombre de mots que lâanglais, mais davantage de caractĂšres. Il a Ă©galement utilisĂ© plus de tokens par mot. Lâheuristique « octets / 4 » a donnĂ© des estimations de 60 / 71 / 76 et a surestimĂ© toutes les langues. Elle a toutefois masquĂ© lâampleur de lâĂ©cart dans le classement.
Jâai mĂȘme essayĂ© de rendre lâallemand plus naturel. Le remplacement du calque aufgezeichnete FĂŒhrung par gefilmten Rundgang a rĂ©duit le nombre de caractĂšres de 301 Ă 298 et a augmentĂ© le nombre de tokens o200k_base de 62 Ă 63. Moins de caractĂšres. Un token de plus. La longueur du texte nâest pas le problĂšme.
Cela dépend du tokeniseur
MĂȘmes textes, deuxiĂšme encodage.
| Langue | o200k_base |
vs EN | cl100k_base |
vs EN |
|---|---|---|---|---|
| Anglais | 46 | référence | 46 | référence |
| Français | 58 | +26,09 % | 71 | +54,35 % |
| Allemand | 63 | +36,96 % | 73 | +58,70 % |
L'anglais est resté à 46. Le français a bondi de +26,09 % à +54,35 %. L'allemand est passé de +36,96 % à +58,70 %. L'encodage précédent était plus sévÚre pour le français et l'allemand. La prime linguistique n'est pas une propriété du français. C'est une propriété de ce corpus à cet encodage.
Câest lĂ tout lâintĂ©rĂȘt dâutiliser deux tokeniseurs. Si je nâavais publiĂ© que o200k_base, jâaurais sous-estimĂ© Ă quel point un mĂȘme texte en français peut paraĂźtre « coĂ»teux » sous cl100k_base.
Maintenant, modifions les mots
Jâai pris les six Ă©changes commerciaux, rĂ©digĂ© leurs Ă©quivalents idiomatiques en français et en allemand, puis jâai Ă©tiquetĂ© deux intentions :
- persuasion â modifier le cadre de rĂ©fĂ©rence de lâacheteur (peut coĂ»ter plus de tokens)
- token_opt â exprimer une idĂ©e similaire avec moins de tokens (ce qui peut affaiblir le cadre)
Ne choisissez jamais en silence la formulation la moins coûteuse en la qualifiant de meilleure. La « persuasion » est ici identifiée, et non mesurée. Les lignes « token_opt » sont des hypothÚses de laboratoire. Les phrases FR/DE sont des ébauches, et non une étude de traduction.
Quelques lignes sur o200k_base :
| Lang | Intention | Original | Remplacement | Avant | AprĂšs |
|---|---|---|---|---|---|
| en | persuasion | 1 000 $ | 999 $ | 4 | 2 |
| en | persuasion | coût | investissement | 1 | 1 |
| en | persuasion | achetez maintenant | il n'en reste plus que trois | 2 | 3 |
| en | persuasion | standard | personnalisé | 1 | 2 |
| de | persuasion | Standard | sur mesure | 1 | 5 |
| de | persuasion | Basis | indispensable | 1 | 4 |
| de | token_opt | sur mesure | adapté | 5 | 2 |
| en | token_opt | plus que trois en stock | 3 restants | 3 | 2 |
| fr | persuasion | achetez maintenant | plus que trois en stock | 3 | 5 |
Les quatre sommets du triangle, pour cette série :
- Ton commercial plus fort, plus de tokens : « standard » â « sur mesure » ; en allemand « maĂgeschneidert » (+400 %).
- MĂȘmes tokens, cadre diffĂ©rent : en anglais « cost » â « investment » (1 â 1).
- Discours commercial moins percutant, moins de tokens :
maĂgeschneidertâpassend(5 â 2). - Tarification incitative qui rĂ©duit Ă©galement le BPE :
$1 000â$999(4 â 2).
La raretĂ© coĂ»te souvent des tokens. En français, achetez maintenant â plus que trois en stock est passĂ© de 3 Ă 5. Puis token_opt lâa condensĂ© en 3 restants (5 â 3). Des tokens moins coĂ»teux. Un ton de vente moins agressif. Ces deux mesures sont rĂ©elles. Une seule dâentre elles est « meilleure », et cela dĂ©pend de lâaxe qui vous intĂ©resse.
Les lignes rouges sont les plus intéressantes
Neuf des vingt-sept paires de lignes utilisaient plus de tokens aprÚs la réécriture. Les neuf relÚvent de la persuasion. Aucune ne relÚve de token_opt.
C'est en allemand que cela devient frappant :
| Original | Remplacement | Avant | AprĂšs | Delta |
|---|---|---|---|---|
| Base | unverzichtbar | 1 | 4 | +3 |
| Standard | maĂgeschneidert | 1 | 5 | +4 |
| Coûts | Investition | 1 | 2 | +1 |
| peu | begrenzt | 2 | 3 | +1 |
| acheter maintenant | plus que trois disponibles | 3 | 4 | +1 |
Ce nâest pas un benchmark ratĂ©. Lâoptimisation de la persuasion nâest pas lâoptimisation des tokens. Un mot plus percutant sur le plan commercial peut ĂȘtre incompatible avec le tokeniseur. Si jâavais Ă©cartĂ© les lignes rouges, jâaurais publiĂ© un conte de fĂ©es sur une formulation qui permet toujours de faire des Ă©conomies.
ConsidĂ©rĂ© comme un bloc, le niveau de persuasion sur ce corpus est passĂ© de 36 Ă 45 tokens (â25 % « Ă©conomisĂ©s », câest-Ă -dire que cela coĂ»te plus cher). La persuasion en allemand seule : 12 â 20 (â66,67 %). La persuasion en anglais nâa pas eu dâimpact (10 â 10). token_opt a ensuite rĂ©cupĂ©rĂ© des tokens, y compris en allemand (+45,45 % globalement). Plusieurs lignes de token_opt rendent moins coĂ»teuse la mĂȘme idĂ©e que la ligne de persuasion venait de rendre plus coĂ»teuse. Câest le groupe tĂ©moin : mĂȘmes idĂ©es, intention opposĂ©e.
62 â 62
Si je regroupe toutes les paires en un seul total, jâobtiens ceci :
| Jetons avant | Jetons aprĂšs | Ăconomie | |
|---|---|---|---|
| persuasion, tout | 36 | 45 | â9 |
| token_opt, tout | 26 | 17 | +9 |
| mixte, tout | 62 | 62 | 0 |
Soixante-deux entrĂ©s. Soixante-deux sortis. On dirait que la formulation nâa eu aucun effet.
Ce nâest pas le cas. Les substitutions individuelles ont Ă©voluĂ© dans les deux sens. LâagrĂ©gat « mixte » les a annulĂ©es. Le « mixte » en allemand reste Ă â13,04 % (23 â 26). Le « mixte » en anglais « Ă©conomise » toujours 2 tokens. Le zĂ©ro toutes langues correspond Ă la persuasion â9 plus token_opt +9.
Câest un avertissement contre les rĂ©sumĂ©s de rĂ©fĂ©rence. Un agrĂ©gat peut effacer le phĂ©nomĂšne que vous essayez de comprendre. Jâai failli publier « 62 â 62 » comme titre. Cela aurait Ă©tĂ© malhonnĂȘte.
Quel est le coût financier ?
Jâai estimĂ© le coĂ»t des paires de jetons â et non des passages â pour un million de requĂȘtes, en utilisant un instantanĂ© obsolĂšte de gpt-4o-mini (2 aoĂ»t 2026) : 0,15 $ / 0,60 $ par million de jetons dâentrĂ©e / de sortie. Il sâagit dâune estimation, pas dâune facture. Ce corpus est minuscule. Une requĂȘte ne coĂ»te quâune fraction de centime. Je ne vais pas prĂ©tendre le contraire.
Pour 1 000 000 de requĂȘtes, toutes langues confondues :
| Intention | Entrée enregistrée | Sortie enregistrée |
|---|---|---|
| persuasion | â1,35 $ | â5,40 $ |
| token_opt | +1,35 $ | +5,40 $ |
| mixed | 0,00 $ | 0,00 $ |
La valeur « mixte » de 0,00 $ correspond Ă la mĂȘme annulation en dollars. Ă cette Ă©chelle dâun million de requĂȘtes, la saisie de persuasion en allemand passe Ă elle seule de 1,80 $ Ă 3,00 $ (Ă©conomie de â1,20 $). LâĂ©chelle peut rendre une habitude tangible. Ce laboratoire particulier nâest pas en soi une simulation de facturation.
La taxe contextuelle invisible
Le modĂšle dispose toujours de la mĂȘme fenĂȘtre contextuelle en jetons. Ce qui change, câest la quantitĂ© de ce contenu en langage naturel qui y tient.
Jâai rempli une fenĂȘtre hypothĂ©tique de 100 000 tokens avec des copies de lâoffre parallĂšle. DĂ©nominateur : les tokens mesurĂ©s dans le passage, et non les totaux par paire. Il ne sâagit pas dâune fenĂȘtre de contexte de produit. Le français ne dispose pas dâune fenĂȘtre plus petite ; le mĂȘme budget de tokens contient simplement moins de copies de ce texte en français.
Sur o200k_base :
| Langue | Copies qui tiennent | par rapport Ă lâanglais | Perte par rapport Ă lâanglais |
|---|---|---|---|
| Anglais | 2 173,91 | référence | 0,00 |
| Français | 1 724,14 | â20,69 % | 449,77 |
| Allemand | 1 587,30 | â26,98 % | 586,61 |
La mĂȘme fenĂȘtre de tokens couvre une partie moins importante de ce corpus français, et encore moins de ce corpus allemand. En passant Ă cl100k_base, la comparaison français vs anglais donne â35,21 % de copies. Le codage modifie le nombre de copies couvertes. VĂ©rification : 100 000 / 63 = 1 587,30 ; 2 173,91 â 1 587,30 = 586,61.
Les Ă©conomies rĂ©alisĂ©es sur le corpus de la paire Ă©taient minimes. Lâimpact sur la capacitĂ© est dĂ©jĂ visible.
Caveman et le coĂ»t de lâoptimisation elle-mĂȘme
Pour cette expĂ©rience, je me suis penchĂ© sur Caveman â un projet open source visant Ă compresser lâĂ©criture des agents de codage, et non un deuxiĂšme benchmark que jâaurais effectuĂ© sur ce corpus. Je ne lâai pas portĂ©. LâintĂ©rĂȘt rĂ©side dans la mĂ©thodologie.
Caveman rend compte dâune compression rĂ©elle et publie Ă©galement des cas oĂč la surcharge annule ou inverse les Ă©conomies rĂ©alisĂ©es. Une sortie plus courte nâimplique pas automatiquement un coĂ»t total infĂ©rieur. La rĂ©duction de la sortie nâest pas une facture. Pour obtenir un Ă©cart honnĂȘte, il faut un groupe tĂ©moin : ils comparent par rapport Ă une consigne concise, et non par rapport au silence.
Câest pourquoi jâai sĂ©parĂ© persuasion de token_opt, et pourquoi les neuf lignes rouges figurent toujours dans lâarticle. Si la voie « optimisĂ©e » coĂ»te plus cher, il faut le montrer. Un benchmark qui nâaffiche que les lignes vertes nâest quâune brochure.
La variable locale o200k_base correspond toujours Ă OpenAI BPE exĂ©cutĂ© sur ma machine. Il ne sâagit pas dâune facture Claude, mĂȘme si les Ă©valuations hors ligne de Caveman utilisent le mĂȘme encodage. Produit diffĂ©rent. MĂȘme rigueur : Ă©tiqueter le compteur, conserver la rĂ©gression.
Développement avec Symfony et Darkwood Flow
LâexpĂ©rience consiste en une petite application console Symfony 8.1 sous PHP 8.5.4. Pas de base de donnĂ©es, pas dâAPI HTTP, pas de front-end. Tokeniseur : yethee/tiktoken 1.1.1. Orchestration : darkwood/flow 8.1.6, effectivement utilisĂ© â la commande ne peut pas afficher de tableaux si Flow nâa pas Ă©tĂ© exĂ©cutĂ©.
Le pipeline comprend sept tĂąches :
LoadCorpus
â TokenizeBefore
â ApplyCandidates
â TokenizeAfter
â Compare
â EstimateCost
â Report
Chaque Ă©tape est explicite. Chargement des deux passages et des 27 paires. Tokenisation de lâoffre parallĂšle. Enregistrement des remplacements Ă©tiquetĂ©s dĂ©jĂ prĂ©sents dans le corpus. Tokeniser chaque paire. Comparer, effectuer une auto-vĂ©rification, diviser les agrĂ©gats par intention. Estimer le coĂ»t. GĂ©nĂ©rer un rapport. La trace affichĂ©e en est la preuve : COMPARE : auto-vĂ©rification RĂUSSIE.
php bin/console app:language:benchmark
php bin/console app:language:benchmark --format=json
Le fichier JSON est enregistrĂ© dans var/benchmark/. Je souhaitais disposer dâune mesure que je puisse faire Ă©voluer sans dissimuler les Ă©tapes dans un script nommĂ© run.php.
PHP 8.6 : valeurs par défaut en lecture seule
PHP 8.6 permet Ă une propriĂ©tĂ© dâinstance ordinaire dâavoir une valeur par dĂ©faut :
public readonly string $evidence = 'ESTIMATED';
Sur cette machine, cela génÚre une erreur de compilation : La propriété en lecture seule Demo::$evidence ne peut pas avoir de valeur par défaut. L'environnement d'exécution est PHP 8.5.4. Je n'ai pas activé la fonctionnalité de la version 8.6.
Une valeur par dĂ©faut sur un paramĂštre de constructeur promu fonctionnait dĂ©jĂ Ă partir de la version 8.1. Le RFC de la version 8.6 indique que ce nâest pas un objectif : il sâagit dâune valeur par dĂ©faut de paramĂštre, et non dâune valeur par dĂ©faut de propriĂ©tĂ©. PricingAssumptions utilise cette ancienne approche. Dans les deux cas, lâinstantanĂ© de tarification reste un objet de configuration immuable. Cette note en marge nâaffecte pas le nombre de tokens.
PHP utilise des références, pas des pointeurs C
Un zval est une balise de type associĂ©e Ă une valeur. Les chaĂźnes de caractĂšres et les tableaux sont copiĂ©s Ă lâĂ©criture. $alias = $state copie un identifiant dâobjet (spl_object_id Ă©gal Ă true ; les deux noms ont vu leurs traces passer de 7 Ă 8). En PHP, lâopĂ©rateur & encapsule un zval dans IS_REFERENCE / zend_reference. $ref++ a incrĂ©mentĂ© lâentier ($n est devenu 3). Cela nâa pas parcouru la mĂ©moire.
Une rĂ©fĂ©rence PHP nâest pas simplement un pointeur C exposĂ© au code PHP. Flow encapsule chaque retour de tĂąche dans un nouvel Ip avec $data en lecture seule ; le retour de BenchmarkState rĂ©utilise le descripteur. Zend utilise des pointeurs C en interne. Le PHP en espace utilisateur ne vous en fournit pas. php bin/console app:language:benchmark --explain-values affiche ce tableau. Pas de FFI. Cette encadrĂ© ne modifie pas non plus le nombre de tokens.
Ce que jâai appris
Les langues naturelles ne sont pas Ă©quivalentes en termes de tokenisation. Sur ce corpus avec o200k_base, le français utilisait 58 tokens lĂ oĂč lâanglais en utilisait 46, et lâallemand 63. Modifiez lâencodage et le « premium » Ă©volue en consĂ©quence.
La persuasion et lâefficacitĂ© en termes de tokens peuvent entrer en conflit. MaĂgeschneidert est un meilleur mot de vente, mais un moins bon citoyen du BPE. Le mot anglais investment est neutre. Une tarification « de charme » peut accidentellement aider les deux axes. Les textes jouant sur la raretĂ© nây parviennent souvent pas.
Le nombre de caractĂšres est un piĂštre substitut Ă un vĂ©ritable tokeniseur. La phrase allemande, plus naturelle, comptait moins de caractĂšres mais plus de tokens. La formule octets / 4 a surestimĂ© toutes les langues et aplani lâĂ©cart.
Les agrĂ©gats peuvent masquer des tendances opposĂ©es. 62 â 62 est une annulation, et non pas « le choix des mots nâa pas dâimportance ». SĂ©parez les intentions, sinon vous optimiserez un zĂ©ro.
LâefficacitĂ© contextuelle importe mĂȘme lorsque le corpus de paires est minuscule. La mĂȘme fenĂȘtre de tokens contient moins dâexemplaires de ce texte en français, et encore moins de celui en allemand.
Lâoptimisation a son propre surcoĂ»t. Publiez la ligne en rouge.
Je nâai pas mesurĂ© lâutilisation en temps rĂ©el du prestataire, le taux de conversion ni une traduction professionnelle. La prochaine expĂ©rience honnĂȘte, si jâen mĂšne une, portera sur une seule paire EN/FR/DE fournie par un prestataire sur les mĂȘmes passages.
Dâici lĂ : mesurez la charge de travail rĂ©elle avant de lâoptimiser. Et lorsque le total combinĂ© reste inchangĂ©, examinez les lignes.
Sources
- 3 publications LinkedIn
- tiktoken-php
- Caveman
- Code source : https://github.com/matyo91/nolife-language
- Diapositives : https://github.com/matyo91/slidewire