
Remoção de censura totalmente automática para modelos de linguagem
Heretic é uma ferramenta que remove a censura (também conhecida como "alinhamento de segurança") de modelos de linguagem baseados em transformadores sem necessidade de pós-treinamento caro. Ela combina uma implementação avançada de ablação direcional, também conhecida como "abliteration" (Arditi et al. 2024, Lai 2025 (1, 2)), com um otimizador de parâmetros baseado em TPE alimentado pelo Optuna.
Essa abordagem permite que o Heretic funcione de forma completamente automática. O Heretic encontra parâmetros de abliteração de alta qualidade minimizando conjuntamente o número de recusas e a divergência KL em relação ao modelo original. Isso resulta em um modelo sem censura que retém o máximo possível da inteligência do modelo original. Usar o Heretic não exige compreensão dos internos do transformador. Na verdade, qualquer pessoa que saiba executar um programa de linha de comando pode usar o Heretic para descensurar modelos de linguagem.
O Heretic suporta a maioria dos modelos densos, incluindo muitos modelos multimodais, várias arquiteturas MoE diferentes e até mesmo alguns modelos híbridos como Qwen3.5. Modelos puros de espaço de estado e algumas outras arquiteturas de pesquisa ainda não são suportados prontamente.
Executado sem supervisão com a configuração padrão, o Heretic pode produzir modelos descensurados que rivalizam com a qualidade de abliterações criadas manualmente por especialistas humanos:
A versão do Heretic, gerada sem qualquer esforço humano, atinge o mesmo nível de supressão de recusas que outras abliterações, mas com uma divergência KL muito menor, indicando menos dano às capacidades do modelo original.
(Você pode reproduzir esses números usando a funcionalidade de avaliação integrada do Heretic, ex: heretic --model google/gemma-3-12b-it --evaluate-model p-e-w/gemma-3-12b-it-heretic.
Observe que os valores exatos podem depender da plataforma e do hardware.
A tabela acima foi compilada usando PyTorch 2.8 em uma RTX 5090.)
É claro que métricas matemáticas e benchmarks automatizados nunca contam toda a história e não substituem a avaliação humana. Modelos gerados com Heretic têm sido bem recebidos pelos usuários (links e ênfase adicionados):
"Eu estava cético antes, mas acabei de baixar GPT-OSS 20B Heretic e caramba. Ele dá respostas longas e bem formatadas sobre tópicos sensíveis, usando exatamente as palavras sem censura que você esperaria de um modelo sem censura, produz tabelas em markdown com detalhes e tudo mais. Parece que esta é a melhor versão abliterada deste modelo até agora..." (Link para o comentário)
"Heretic GPT 20b parece ser o melhor modelo sem censura que já experimentei. Ele não destrói a inteligência do modelo e responde a prompts que normalmente seriam rejeitados pelo modelo base." (Link para o comentário)
"[Qwen3-4B-Instruct-2507-heretic] Tem sido o melhor modelo abliterado não quantizado que consegui executar em 16gb de vram." (Link para o comentário)
Modelos do Heretic também foram avaliados independentemente usando métricas padrão como MMLU e GSM8K, e descobriu-se que se comparam favoravelmente com modelos produzidos por ferramentas de abliteração concorrentes: 1, 2.
A comunidade criou e publicou bem mais de 4000 modelos com o Heretic.
Prepare um ambiente Python 3.10+ com PyTorch 2.2+ instalado conforme apropriado para seu hardware. Em seguida, execute:
pip install -U heretic-llm
heretic Qwen/Qwen3-4B-Instruct-2507
Substitua Qwen/Qwen3-4B-Instruct-2507 pelo modelo que você deseja descensurar.
[!IMPORTANT]
Embora PyTorch 2.2 seja a versão mínima necessária para o Heretic funcionar, alguns modelos e configurações podem exigir recursos encontrados apenas em versões posteriores. Por exemplo, carregar modelos quantizados em MXFP4 como gpt-oss usa
torch.accelerator, que foi adicionado no PyTorch 2.6.
[!TIP]
O Heretic usa uv para gerenciamento de dependências, e o repositório inclui um arquivo
uv.lockque fixa a versão de cada pacote. Se você já usa uv (e provavelmente deveria!), pode simplesmente clonar o repositório e executar o Heretic comuv run heretic, o que garante que suas dependências correspondam às usadas pelos desenvolvedores, melhorando a confiabilidade e a segurança.
O processo é totalmente automático e não requer configuração; no entanto,
o Heretic possui uma variedade de parâmetros de configuração que podem ser alterados para
maior controle. Execute heretic --help para ver as opções de linha de comando disponíveis,
ou veja config.default.toml se preferir usar um
arquivo de configuração.
No início de uma execução, o Heretic avalia o sistema para determinar
o tamanho de lote ideal para aproveitar ao máximo o hardware disponível.
Em uma RTX 3090, com a configuração padrão, descensurar
Qwen3-4B-Instruct-2507
leva cerca de 20 a 30 minutos. Observe que o Heretic suporta quantização de modelos com
bitsandbytes, o que pode reduzir drasticamente a quantidade de VRAM necessária para processar
modelos. Defina a opção quantization como bnb_4bit para ativar a quantização.
Após o Heretic terminar de descensurar um modelo, você tem a opção de salvar o modelo, enviá-lo para o Hugging Face, conversar com ele para testar seu funcionamento, executar benchmarks padrão nele, ou qualquer combinação dessas ações.
Além de sua função principal de remover a censura do modelo, o Heretic também
fornece recursos projetados para apoiar a pesquisa sobre a semântica dos internos do modelo
(interpretabilidade). Para usar esses recursos, você precisa instalar o Heretic com o
extra opcional research:
pip install -U heretic-llm[research]
Isso lhe dá acesso à seguinte funcionalidade:
--plot-residualsQuando executado com esta flag, o Heretic irá:
Veja o arquivo de configuração para opções que permitem controlar vários aspectos dos gráficos gerados.
Observe que PaCMAP é uma operação cara executada na CPU. Para modelos maiores, pode levar uma hora ou mais para calcular as projeções para todas as camadas.
--print-residual-geometrySe você estiver interessado em uma análise quantitativa de como os vetores residuais para prompts "prejudiciais" e "inócuos" se relacionam, esta flag fornece a seguinte tabela, repleta de métricas que podem facilitar a compreensão do mesmo (para gemma-3-270m-it neste caso):
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓
┃ Layer ┃ 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 = média dos vetores residuais para prompts bons
g* = mediana geométrica dos vetores residuais para prompts bons
b = média dos vetores residuais para prompts ruins
b* = mediana geométrica dos vetores residuais para prompts ruins
r = direção de recusa para as médias (isto é, b - g)
r* = direção de recusa para as medianas geométricas (isto é, b* - g*)
S(x,y) = similaridade cosseno de x e y
|x| = norma L2 de x
Silh = Coeficiente de silhueta médio dos resíduos para clusters bom/ruim
O Heretic implementa uma variante parametrizada de ablação direcional. Para cada componente do transformador suportado (atualmente, a projeção de saída da atenção e a projeção de saída do MLP), ele identifica as matrizes associadas em cada camada do transformador e as ortogonaliza em relação à "direção de recusa" relevante, inibindo a expressão dessa direção no resultado das multiplicações com essa matriz.
As direções de recusa são computadas para cada camada como uma diferença de médias entre os resíduos do primeiro token para prompts "prejudiciais" e "inócuos" de exemplo.
O processo de ablação é controlado por vários parâmetros otimizáveis:
direction_index: O índice de uma direção de recusa, ou o valor especial
per layer, indicando que cada camada deve ser ablada usando a direção de recusa
associada a essa camada.max_weight, max_weight_position, min_weight e min_weight_distance:
Para cada componente, esses parâmetros descrevem a forma e a posição do
kernel de peso de ablação sobre as camadas. O diagrama a seguir ilustra isso:
As principais inovações do Heretic em relação aos sistemas de abliteração existentes são:
Conheço as seguintes implementações públicas de técnicas de abliteração:
Observe que o Heretic foi escrito do zero e não reutiliza código de nenhum desses projetos.
O desenvolvimento do Heretic foi informado por:
Se você usar o Heretic em sua pesquisa, por favor, cite-o usando a seguinte entrada BibTeX:
@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}}
}
Copyright © 2025-2026 Philipp Emanuel Weidmann ([email protected]) + contribuidores
Este programa é software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral Affero GNU, conforme publicada pela Free Software Foundation, seja a versão 3 da Licença, ou (a seu critério) qualquer versão posterior.
Este programa é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM PROPÓSITO PARTICULAR. Veja a Licença Pública Geral Affero GNU para mais detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral Affero GNU junto com este programa. Caso contrário, veja https://www.gnu.org/licenses/.
Ao contribuir para este projeto, você concorda em liberar suas contribuições sob a mesma licença.
| Modelo | Recusas para prompts "prejudiciais" | Divergência KL do modelo original para prompts "inócuos" |
|---|
| google/gemma-3-12b-it (original) | 97/100 | 0 (por definição) |
| mlabonne/gemma-3-12b-it-abliterated-v2 | 3/100 | 1.04 |
| huihui-ai/gemma-3-12b-it-abliterated | 3/100 | 0.45 |
| p-e-w/gemma-3-12b-it-heretic (nosso) | 3/100 | 0.16 |