Inside prompt_optimization: Reversible Minification and Sub-Millisecond Compressions
Gary Gitton
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)
- Extraction des tokens : Le middleware utilise le motif
RE_IDENTIFIERpour 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). - Construction de l’Index de Mapping : Les identifiants uniques sont insérés dans la structure
minification_mapdu contexte de requête, associée à une clé compressée du type__B_1,__B_2, etc. - Remplacement Unique : LLMBastion convertit
current_mapen une table inverse de valeurs vers clés (val_to_key) et applique un unique appelreplace_all:
let local_code = RE_IDENTIFIER.replace_all(code, |caps: ®ex::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: ®ex::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.