← Retour à pithhChaque prompt a deux meilleures versions
Une plus concise, et une plus détaillée. Voici comment nous calculons les deux.
La plupart des compteurs de tokens s'arrêtent au chiffre. pithh va plus loin : au moment où vous voyez le coût, vous voyez aussi deux réécritures de votre propre prompt — Lean, qui dit la même chose avec moins de tokens, et Extended, qui investit davantage de tokens dans une structure qu'un modèle peut réellement exploiter. Les deux sont déterministes, sans échantillonnage ni prompt caché : Extended s'exécute entièrement dans votre navigateur, et Lean y exécute deux de ses trois étapes, la troisième étant notée par un petit modèle de langage que nous hébergeons nous-mêmes — jamais un service de réécriture payant.
Cette contrainte a façonné toute la conception : plutôt que de demander à un grand modèle de réécrire votre prompt (ce qui coûte de l'argent et reste une boîte noire), nous avons construit deux pipelines petits et déterministes, directement fondés sur des recherches publiées en compression de prompts et en prompt engineering. Rien n'est ici secret ou magique — chaque technique est citée ci-dessous.
Moteur LeanTrois étapes, dans l'ordre
Chaque étape élimine un type de superflu différent. Elles s'exécutent en séquence, et chacune est volontairement prudente — nous préférons sous-compresser plutôt que de rendre une phrase qui ne s'analyse plus correctement.
- Élagage coopératif. Le Principe de coopération de Grice établit qu'un locuteur ne devrait pas en dire plus que ce que l'échange exige — la Maxime de quantité [1]. Les formules de politesse et les atténuateurs (« si possible », « j'aimerais que vous », « pourriez-vous ») relèvent de l'adoucissement social, pas de l'instruction — un modèle n'a pas besoin qu'on le lui demande gentiment. Cette étape supprime une liste sélectionnée de ces expressions.
- Réduction des redondances. On reformule souvent la même demande sur deux phrases par souci d'insistance. Nous découpons le prompt en phrases et les comparons avec le même signal qu'utilise LexRank [2] pour classer l'importance des phrases : la similarité cosinus entre vecteurs de fréquence de termes. Lorsque deux phrases se recoupent fortement, nous ne conservons que la plus informative.
- Élagage par auto-information. LLMLingua [3] et Selective Context [4] compressent les prompts en faisant passer le texte dans un petit modèle de langage causal et en supprimant les tokens jugés les plus prévisibles — c'est-à-dire ceux dont l'auto-information, au sens de la théorie de l'information, est la plus faible. Nous faisons tourner exactement le modèle léger que le paper de LLMLingua valide lui-même pour cela — GPT2-small — sur notre propre serveur, et notons chaque mot selon le nombre de bits d'auto-information qu'il porte compte tenu de ce qui précède. La sortie de LLMLingua est lue par un autre modèle, elle peut donc élaguer de façon agressive ; la nôtre vous est montrée directement, nous la limitons donc à environ les 12 % de mots les moins informatifs et ne touchons jamais au premier ni au dernier mot d'une phrase, pour garder un résultat lisible plutôt que télégraphique.
Le nombre de tokens affiché pour la version Lean n'est pas une estimation de l'économie réalisée — c'est le même appel de tokeniseur réel que celui utilisé pour le prompt original, l'écart est donc mesuré, pas deviné.
Moteur ExtendedClassifier, puis appliquer le bon modèle
Une enveloppe générique du type « agis comme un expert et réfléchis attentivement » aide un peu, toujours. Une enveloppe choisie en fonction de ce que votre prompt demande réellement aide beaucoup plus. Le moteur Extended lit donc votre prompt, devine son type de tâche à partir de motifs de surface — code, écriture créative, raisonnement/analyse, ou général — et n'injecte que les modèles adaptés, puisés dans le Prompt Pattern Catalog [6] :
- Un modèle de persona adapté à la tâche (un ingénieur senior pour le code, un expert du domaine pour l'analyse, un rédacteur pour le travail créatif) plutôt qu'un rôle unique.
- Un modèle de format de sortie qui indique au modèle comment structurer sa réponse pour ce type de tâche.
- Pour les prompts classés comme raisonnement ou analyse, un déclencheur explicite de chaîne de pensée — « réfléchis étape par étape avant de répondre ». Kojima et al. ont montré que cette seule ligne, ajoutée à un prompt zero-shot, améliore mesurablement la précision du raisonnement sans aucun exemple travaillé [7], en s'appuyant sur la découverte antérieure de Wei et al. selon laquelle expliciter les étapes intermédiaires aide déjà en soi [8]. Nous ne l'ajoutons que là où la tâche en bénéficie — un prompt d'écriture créative n'en a pas besoin.
La dernière étape est un formatage sensible au modèle : changez de modèle dans le sélecteur et la structure de l'enveloppe change elle-même. Anthropic publie des recommandations explicites selon lesquelles les modèles Claude répondent mieux à des prompts structurés avec des balises XML [9], si bien que la sortie Extended pour un modèle Claude est enveloppée dans <role>, <task>, <output_format>. Le guide de prompting d'OpenAI recommande quant à lui des en-têtes Markdown [10], si bien que tout autre modèle reçoit à la place # Role, # Task, # Output format. Changez de modèle dans le sélecteur et la carte Extended se régénère dans la forme préférée de ce modèle — essayez.
Pourquoi ceci, et pas simplement appeler un LLM
La méthode évidente pour réécrire un prompt est de demander à un modèle plus grand de le faire. Nous ne voulions pas que pithh coûte de l'argent pour vous en faire économiser, ni qu'une boîte noire s'interpose entre vous et vos propres mots. Chaque étape ci-dessus est une fonction simple, que vous pouvez lire, réexécuter, et dont vous obtenez le même résultat à chaque fois — aucun hasard d'échantillonnage, aucun prompt système caché, aucune facturation par requête. Le compromis est honnête : un modèle de réécriture spécifiquement entraîné compresserait probablement plus fort et développerait plus intelligemment que des règles sélectionnées à la main. Ce que vous obtenez à la place, c'est une méthode entièrement auditable, qui s'exécute en quelques millisecondes, et qui n'envoie jamais votre prompt où que ce soit juste pour le reformater.
Références
- H.P. Grice (1975). "Logic and Conversation." In Syntax and Semantics, Vol. 3: Speech Acts, Cole & Morgan (eds.).
- G. Erkan & D.R. Radev (2004). "LexRank: Graph-based Lexical Centrality as Salience in Text Summarization." Journal of Artificial Intelligence Research, 22, 457–479. Semantic Scholar
- H. Jiang, Q. Wu, C.-Y. Lin, Y. Yang, L. Qiu (2023). "LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models." EMNLP 2023. arXiv:2310.05736
- Y. Li, B. Dong, F. Guerin, C. Lin (2023). "Compressing Context to Enhance Inference Efficiency of Large Language Models." EMNLP 2023. arXiv:2310.06201
- Z. Pan et al. (2024). "LLMLingua-2: Data Distillation for Efficient and Faithful Task-Agnostic Prompt Compression." arXiv:2403.12968
- J. White, Q. Fu, S. Hays, M. Sandborn, C. Olea, H. Gilbert, A. Elnashar, J. Spencer-Smith, D.C. Schmidt (2023). "A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT." arXiv:2302.11382
- T. Kojima, S.S. Gu, M. Reid, Y. Matsuo, Y. Iwasawa (2022). "Large Language Models are Zero-Shot Reasoners." NeurIPS 2022. arXiv:2205.11916
- J. Wei, X. Wang, D. Schuurmans, M. Bosma, B. Ichter, F. Xia, E. Chi, Q. Le, D. Zhou (2022). "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models." NeurIPS 2022. arXiv:2201.11903
- Anthropic. "Use XML tags to structure your prompts," Claude Docs — prompt engineering guide. platform.claude.com
- OpenAI. "Prompt engineering," OpenAI API guide — Markdown structuring recommendation. developers.openai.com
Chaque technique ci-dessus est citée pour l'idée précise qui l'a inspirée, et non comme une affirmation que pithh reproduit la méthode complète de l'article — lorsque nous avons simplifié quelque chose (des règles au lieu d'un modèle de langage, une similarité par paires au lieu d'une centralité de graphe complète), cela est signalé ci-dessus.