L’équipe Granite a présenté LLMON, un langage de balisage conçu pour les modèles de langage, et publie deux modèles de préversion expérimentale, granite-4.1-3b-LLMON-preview et granite-4.1-8b-LLMON-preview. Selon ses auteurs, ce format rend explicites la structure et le sens des informations fournies au modèle, ce qui renforce sa résistance aux injections de prompt.
- LLMON structure le contexte des modèles de langage à l’aide de balises sémantiques.
- Il sépare explicitement les instructions des données, ce qui limite les injections de prompt indirectes.
- Sur le benchmark OPI, les préversions Granite 4.1 résistent nettement mieux que les modèles comparés.
- Ce comportement est appris, non garanti, et le projet reste une préversion expérimentale.
Un grand modèle de langage (LLM) génère chaque nouveau token, c’est-à-dire chaque fragment de texte, à partir de son contexte. Au fil d’une longue interaction, ce contexte se remplit de prompts système, d’historiques de conversation, d’instructions portant sur des documents, de réponses d’outils, de données utilisateur, de contraintes et de chaînes de raisonnement. Une grande partie de cette structure reste implicite pour le modèle ou est encodée dans des formats comme le JSON, qui n’ont pas été conçus pour être lus par des LLM. Selon la source, cela explique en partie la fragilité des modèles, en particulier les plus petits, ainsi que certains comportements inattendus. Ce manque de structure peut aussi être exploité par des attaquants, notamment via des injections de prompt.
LLMON, pour « LLM Object Notation », se prononce « lemon ». Ses balises marquent des composants sémantiquement cohérents, encadrés par des délimiteurs spéciaux réservés. Des identifiants uniques permettent de relier une instruction, qui peut se trouver n’importe où dans le contexte, aux données sur lesquelles elle doit porter, à la manière d’un appel de fonction avec ses arguments en programmation.
Séparer instructions et données
Une injection de prompt indirecte consiste à cacher une instruction malveillante dans une donnée, comme un document récupéré, une réponse d’outil ou une saisie utilisateur. Selon la source, les modèles LLMON ignorent largement ces instructions cachées, grâce à la séparation explicite entre instructions et données. Sur certains benchmarks, le taux de réussite des attaques tombe presque à zéro, alors que les modèles classiques à réglage par instructions sont détournés avec une probabilité élevée.
Les auteurs ont comparé les préversions à plusieurs modèles open source et propriétaires sur le benchmark OPI, qui insère l’injection dans les données de tâches classiques de traitement du langage. Ils mesurent la robustesse comme « 1 − taux de réussite des attaques ». Selon eux, LLMON « élimine pratiquement le problème » sur ce test, en évitant 47 % d’attaques de plus que le meilleur modèle de pointe testé, et 95 % de plus que le meilleur modèle open source. Des tendances similaires sont observées sur les benchmarks ASB et StruQ. La source précise que ces tests portent sur des injections statiques, et que l’équipe travaille encore sur les attaques adaptatives, qui se déploient sur plusieurs tours de conversation.
Capacités générales et entraînement
Selon la source, les gains en sécurité ne se font pas au détriment des capacités générales : sur les grandes catégories de benchmarks standard, les modèles LLMON obtiennent des résultats comparables à ceux des modèles Granite 4.1 Instruct. Pour l’essayer, il suffit de nommer les parties d’un tour de conversation, comme instruction, data ou requirement, le gabarit de conversation se chargeant de les transformer en blocs LLMON. Une bibliothèque de conversion permet aussi de traiter les données structurées, comme le JSON, sous forme de blocs typés et adressables.
Les modèles partent des points de contrôle de base Granite 4.1 et non des versions instruct publiées. Les auteurs ont réécrit un corpus classique de réglage par instructions au format LLMON, puis ajouté des blocs leurre, présents dans le contexte mais volontairement non liés. Ils ont ensuite appliqué cinq étapes d’apprentissage par renforcement GRPO, suivies d’une étape DPO portant sur mille paires de préférences issues des réponses du modèle à des tentatives d’injection. Il en résulte, selon la source, une règle de privilège : une instruction appelée par un bloc d’exécution fait autorité, tandis que les données, documents ou résultats d’outils restent des éléments à lire, et non des ordres à suivre. Les auteurs précisent qu’il s’agit d’un comportement appris, et non d’une garantie imposée.
La source présente également un exemple d’adaptation sur le benchmark ScienceWorld, où un agent réalise des tâches scientifiques élémentaires. Un vocabulaire de balises propre à cette tâche a été défini, puis un adaptateur LoRA a été entraîné sur un modèle LLMON. Les équipes sont invitées à partager leurs retours sur les GitHub Discussions, le projet restant, selon ses auteurs, une préversion expérimentale, non destinée à la production.
