
Modelo bidirecional de classificação de tokens para detecção e mascaramento de PII em texto, com CLI para redação, avaliação e ajuste fino on-premises.
O OpenAI Privacy Filter é um modelo bidirecional de classificação de tokens para detecção e mascaramento de informações de identificação pessoal (PII) em texto. Ele é destinado a fluxos de trabalho de sanitização de dados de alto rendimento, nos quais as equipes precisam de um modelo que possam executar localmente (on-premises), que seja rápido, sensível ao contexto e ajustável.
O OpenAI Privacy Filter é pré-treinado de forma autorregressiva para chegar a um checkpoint com arquitetura semelhante ao gpt-oss, embora de tamanho menor. Em seguida, convertemos esse checkpoint em um classificador bidirecional de tokens sobre uma taxonomia de rótulos de privacidade e realizamos pós-treinamento com uma perda de classificação supervisionada. (Para detalhes de arquitetura sobre o gpt-oss, consulte o model card do gpt-oss.) Em vez de gerar texto token a token, este modelo rotula uma sequência de entrada em uma única passagem direta (forward pass) e, em seguida, decodifica spans coerentes com um procedimento Viterbi restrito. Para cada token de entrada, o modelo prevê uma distribuição de probabilidade sobre a taxonomia de rótulos, que consiste em 8 categorias de saída descritas abaixo.
Destaques:
Este repositório contém o código local, a CLI e os ativos de exemplo usados para executar, avaliar e fazer fine-tuning de checkpoints do Privacy Filter. Ele é destinado a equipes que desejam inspecionar a implementação diretamente e operar o modelo em seu próprio ambiente.
Recursos do repositório: License e Security Policy.
pip install -e .
Depois disso, você terá um script Python opf que pode ser executado diretamente ou via python -m opf. O script pode ser usado de 3 maneiras distintas, conforme descrito abaixo.
Por padrão, opf procura um modelo no diretório apontado pela variável OPF_CHECKPOINT, ou em ~/.opf/privacy_filter. Se um modelo não for encontrado no local ~/.opf/privacy_filter, ele será baixado.
opf "Alice was born on 1990-01-02."
O código suporta execução tanto em GPU (por padrão) quanto em CPU. Para executar em CPU, use a flag --device cpu:
opf --device cpu "Alice was born on 1990-01-02."
Para substituir o checkpoint padrão, passe --checkpoint:
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."
O modo de redação suporta redigir um arquivo inteiro de uma só vez
opf -f /path/to/file
A redação também pode ser realizada via pipes, para suportar one-liners complexos:
cat /path/to/file | grep -e 'some_pattern' | opf
Se nenhuma entrada for fornecida, opf iniciará no modo interativo. Nesse modo, para cada exemplo de entrada, a CLI imprime uma saída JSON estruturada, usando pré-visualizações com códigos de cores ANSI se o terminal suportar. Essas opções podem ser controladas por flags.
Consulte opf redact --help para mais flags e informações sobre o modo de redação.
opf eval examples/data/sample_eval_five_examples.jsonl
Os fixtures de avaliação de exemplo em examples/data/sample_eval_five_examples*.jsonl são apenas dados sintéticos de exemplo e não descrevem pessoas reais ou registros sensíveis reais. Consulte examples/data/README.md.
Consulte opf eval --help para mais flags e informações sobre o modo de avaliação.
opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint
Consulte opf train --help para mais flags e informações sobre o modo de fine-tuning.
opf/__main__.py: ponto de entrada unificado da CLI para os modos redact, eval e train.opf/_api.py: API voltada para Python sobre a pilha de runtime e decodificação.opf/_cli/: análise de argumentos de linha de comando e auxiliares de renderização de terminal.opf/_core/: carregamento de runtime, conversão de spans e lógica de decodificação compartilhada.opf/_eval/: carregamento de conjuntos de dados, pré-processamento, métricas e executores de avaliação.opf/_train/: análise de argumentos de fine-tuning local e executores de treinamento.opf/_model/: implementação do transformer, configuração de checkpoint e carregamento de pesos.examples/data/: arquivos de avaliação de exemplo e conjuntos de dados de demonstração de fine-tuning reproduzíveis.examples/scripts/finetuning/: harnesses executáveis de demonstração de fine-tuning.FINETUNING.md: guia focado no fluxo de trabalho de fine-tuning e nos scripts de demonstração.OUTPUT_SCHEMAS.md: formatos de resposta JSON e payload de exportação.EVAL_AND_OUTPUT_MODES.md: descrição dos modos de saída para redação e avaliação.O Privacy Filter é um modelo bidirecional de classificação de tokens com decodificação de spans. Ele é treinado em fases, começando com pré-treinamento autorregressivo. O modelo de linguagem pré-treinado é então modificado e pós-treinado como um classificador bidirecional de tokens com atenção em banda (banded attention) de tamanho de banda 128 (janela de atenção efetiva: 257 tokens, incluindo o próprio). Isso significa:
Arquiteturalmente, a implementação neste repositório é uma pilha no estilo encoder transformer com pré-norm, com:
d_model = 640.Em relação a abordagens autorregressivas iterativas, este design permite que todos os tokens sejam rotulados em uma única passagem, o que melhora o rendimento. Em relação a abordagens clássicas de pré-treinamento de modelos de linguagem mascarados (masked-LM), esta é uma conversão pós-treinamento de um modelo autorregressivo, em vez de uma configuração nativa de masked-LM.
O Privacy Filter pode detectar 8 categorias de spans de privacidade:
account_numberprivate_addressprivate_emailprivate_personprivate_phoneprivate_urlprivate_datesecret