Un modèle de 3B paramètres qui surpasse GPT-4o sur la détection de phishing

Premier LLM jamais fine-tuné spécifiquement pour la détection de phishing en français. 150 000 emails d'entraînement, 99.4% d'accuracy, zéro dépendance cloud — là où aucune solution n'existait, Sandmail ouvre la voie.

0.0%
Accuracy
Sandmail (3B ft)
3 erreurs sur 500
99.4%
GPT-4o (~200B)
52 erreurs — $0.69
89.6%
Gemini 2.5 Flash
170 unknowns
85.2%
3/500
Erreurs
$0
Coût / requête
~3s
Latence
150k
Emails train

Pourquoi ce projet existe

Les entreprises françaises sont confrontées à une menace grandissante : le phishing ciblé, rédigé en français, imitant les communications internes. Or, les outils de détection existants — qu'il s'agisse de modèles BERT fine-tunés ou de LLM commerciaux — sont entraînés exclusivement sur des corpus anglophones et échouent massivement face à des emails français sophistiqués. Jusqu'à aujourd'hui, aucun modèle n'avait été conçu pour répondre à ce problème.

Sandmail est, à notre connaissance, le premier projet à couvrir l'intégralité de ce pipeline pour le français : génération d'un corpus synthétique de 150 000 emails réalistes, fine-tuning d'un modèle Qwen2.5-3B via QLoRA, et évaluation rigoureuse sur un benchmark comparatif multi-modèles — un travail qui n'avait pas encore été mené dans l'écosystème francophone.

Le résultat : un modèle local, gratuit, de 3 milliards de paramètres, qui atteint 99.4% d'accuracy et surpasse des modèles propriétaires de centaines de milliards de paramètres — un résultat qui n'avait pas encore d'équivalent sur du phishing français.

Pipeline end-to-end

Trois composants indépendants forment une chaîne séquentielle, du corpus synthétique au modèle déployé.

01
Dataset Generator
150k emails synthétiques
Mistral Small 24B via API
32 types, 3 difficultés
02
Fine-tuning
Qwen2.5-3B + QLoRA
Unsloth + SFTTrainer
2 epochs, ~50h GPU
03
Benchmark
500 emails, seed fixé
6 modèles comparés
Wilson CI 95%

Phase 1 — Génération du corpus

Le générateur synthétique utilise Mistral Small 24B (via OpenRouter) pour produire des emails de phishing et des emails légitimes en français. Chaque email est contextualisé dans un scénario d'entreprise : BEC (Business Email Compromise), credential harvesting, fausses factures, QR phishing, supply chain, et 27 autres types d'attaques.

Un système de scoring multi-critères (conformité RFC-822, réalisme linguistique, absence de clichés IA, originalité sémantique, cohérence) valide chaque email avec un seuil minimum de 0.75/1.0. La déduplication Jaccard élimine les doublons sémantiques.

Emails générés
150 020
3 sources fusionnées
Types d'attaques
32
18 phishing + 14 légit
Ratio phishing/légit
65/35
Volontairement déséquilibré

Anti-shortcut training : 46% des emails légitimes contiennent des URLs, et 50% des emails de phishing n'en contiennent pas. Le modèle ne peut pas tricher en se basant sur la simple présence d'un lien.

Phase 2 — Fine-tuning

Le modèle de base Qwen2.5-3B-Instruct est fine-tuné via QLoRA 4-bit avec Unsloth pour l'accélération GPU (Flash Attention 2 + fused LoRA kernels). L'entraînement utilise SFTTrainer de TRL avec deux optimisations cruciales :

Completion-only loss : seuls les tokens de la réponse assistant (~50 tokens) sont utilisés pour le calcul du loss, pas les ~1200 tokens du prompt système/utilisateur. Cela concentre l'apprentissage sur la tâche de classification.

Sequence packing : plusieurs emails courts sont concaténés dans une fenêtre de 2048 tokens pour éliminer le padding et maximiser l'utilisation GPU.

Modèle de base
Qwen2.5-3B-Instruct
3.09 milliards de paramètres
Méthode
QLoRA 4-bit
rank=16, alpha=32, dropout=0
Durée d'entraînement
~50h
2 epochs, RTX 3080 Ti 12GB eGPU
Convergence du loss
1.945 → 0.088
Réduction de 95.5%

Phase 3 — Déploiement

Le modèle est exporté au format GGUF (f16, 6.2 GB) et servi via Ollama pour une inférence locale à ~3 secondes par email sur GPU. Aucune donnée ne quitte la machine. Aucun coût par requête.

Ingestion native au format .eml : Sandmail a été entraîné sur des emails complets au format RFC-822 — avec tous les en-têtes (From, To, Subject, Date, Message-ID, MIME-Version, Content-Type). Un fichier .eml peut être passé tel quel au modèle. Ce dernier exploite l'intégralité des métadonnées — domaine expéditeur, cohérence des en-têtes, typosquatting sur le champ From — en plus du contenu, ce qui le distingue des classificateurs BERT qui ne voient que le texte brut.

Benchmark comparatif — 6 modèles

500 emails français (seed=42), 32 types d'attaques, 3 niveaux de difficulté. Mêmes données pour tous les modèles. Intervalles de confiance Wilson à 95%.

Accuracy globale sur 500 emails français
Sandmail 3B
99.4%
GPT-4o ~200B
89.6%
Gemini 2.5 Flash
85.2%
LLaMA 3.2 3B
65.8%
DistilBERT
52.2%
BERT-base
40.6%
Modèle Accuracy IC 95% Macro-F1 F1 Phish F1 Légit Erreurs Coût
1 Sandmail (Qwen 3B ft) 99.4% 98.2-99.8 99.3% 99.5% 99.1% 3 $0.00
2 GPT-4o 89.6% 86.6-91.9 88.9% 91.6% 86.1% 52 $0.69
3 Gemini 2.5 Flash 85.2% 80.9-88.6 81.5% 89.7% 73.2% 49 +170 unk $0.05
4 LLaMA 3.2 3B (zero-shot) 65.8% 61.5-69.8 39.7% 79.4% 0.0% 171 $0.00
5 DistilBERT (EN) 52.2% 47.8-56.5 49.2% 61.5% 36.9% 239 $0.00
6 BERT-base (EN) 40.6% 36.4-45.0 38.0% 25.2% 50.7% 297 $0.00

Matrice de confusion — Sandmail

Sur 500 prédictions, Sandmail ne commet que 3 erreurs : 1 faux positif (newsletter classée phishing) et 2 faux négatifs (supply_chain et fake_government sur des emails sans difficulté assignée).

Prédit Légit
Prédit Phishing
Réel Légit
170
1
Réel Phishing
2
327

Accuracy par niveau de difficulté

Sandmail maintient 100% d'accuracy sur les 3 niveaux de difficulté connus (easy, medium, hard). Les 3 erreurs surviennent uniquement sur des emails sans difficulté assignée. GPT-4o chute significativement sur les emails difficiles.

Easy
Medium
Hard
Unknown
N emails
Sandmail
100%
100%
100%
95.5%
500
GPT-4o
94.6%
95.5%
80.3%
80.6%
500
Gemini
93.5%
86.9%
79.4%
69.2%
500

Pourquoi Sandmail gagne

1. La spécialisation bat la généralisation

GPT-4o est un modèle généraliste de ~200 milliards de paramètres, capable de coder, traduire, et raisonner. Mais face à une tâche de classification binaire très spécifique — distinguer un email de phishing français d'un email légitime — un modèle 60 fois plus petit mais spécialisé le surpasse de 9.8 points d'accuracy.

C'est l'équivalent d'un chirurgien spécialisé qui surpasse un médecin généraliste sur une opération précise. La connaissance profonde d'un domaine étroit l'emporte sur la connaissance superficielle d'un domaine large.

2. Le français comme avantage compétitif

Les modèles BERT et DistilBERT testés (40.6% et 52.2%) sont entraînés exclusivement sur des corpus anglophones. Leur performance sur des emails français est pire que le hasard pour BERT (40.6% < 50%). Ce n'est pas une faiblesse des architectures — c'est l'absence totale de données d'entraînement dans la langue cible.

Ce constat est la raison d'être de Sandmail : avant ce projet, il n'existait pas de modèle — open-source ou propriétaire — spécifiquement entraîné pour la détection de phishing en français. Sandmail est le premier à s'attaquer à ce problème, et les résultats confirment l'ampleur du besoin.

3. La qualité du dataset compte plus que la taille du modèle

Le corpus de 150 000 emails n'est pas un ensemble de spams nigérians grossiers. Il couvre 32 types d'attaques réelles, 3 niveaux de difficulté, 200 contextes d'entreprises, des techniques de typosquatting, du threading RE:/FWD:, et des signaux anti-shortcut (URLs dans les emails légitimes, absence d'URLs dans le phishing).

Quand GPT-4o reçoit un email de phishing sophistiqué imitant une communication interne RH, il hésite. Sandmail a vu des milliers d'exemples similaires. Ce niveau de spécialisation sur le français n'existait pas avant — faute de données, personne ne s'y était encore attaqué.

4. Zéro unknowns = fiabilité en production

Sandmail produit une réponse parsable 100% du temps (0 unknown sur 500). Gemini 2.5 Flash échoue à suivre le format de sortie dans 34% des cas (170 unknowns), et GPT-4o dans 0.4% des cas. Dans un pipeline de sécurité automatisé, chaque réponse non-parsable est un email non-analysé — un risque.

En résumé : Sandmail ne bat pas GPT-4o « en général ». Il le bat sur cette tâche précise, sur ces données précises, dans cette langue précise. Et c'est exactement ce dont une entreprise française a besoin.

Protocole de benchmark

La rigueur du protocole garantit que les résultats sont reproductibles et comparables. Chaque décision méthodologique est documentée.

Données de test

500 emails extraits du split d'évaluation (10% du corpus total, jamais vus pendant l'entraînement) avec un seed fixé (42) pour le shuffle. Distribution : 329 phishing (65.8%), 171 légitimes (34.2%). 32 types d'emails représentés. 3 niveaux de difficulté.

Équité entre modèles

Tous les modèles reçoivent exactement les mêmes 500 emails dans le même ordre. Les modèles génératifs (Sandmail, GPT-4o, Gemini, LLaMA) reçoivent un system prompt équivalent demandant de classifier l'email comme "phishing" ou "légitime". Les classificateurs BERT reçoivent le texte brut.

Conditions d'exécution

Modèles locaux
RTX 3080 Ti 12GB eGPU
Sandmail et LLaMA via Ollama (GPU)
BERT et DistilBERT via HuggingFace (CPU)
Modèles API
OpenRouter
GPT-4o et Gemini 2.5 Flash
Temperature 0.01, max_tokens 150

Métriques

Accuracy, Precision, Recall, F1-score (par classe et Macro), matrice de confusion, intervalles de confiance Wilson à 95%, accuracy par type d'email et par difficulté, analyse des erreurs (FP/FN par type et difficulté), latence (mean, median, p95, p99).

Transparence : emails FR vs modèles EN

Les modèles BERT et DistilBERT sont des classificateurs entraînés sur des corpus anglophones, testés volontairement sur des emails français. Ce choix est délibéré et reflète la réalité du marché : il n'existe pas de modèle open-source spécialisé en détection de phishing francophone. Le benchmark mesure la capacité opérationnelle réelle de chaque modèle dans un contexte d'entreprise française.

Technologies utilisées

Génération
Mistral Small 24B
Async Python, OpenRouter API, Flask web UI, scoring multi-critères, déduplication Jaccard
Fine-tuning
Unsloth + TRL
QLoRA 4-bit, SFTTrainer, Flash Attention 2, completion-only loss, sequence packing
Déploiement
Ollama (GGUF)
Inférence locale GPU, ~3s/email, zéro dépendance cloud, API REST compatible

Hyperparamètres du fine-tuning

# Configuration QLoRA lora_rank = 16 lora_alpha = 32 lora_dropout = 0 # requis pour Unsloth fused kernels learning_rate = 2e-4 batch_size = 2 # avec packing, chaque item = 2048 tokens grad_accum = 8 # effective batch = 16 epochs = 2 max_seq_length = 2048 warmup_ratio = 0.03 weight_decay = 0.01 # Convergence du loss loss_initial = 1.9452 # step 50 loss_final = 0.0878 # step 3800 eval_loss = 0.0942 # step 2000 (pas d'overfitting)

Ce que ce projet démontre

Enseignement 1

Le fine-tuning démocratise l'IA spécialisée

Un étudiant en master, seul, avec une RTX 3080 Ti et ~50h de compute, a construit de A à Z un système qui surpasse les offres commerciales les plus coûteuses sur cette tâche. Le coût total du projet (compute + API) : moins de 25€. La preuve que les bons outils et la bonne méthode comptent plus que le budget.

Enseignement 2

La donnée est le vrai avantage compétitif

LLaMA 3.2 3B et Sandmail partagent la même architecture (~3B paramètres). La différence : un corpus de 150 000 emails français d'une richesse unique, conçu avec 33 types d'attaques et des mécanismes anti-biais. Résultat : 99.4% vs 65.8%. Ce dataset, construit intégralement pour ce projet, est un actif en soi.

Enseignement 3

Le français est sous-représenté en sécurité IA

Avant Sandmail, les meilleurs modèles de détection de phishing disponibles en open-source atteignaient péniblement 40-52% sur du français — pire que le hasard. Le marché francophone était un désert. Ce projet apporte une première réponse concrète, et montre qu'il est possible de construire une solution locale, performante et accessible.

Enseignement 4

Local > Cloud pour la sécurité

Sandmail tourne intégralement en local. Aucun email d'entreprise ne transite par une API tierce. Coût par requête : zéro. Latence : 3 secondes. Disponibilité : 100% (pas de rate limiting, pas de panne API). Pour un outil de sécurité, c'est fondamental.

Limitations connues

Ce projet ne prétend pas être parfait. Les limitations suivantes sont documentées par souci de transparence scientifique.

Données synthétiques. Les 150k emails sont générés par un LLM (Mistral Small 24B), pas issus de boîtes mail réelles. Bien que le générateur inclue des mécanismes anti-clichés et un scoring de qualité strict, il existe inévitablement un biais de distribution par rapport à des emails de production.

Évaluation sur la même distribution. Le split eval (10%) provient du même générateur que le split train (90%). Les performances en production sur des emails réels pourraient différer. Une évaluation sur un corpus tiers serait nécessaire pour valider la généralisation.

Scope linguistique. Le modèle est optimisé pour le français. Ses performances sur d'autres langues (anglais, arabe, etc.) n'ont pas été évaluées.

Classification binaire. Sandmail répond "phishing" ou "légitime". Il ne fournit pas de score de confiance continu ni de catégorisation fine du type d'attaque (bien que le modèle génère une justification textuelle).

L'auteur

Alexandre Lacroix
24 ans — Étudiant en alternance
Master Cybersécurité & Architecture Réseaux

Sandmail est né d'une conviction : la cybersécurité française mérite ses propres outils d'IA, pas des adaptations anglophones. Conçu et réalisé seul, en parallèle de mon alternance, ce projet couvre l'intégralité du pipeline — de la génération de 150 000 emails au fine-tuning d'un LLM, en passant par un benchmark comparatif multi-modèles. L'architecture a été supervisée via VibeCoding.

Le code source reste privé pour le moment et n'a pas encore été rendu public.

Me contacter sur LinkedIn
Durée du projet
~3 mois
Janvier — Mars 2026
Coût total
~25€
API + compute + benchmarks
Matériel
RTX 3080 Ti
12 GB VRAM, eGPU Thunderbolt

Tester Sandmail

Collez un email brut ou un fichier .eml et obtenez l'analyse de Sandmail en temps réel. Le modèle tourne intégralement sur un serveur personnel — aucune donnée n'est conservée.

5 requêtes / jour / utilisateur Démonstration uniquement — ne pas utiliser en production
Accéder à la démo

Avertissement : cette interface est fournie à titre de démonstration technique uniquement. Elle ne constitue pas un outil de sécurité en production. Les résultats ne doivent pas être utilisés comme seul critère de décision. Le serveur peut être indisponible ou lent selon la charge.