Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Uncensored-AI — Suppression entièrement automatique de la censure pour les modèles de langage | Kitploit
Outils/GitHubGitHub/0xsojalsec/uncensored-ai
Apprentissage AutomatiqueArticles et RechercheApprentissage et ÉducationSécurité de l'IAAttaque Adversariale
GitHub0xsojalsec/uncensored-ai

Uncensored-AI

Suppression entièrement automatique de la censure pour les modèles de langage

Voir le dépôt
23152il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Logo

Heretic : Suppression automatique de la censure pour les modèles de langage

Discord Matrix Follow us on Hugging Face Codeberg mirror

#1 Repository of the Day

Heretic est un outil qui supprime la censure (alias « alignment de sécurité ») des modèles de langage basés sur transformer sans post-entraînement coûteux. Il combine une implémentation avancée de l'ablation directionnelle, également connue sous le nom d'« abliteration » (Arditi et al. 2024, Lai 2025 (1, 2)), avec un optimiseur de paramètres basé sur TPE propulsé par Optuna.

Cette approche permet à Heretic de fonctionner de manière complètement automatique. Heretic trouve des paramètres d'abliteration de haute qualité en minimisant conjointement le nombre de refus et la divergence KL par rapport au modèle d'origine. Il en résulte un modèle décensuré qui conserve autant que possible l'intelligence du modèle d'origine. Utiliser Heretic ne nécessite pas de comprendre les mécanismes internes des transformers. En fait, toute personne sachant exécuter un programme en ligne de commande peut utiliser Heretic pour décensurer des modèles de langage.

Heretic prend en charge la plupart des modèles denses, y compris de nombreux modèles multimodaux, plusieurs architectures MoE différentes, et même certains modèles hybrides comme Qwen3.5. Les modèles purement state-space et certaines autres architectures de recherche ne sont pas encore pris en charge nativement.

Capture d'écran

 

Exécuté sans supervision avec la configuration par défaut, Heretic peut produire des modèles décensurés dont la qualité rivalise avec les abliterations créées manuellement par des experts humains :

La version Heretic, générée sans aucun effort humain, atteint le même niveau de suppression des refus que les autres abliterations, mais avec une divergence KL beaucoup plus faible, indiquant moins de dommages aux capacités du modèle d'origine. (Vous pouvez reproduire ces chiffres en utilisant la fonctionnalité d'évaluation intégrée de Heretic, par exemple heretic --model google/gemma-3-12b-it --evaluate-model p-e-w/gemma-3-12b-it-heretic. Notez que les valeurs exactes peuvent dépendre de la plateforme et du matériel. Le tableau ci‑dessus a été compilé avec PyTorch 2.8 sur un RTX 5090.)

Bien sûr, les métriques mathématiques et les benchmarks automatisés ne racontent jamais toute l'histoire et ne remplacent pas l'évaluation humaine. Les modèles générés avec Heretic ont été bien accueillis par les utilisateurs (liens et emphase ajoutés) :

« J'étais sceptique avant, mais je viens de télécharger le modèle GPT-OSS 20B Heretic et, purée. Il donne des réponses longues et bien formatées sur des sujets sensibles, en utilisant exactement les mots non censurés que l'on attend d'un modèle non censuré, produit des tableaux en markdown avec des détails et tout. On dirait que c'est la meilleure version abliterée de ce modèle jusqu'à présent... » (Lien vers le commentaire)

« Heretic GPT 20b semble être le meilleur modèle non censuré que j'aie essayé jusqu'à présent. Il ne détruit pas l'intelligence du modèle et répond aux requêtes qui seraient normalement rejetées par le modèle de base. » (Lien vers le commentaire)

« [ Qwen3-4B-Instruct-2507-heretic ] a été le meilleur modèle abliteré non quantifié que j'aie pu faire tourner sur 16 Go de VRAM. » (Lien vers le commentaire)

Les modèles Heretic ont également été évalués indépendamment à l'aide de métriques standard comme MMLU et GSM8K, et se sont avérés comparables favorablement aux modèles produits par d'autres outils d'abliteration : 1, 2.

La communauté a créé et publié bien plus de 4000 modèles avec Heretic.

Utilisation

Préparez un environnement Python 3.10+ avec PyTorch 2.2+ installé de manière appropriée pour votre matériel. Exécutez ensuite :

root@kitploit:~
pip install -U heretic-llm
heretic Qwen/Qwen3-4B-Instruct-2507

Remplacez Qwen/Qwen3-4B-Instruct-2507 par le modèle que vous souhaitez décensurer.

[!IMPORTANT]

Bien que PyTorch 2.2 soit la version minimale nécessaire pour qu'Heretic fonctionne, certains modèles et configurations peuvent nécessiter des fonctionnalités uniquement disponibles dans des versions ultérieures. Par exemple, le chargement de modèles quantifiés MXFP4 comme gpt-oss utilise torch.accelerator, qui a été ajouté dans PyTorch 2.6.

[!TIP]

Heretic utilise uv pour la gestion des dépendances, et le dépôt inclut un fichier uv.lock épinglant chaque version de paquet. Si vous utilisez déjà uv (et vous devriez probablement le faire !), vous pouvez simplement cloner le dépôt et exécuter Heretic avec uv run heretic, ce qui garantit que vos dépendances correspondent à celles utilisées par les développeurs, améliorant ainsi la fiabilité et la sécurité.

Le processus est entièrement automatique et ne nécessite pas de configuration ; cependant, Heretic dispose de divers paramètres de configuration qui peuvent être modifiés pour un contrôle plus poussé. Exécutez heretic --help pour voir les options de ligne de commande disponibles, ou consultez config.default.toml si vous préférez utiliser un fichier de configuration.

Au début d'une exécution, Heretic évalue le système pour déterminer la taille de lot optimale afin de tirer le meilleur parti du matériel disponible. Sur un RTX 3090, avec la configuration par défaut, la décensuration de Qwen3-4B-Instruct-2507 prend environ 20 à 30 minutes. Notez qu'Heretic prend en charge la quantification de modèles avec bitsandbytes, ce qui peut réduire considérablement la quantité de VRAM nécessaire pour traiter les modèles. Définissez l'option quantization sur bnb_4bit pour activer la quantification.

Une fois qu'Heretic a terminé la décensuration d'un modèle, vous avez la possibilité de sauvegarder le modèle, de le télécharger sur Hugging Face, de discuter avec lui pour tester son fonctionnement, d'exécuter des benchmarks standard, ou toute combinaison de ces actions.

Fonctionnalités de recherche

En plus de sa fonction principale de suppression de la censure des modèles, Heretic propose également des fonctionnalités conçues pour soutenir la recherche sur la sémantique des mécanismes internes des modèles (interprétabilité). Pour utiliser ces fonctionnalités, vous devez installer Heretic avec l'option supplémentaire research :

root@kitploit:~
pip install -U heretic-llm[research]

Cela vous donne accès aux fonctionnalités suivantes :

Générer des graphiques des vecteurs résiduels en passant --plot-residuals

Lorsqu'il est exécuté avec ce drapeau, Heretic va :

  1. Calculer les vecteurs résiduels (états cachés) pour le premier token de sortie, pour chaque couche du transformer, à la fois pour les requêtes « nuisibles » et « inoffensives ».
  2. Effectuer une projection PaCMAP de l'espace résiduel vers un espace 2D.
  3. Aligner à gauche et à droite les projections des résidus « nuisibles »/« inoffensifs » par leurs médianes géométriques afin de rendre les projections des couches consécutives plus similaires. De plus, PaCMAP est initialisé avec les projections de la couche précédente pour chaque nouvelle couche, minimisant les transitions perturbatrices.
  4. Tracer les projections sous forme de nuage de points, générant une image PNG pour chaque couche.
  5. Générer une animation montrant comment les résidus se transforment entre les couches, sous forme de GIF animé.
Graphique des vecteurs résiduels

Voir le fichier de configuration pour les options qui vous permettent de contrôler divers aspects des graphiques générés.

Notez que PaCMAP est une opération coûteuse effectuée sur le CPU. Pour les grands modèles, le calcul des projections pour toutes les couches peut prendre une heure ou plus.

Afficher les détails de la géométrie résiduelle en passant --print-residual-geometry

Si vous êtes intéressé par une analyse quantitative de la façon dont les vecteurs résiduels pour les requêtes « nuisibles » et « inoffensives » se rapportent les uns aux autres, ce drapeau vous donne le tableau suivant, rempli de métriques qui peuvent faciliter la compréhension (pour gemma-3-270m-it dans ce cas) :

root@kitploit:~
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓
┃ Couche ┃ S(g,b) ┃ S(g*,b*) ┃  S(g,r) ┃ S(g*,r*) ┃  S(b,r) ┃ S(b*,r*) ┃      |g| ┃     |g*| ┃      |b| ┃     |b*| ┃     |r| ┃    |r*| ┃   Silh ┃
┡━━━━━━━╇━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩
│     1 │ 1.0000 │   1.0000 │ -0.4311 │  -0.4906 │ -0.4254 │  -0.4847 │   170.29 │   170.49 │   169.78 │   169.85 │    1.19 │    1.31 │ 0.0480 │
│     2 │ 1.0000 │   1.0000 │  0.4297 │   0.4465 │  0.4365 │   0.4524 │   768.55 │   768.77 │   771.32 │   771.36 │    6.39 │    5.76 │ 0.0745 │
│     3 │ 0.9999 │   1.0000 │ -0.5699 │  -0.5577 │ -0.5614 │  -0.5498 │  1020.98 │  1021.13 │  1013.80 │  1014.71 │   12.70 │   11.60 │ 0.0920 │
│     4 │ 0.9999 │   1.0000 │  0.6582 │   0.6553 │  0.6659 │   0.6627 │  1356.39 │  1356.20 │  1368.71 │  1367.95 │   18.62 │   17.84 │ 0.0957 │
│     5 │ 0.9987 │   0.9990 │ -0.6880 │  -0.6761 │ -0.6497 │  -0.6418 │   766.54 │   762.25 │   731.75 │   732.42 │   51.97 │   45.24 │ 0.1018 │
│     6 │ 0.9998 │   0.9998 │ -0.1983 │  -0.2312 │ -0.1811 │  -0.2141 │  2417.35 │  2421.08 │  2409.18 │  2411.40 │   43.06 │   43.47 │ 0.0900 │
│     7 │ 0.9998 │   0.9997 │ -0.5258 │  -0.5746 │ -0.5072 │  -0.5560 │  3444.92 │  3474.99 │  3400.01 │  3421.63 │   86.94 │   94.38 │ 0.0492 │
│     8 │ 0.9990 │   0.9991 │  0.8235 │   0.8312 │  0.8479 │   0.8542 │  4596.54 │  4615.62 │  4918.32 │  4934.20 │  384.87 │  377.87 │ 0.2278 │
│     9 │ 0.9992 │   0.9992 │  0.5335 │   0.5441 │  0.5678 │   0.5780 │  5322.30 │  5316.96 │  5468.65 │  5466.98 │  265.68 │  267.28 │ 0.1318 │
│    10 │ 0.9974 │   0.9973 │  0.8189 │   0.8250 │  0.8579 │   0.8644 │  5328.81 │  5325.63 │  5953.35 │  5985.15 │  743.95 │  779.74 │ 0.2863 │
│    11 │ 0.9977 │   0.9978 │  0.4262 │   0.4045 │  0.4862 │   0.4645 │  9644.02 │  9674.06 │  9983.47 │  9990.28 │  743.28 │  726.99 │ 0.1576 │
│    12 │ 0.9904 │   0.9907 │  0.4384 │   0.4077 │  0.5586 │   0.5283 │ 10257.40 │ 10368.50 │ 11114.51 │ 11151.21 │ 1711.18 │ 1664.69 │ 0.1890 │
│    13 │ 0.9867 │   0.9874 │  0.4007 │   0.3680 │  0.5444 │   0.5103 │ 12305.12 │ 12423.75 │ 13440.31 │ 13432.47 │ 2386.43 │ 2282.47 │ 0.1293 │
│    14 │ 0.9921 │   0.9922 │  0.3198 │   0.2682 │  0.4364 │   0.3859 │ 16929.16 │ 17080.37 │ 17826.97 │ 17836.03 │ 2365.23 │ 2301.87 │ 0.1282 │
│    15 │ 0.9846 │   0.9850 │  0.1198 │   0.0963 │  0.2913 │   0.2663 │ 16858.58 │ 16949.44 │ 17496.00 │ 17502.88 │ 3077.08 │ 3029.60 │ 0.1611 │
│    16 │ 0.9686 │   0.9689 │ -0.0029 │  -0.0254 │  0.2457 │   0.2226 │ 18912.77 │ 19074.86 │ 19510.56 │ 19559.62 │ 4848.35 │ 4839.75 │ 0.1516 │
│    17 │ 0.9782 │   0.9784 │ -0.0174 │  -0.0381 │  0.1908 │   0.1694 │ 27098.09 │ 27273.00 │ 27601.12 │ 27653.12 │ 5738.19 │ 5724.21 │ 0.1641 │
│    18 │ 0.9184 │   0.9196 │  0.1343 │   0.1430 │  0.5155 │   0.5204 │   190.16 │   190.35 │   219.91 │   220.62 │   87.82 │   87.59 │ 0.1855 │
└───────┴────────┴──────────┴─────────┴──────────┴─────────┴──────────┴──────────┴──────────┴──────────┴──────────┴─────────┴─────────┴────────┘
g = moyenne des vecteurs résiduels pour les bonnes requêtes
g* = médiane géométrique des vecteurs résiduels pour les bonnes requêtes
b = moyenne des vecteurs résiduels pour les mauvaises requêtes
b* = médiane géométrique des vecteurs résiduels pour les mauvaises requêtes
r = direction de refus pour les moyennes (c.-à-d. b - g)
r* = direction de refus pour les médianes géométriques (c.-à-d. b* - g*)
S(x,y) = similarité cosinus entre x et y
|x| = norme L2 de x
Silh = coefficient de silhouette moyen des résidus pour les clusters bon/mauvais

Comment fonctionne Heretic

Heretic implémente une variante paramétrée de l'ablation directionnelle. Pour chaque composant de transformer pris en charge (actuellement, la projection de sortie de l'attention et la projection descendante du MLP), il identifie les matrices associées dans chaque couche du transformer, et les orthogonalise par rapport à la « direction de refus » pertinente, inhibant l'expression de cette direction dans le résultat des multiplications avec cette matrice.

Les directions de refus sont calculées pour chaque couche comme une différence des moyennes entre les résidus du premier token pour les requêtes « nuisibles » et « inoffensives ».

Le processus d'ablation est contrôlé par plusieurs paramètres optimisables :

  • direction_index : Soit l'indice d'une direction de refus, soit la valeur spéciale per layer, indiquant que chaque couche doit être ablée en utilisant la direction de refus associée à cette couche.
  • max_weight, max_weight_position, min_weight et min_weight_distance : Pour chaque composant, ces paramètres décrivent la forme et la position du noyau de poids d'ablation sur les couches. Le diagramme suivant illustre cela :
Explication

 

Les principales innovations d'Heretic par rapport aux systèmes d'abliteration existants sont :

  • La forme du noyau de poids d'ablation est très flexible, ce qui, combiné à l'optimisation automatique des paramètres, peut améliorer le compromis conformité/qualité. Les poids d'ablation non constants ont été explorés précédemment par Maxime Labonne dans gemma-3-12b-it-abliterated-v2.
  • L'indice de direction de refus est un nombre flottant plutôt qu'un entier. Pour les valeurs non entières, les deux vecteurs de direction de refus les plus proches sont interpolés linéairement. Cela ouvre un vaste espace de directions supplémentaires au-delà de celles identifiées par le calcul de la différence des moyennes, et permet souvent au processus d'optimisation de trouver une meilleure direction que celle appartenant à une couche individuelle.
  • Les paramètres d'ablation sont choisis séparément pour chaque composant. J'ai constaté que les interventions sur le MLP ont tendance à être plus dommageables pour le modèle que les interventions sur l'attention, donc utiliser des poids d'ablation différents peut permettre d'extraire des performances supplémentaires.

Travaux antérieurs

Je connais les implémentations publiques suivantes des techniques d'abliteration :

  • AutoAbliteration
  • abliterator.py
  • wassname's Abliterator
  • ErisForge
  • Removing refusals with HF Transformers
  • deccp

Notez qu'Heretic a été écrit à partir de zéro et ne réutilise pas de code provenant de ces projets.

Remerciements

Le développement d'Heretic a été informé par :

  • L'article original sur l'abliteration (Arditi et al. 2024)
  • L'article de Maxime Labonne sur l'abliteration, ainsi que certains détails des fiches techniques de ses propres modèles abliterés (voir ci-dessus)
  • Les articles de Jim Lai décrivant l'« abliteration projetée » et l'« abliteration biprojetée préservant la norme »

Citation

Si vous utilisez Heretic pour vos recherches, veuillez le citer en utilisant l'entrée BibTeX suivante :

root@kitploit:~
@misc{heretic,
  author = {Weidmann, Philipp Emanuel},
  title = {Heretic: Fully automatic censorship removal for language models},
  year = {2025},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/p-e-w/heretic}}
}

Licence

Copyright © 2025-2026 Philipp Emanuel Weidmann ([email protected]) + contributeurs

Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier selon les termes de la GNU Affero General Public License telle que publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre discrétion) toute version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la GNU Affero General Public License pour plus de détails.

Vous devriez avoir reçu une copie de la GNU Affero General Public License avec ce programme. Sinon, consultez https://www.gnu.org/licenses/.

En contribuant à ce projet, vous acceptez de publier vos contributions sous la même licence.

Télécharger l’outil
ModèleRefus pour les requêtes « nuisibles »Divergence KL par rapport au modèle d'origine pour les requêtes « inoffensives »
google/gemma-3-12b-it (original)97/1000 (par définition)
mlabonne/gemma-3-12b-it-abliterated-v23/1001.04
huihui-ai/gemma-3-12b-it-abliterated3/1000.45
p-e-w/gemma-3-12b-it-heretic (le nôtre)3/1000.16