LLM Bastion Logo
LLMBastion Blog
Technical Deep-Dives

Inside prompt_optimization: Reversible Minification and Sub-Millisecond Compressions

G

Gary Gitton

5 min read

Architecture d’Optimisation de Prompt et Minification Réversible

Ce document décrit l’architecture technique, les performances et l’implémentation de la minification réversible et du nettoyage de prompts (Prompt Optimization) au sein de la LLM Gateway.


1. Philosophie & Performance sous-milliseconde

Toutes les étapes d’optimisation de prompts de LLMBastion sont conçues avec des exigences strictes de performance et d’allocation mémoire minimale. L’optimisation ne doit jamais introduire de latence perceptible amont ni de surcharge de CPU à l’échelle de millions de requêtes par jour.

Pour ce faire, LLMBastion applique deux principes fondamentaux :

  • Caching Thread-Safe Compilés-Une-Fois (Lazy) : Aucune expression régulière (regex) n’est instanciée ou compilée dynamiquement à chaud.
  • Minification et Restitution à Passage Unique ($O(1)$) : La minification des identifiants et leur traduction inversée se font en un seul parcours de chaîne grâce à l’analyse par groupes de capture de ranges.

2. L’Optimiseur de Prompt (Prompt Optimization)

L’optimisation des prompts est exécutée par PromptOptimizationMiddleware et complétée dans la phase de normalisation. Elle permet de réduire drastiquement la consommation de tokens d’entrée en éliminant les commentaires de code et les espaces vides multiples.

A. Nettoyage des Commentaires de Code

Le système repère le langage cible de la requête (soit détecté automatiquement, soit fourni par l’en-tête X-Bastion-Code-Language). Les commentaires sont alors éliminés :

  • Python / Shell / Dockerfile / Yaml : Cible les motifs de commentaires # et les chaînes de docstrings triples """ ou '''.
  • C-Style (Rust, JS, TS, C, Go, Java) : Cible les commentaires de ligne // et de blocs /* ... */.
  • SQL : Cible les commentaires -- et /* ... */.

B. Compilation des Automates Regex

Ces opérations s’appuient sur des regex définies sous forme de variables globales thread-safe Lazy<Regex> via la bibliothèque once_cell :

static RE_C_STYLE_COMMENTS: Lazy<Regex> =
    Lazy::new(|| Regex::new(r#"(?m)//.*$|/\*[\s\S]*?\*/"#).unwrap());
static RE_HASH_COMMENTS: Lazy<Regex> =
    Lazy::new(|| Regex::new(r#"(?m)#.*$"#).unwrap());

3. Minification Réversible des Identifiants (Reversible Minification)

La minification intelligente remplace les longs identifiants de variables, fonctions et classes par des jetons condensés, puis les restaure à la volée dans la réponse retournée au client.

A. Algorithme de Minification (Entrée Gateway)

  1. Extraction des tokens : Le middleware utilise le motif RE_IDENTIFIER pour localiser tous les mots-clés du code ayant une longueur supérieure ou égale à 4 (en excluant les mots-clés réservés des langages).
  2. Construction de l’Index de Mapping : Les identifiants uniques sont insérés dans la structure minification_map du contexte de requête, associée à une clé compressée du type __B_1, __B_2, etc.
  3. Remplacement Unique : LLMBastion convertit current_map en une table inverse de valeurs vers clés (val_to_key) et applique un unique appel replace_all :
let local_code = RE_IDENTIFIER.replace_all(code, |caps: &regex::Captures| {
    let range = caps.get(0).unwrap().range();
    let id = &code[range];
    if let Some(token) = val_to_key.get(id) {
        token.as_str()
    } else {
        id
    }
});

Note: La conversion s’effectue sans aucune allocation mémoire intermédiaire en utilisant directement les slices du prompt original (code[range]).

B. Algorithme de Dé-minification (Sortie Response)

Dans le sens inverse, lorsque le modèle répond, ResponseFormattingMiddleware intercepte la réponse. Si X-Bastion-Format-Response est actif, il applique une dé-minification à passage unique à l’aide de la même logique :

let de_minified = RE_TOKEN.replace_all(code, |caps: &regex::Captures| {
    let range = caps.get(0).unwrap().range();
    let token = &code[range];
    ctx.minification_map
        .get(token)
        .map(|s| s.as_str())
        .unwrap_or(token)
});

Cette opération change la complexity de l’inversion d’un algorithme $O(N)$ (boucle sur chaque clé et exécution de regex individuelles) à un algorithme en passage unique $O(1)$, assurant des temps de réponse ultra-rapides.


4. Intégration dans le Portail et Configuration

Toutes ces options sont disponibles au niveau du panneau d’administration de la console Web sous l’onglet Performance :

┌────────────────────────────────────────────────────────┐
│  Performance Tab (Portail)                             │
├────────────────────────────────────────────────────────┤
│  [X] Optimiseur de Prompt                              │
│      -> Supprime commentaires, espaces et sauts de line│
│                                                        │
│  [X] Minification Intelligente                         │
│      -> Compresse les identifiants de code et          │
│         les restitue de manière réversible amont.       │
└────────────────────────────────────────────────────────┘

Les modifications effectuées dans l’interface sont sauvegardées de façon persistante dans le document compliance en base de données, assurant une configuration cohérente à travers tous les déploiements de serveurs LLMBastion.

#Prompt Optimization #Minification #Rust Performance #LLM Gateway