Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
privacy-filter — Modello bidirezionale di token-classification per il rilevamento e la mascheratura di PII nel testo, con CLI per redazione, valutazione e finetuning on-premises. | Kitploit
Strumenti/GitHubGitHub/openai/privacy-filter
Strumenti DifensiviEsfiltrazione DatiRaccolta InformazioniPrivacyRilevamento SegretiMachine LearningSicurezza dell'IA
GitHubopenai/privacy-filter

privacy-filter

Modello bidirezionale di token-classification per il rilevamento e la mascheratura di PII nel testo, con CLI per redazione, valutazione e finetuning on-premises.

Vedi Repository
2.7k2424 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

OpenAI Privacy Filter

OpenAI Privacy Filter è un modello bidirezionale di classificazione dei token per il rilevamento e la mascheratura di informazioni di identificazione personale (PII) nel testo. È pensato per flussi di lavoro di sanitizzazione dei dati ad alto throughput, in cui i team necessitano di un modello eseguibile on-premises che sia veloce, consapevole del contesto e regolabile.

OpenAI Privacy Filter è preaddestrato in modo autoregressivo per ottenere un checkpoint con un'architettura simile a gpt-oss, sebbene di dimensioni inferiori. Abbiamo poi convertito quel checkpoint in un classificatore bidirezionale di token su una tassonomia di etichette di privacy, e lo abbiamo post-addestrato con una loss di classificazione supervisionata. (Per i dettagli sull'architettura di gpt-oss, si veda la model card di gpt-oss.) Invece di generare testo token per token, questo modello etichetta una sequenza di input in un singolo forward pass, quindi decodifica span coerenti con una procedura Viterbi vincolata. Per ogni token di input, il modello predice una distribuzione di probabilità sulla tassonomia di etichette, che consiste di 8 categorie di output descritte di seguito.

Punti salienti:

  • Licenza permissiva Apache 2.0: ideale per sperimentazione, personalizzazione e deployment commerciale.
  • Dimensioni ridotte: funziona in un browser web o su un laptop – 1,5B parametri totali e 50M parametri attivi.
  • Fine-tuning: adatta il modello a specifiche distribuzioni di dati tramite un fine-tuning semplice ed efficiente in termini di dati.
  • Contesto lungo: una finestra di contesto di 128.000 token consente di elaborare testi lunghi con throughput elevato e senza chunking.
  • Controllo a runtime: configura i compromessi precisione/recall e le lunghezze degli span rilevati tramite punti operativi preimpostati.

Questo Repo

Questo repository contiene il codice locale, la CLI e gli asset di esempio usati per eseguire, valutare ed effettuare il fine-tuning dei checkpoint di Privacy Filter. È pensato per i team che vogliono ispezionare direttamente l'implementazione e utilizzare il modello nel proprio ambiente.

Risorse del repository: License e Security Policy.

Come Usarlo

  1. Installa il pacchetto localmente:
root@kitploit:~
pip install -e .

Dopodiché, avrai uno script python opf che può essere eseguito direttamente o tramite python -m opf. Lo script può essere usato in 3 modi distinti, come descritto di seguito.

  1. Esegui la redazione one-shot:

Per impostazione predefinita, opf cerca un modello nella directory indicata dalla variabile OPF_CHECKPOINT, oppure in ~/.opf/privacy_filter. Se un modello non viene trovato nella posizione ~/.opf/privacy_filter, verrà scaricato.

root@kitploit:~
opf "Alice was born on 1990-01-02."

Il codice supporta l'esecuzione sia su GPU (per impostazione predefinita) sia su CPU. Per eseguire su CPU, usa il flag --device cpu:

root@kitploit:~
opf --device cpu "Alice was born on 1990-01-02."

Per sovrascrivere il checkpoint predefinito, passa --checkpoint:

root@kitploit:~
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."

La modalità di redazione supporta la redazione di un intero file in una sola volta

root@kitploit:~
opf -f /path/to/file

La redazione può anche essere eseguita tramite pipe, per supportare one-liner complesse:

root@kitploit:~
cat /path/to/file | grep -e 'some_pattern' | opf

Se non viene fornito alcun input, opf si avvierà in modalità interattiva. In questa modalità, per ogni esempio di input, la CLI stampa un output JSON strutturato, usando anteprime con codifica a colori ANSI se il terminale le supporta. Queste opzioni possono essere controllate tramite flag.

Consulta opf redact --help per ulteriori flag e informazioni sulla modalità di redazione.

  1. Esegui la valutazione su un dataset etichettato:
root@kitploit:~
opf eval examples/data/sample_eval_five_examples.jsonl

I fixture di valutazione di esempio sotto examples/data/sample_eval_five_examples*.jsonl sono solo dati di esempio sintetici e non descrivono persone reali o record sensibili reali. Vedi examples/data/README.md.

Consulta opf eval --help per ulteriori flag e informazioni sulla modalità di valutazione.

  1. Esegui il fine-tuning sul tuo dataset etichettato:
root@kitploit:~
opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint

Consulta opf train --help per ulteriori flag e informazioni sulla modalità di fine-tuning.

Struttura

  • opf/__main__.py: entrypoint CLI unificato per le modalità redact, eval e train.
  • opf/_api.py: API rivolta a Python sopra lo stack di runtime e decodifica.
  • opf/_cli/: parsing degli argomenti da riga di comando e helper per il rendering nel terminale.
  • opf/_core/: caricamento del runtime, conversione degli span e logica di decodifica condivisa.
  • opf/_eval/: caricamento dei dataset, preprocessing, metriche e runner di valutazione.
  • opf/_train/: parsing degli argomenti per il fine-tuning locale e runner di addestramento.
  • opf/_model/: implementazione del transformer, configurazione del checkpoint e caricamento dei pesi.
  • examples/data/: file di valutazione di esempio più dataset dimostrativi riproducibili per il fine-tuning.
  • examples/scripts/finetuning/: harness dimostrativi eseguibili per il fine-tuning.
  • FINETUNING.md: guida focalizzata sul flusso di lavoro di fine-tuning e sugli script dimostrativi.
  • OUTPUT_SCHEMAS.md: formati dei payload di risposta JSON e di esportazione.
  • EVAL_AND_OUTPUT_MODES.md: descrizione delle modalità di output per redazione e valutazione.

Dettagli del Modello

Descrizione del Modello

Privacy Filter è un modello bidirezionale di classificazione dei token con decodifica degli span. È addestrato in fasi, iniziando con un preaddestramento autoregressivo. Il modello linguistico preaddestrato viene poi modificato e post-addestrato come classificatore bidirezionale di token con attenzione a bande di dimensione 128 (finestra di attenzione effettiva: 257 token incluso self). Ciò significa:

  • Il modello base è un checkpoint preaddestrato autoregressivo.
  • La testa di output del modello linguistico è sostituita con una testa di classificazione dei token su etichette di privacy.
  • Il post-addestramento è una classificazione supervisionata a livello di token anziché una predizione del token successivo.
  • L'inferenza applica una decodifica di sequenza vincolata per produrre etichette di span BIOES (Begin, Inside, Outside, End, Single) coerenti.

Architetturalmente, l'implementazione in questo repo è uno stack in stile transformer encoder con pre-norm, con:

  • token embeddings
  • 8 blocchi transformer ripetuti
  • attenzione grouped-query con rotary positional embeddings, con 14 teste query e 2 teste KV (dimensione del gruppo = 7 query per testa KV)
  • blocchi feed-forward sparse mixture-of-experts con 128 esperti totali (routing top-4 per token)
  • una testa finale di classificazione dei token su etichette di privacy (anziché token del vocabolario del linguaggio naturale), con larghezza del residual stream d_model = 640.

Rispetto agli approcci autoregressivi iterativi, questo design consente di etichettare tutti i token in un solo passaggio, il che migliora il throughput. Rispetto agli approcci classici di preaddestramento con masked-language-model, questa è una conversione post-addestramento di un modello autoregressivo anziché un setup nativo di masked-LM.

Forma dell'Output

Privacy Filter può rilevare 8 categorie di span di privacy:

  1. account_number
  2. private_address
  3. private_email
  4. private_person
  5. private_phone
  6. private_url
  7. private_date
  8. secret

Per eseguire la classificazione dei token, ogni categoria di span non-background viene espansa in classi di token con tag di confine: B-<label>, I-<label>, E-<label>, S-<label>, più la classe di background, O. Quindi il numero totale di classi di output a livello di token è 33: 1 classe di background + 8 etichette di span * 4 tag di confine = 33 classi. Ciò significa che la testa di output emette 33 logit per ogni token. Per una sequenza di lunghezza T, l'output ha forma [T, 33]; per un batch di dimensione B, ha forma [B, T, 33].

Il vocabolario delle etichette dei token consiste nell'etichetta di background O più le varianti con tag BIOES di ciascuna categoria di privacy: account_number, private_address, private_email, private_person, private_phone, private_url, private_date e secret. In altre parole, per ogni categoria, il modello predice le forme B-, I-, E- e S- corrispondenti a span di inizio, interno, fine e token singolo. Al momento dell'inferenza, questi logit per token vengono decodificati in etichette di span BIOES coerenti usando una decodifica di sequenza vincolata.

Motivazione e Calibrazione della Decodifica di Sequenza

Motivazione

Dopo che il classificatore di token produce i logit per token, decodifichiamo le etichette con un decoder Viterbi vincolato usando uno scoring di transizione a catena lineare, anziché prendere un argmax indipendente per ogni token. Il decoder impone transizioni di confine BIOES consentite e assegna un punteggio a percorsi di etichette completi con termini di inizio, transizione e fine, più sei parametri di bias di transizione che controllano la persistenza del background, l'ingresso nello span, la continuazione dello span, la chiusura dello span e il passaggio da confine a confine. Questa ottimizzazione globale del percorso è pensata per migliorare la coerenza degli span e la stabilità dei confini facendo dipendere ogni decisione sui token dalla struttura a livello di sequenza, non solo dai logit locali, specialmente in testi rumorosi o a formato misto dove le sole decisioni locali sui token possono produrre confini frammentati o incoerenti.

Calibrazione del Punto Operativo

I parametri di Sequence Decoding possono scoraggiare la permanenza nel background mentre incoraggiano l'ingresso e la continuazione nello span, producendo una mascheratura più ampia e più contigua per un recall migliore, o viceversa per una precisione migliore. A runtime, gli utenti possono regolare i parametri che controllano questo compromesso.

Metadati del Modello

  • Sviluppato da: OpenAI

  • Finanziato da: OpenAI

  • Condiviso da: OpenAI

  • Tipo di modello: Modello bidirezionale di classificazione dei token per il rilevamento di span di privacy

  • Lingua/e: Principalmente inglese; riportata una valutazione selezionata di robustezza multilingue

  • Licenza: Apache 2.0

  • Pesi del modello: https://huggingface.co/openai/privacy-filter

  • Demo: https://huggingface.co/spaces/openai/privacy-filter

  • Model card: OpenAI Privacy Filter Model Card

Bias, Rischi e Limitazioni

Rischio: Affidamento eccessivo

Privacy Filter è un ausilio alla redazione e alla minimizzazione dei dati, non una garanzia di anonimizzazione, conformità o sicurezza. Un affidamento eccessivo sullo strumento come pretesa di anonimizzazione generalizzata rischierebbe di mancare gli obiettivi di privacy desiderati. Privacy Filter è utilizzato al meglio come uno dei molteplici livelli in un approccio olistico end-to-end di privacy-by-design.

Limitazione: Policy di Etichette Statica

Il modello identificherà solo span di dati personali che corrispondono alla tassonomia e alle definizioni delle etichette addestrate. I casi d'uso reali della privacy sono vari e complessi e le definizioni di policy di etichette e confini decisionali appropriati possono differire. Pertanto, le impostazioni predefinite del modello potrebbero non soddisfare i requisiti di governance specifici dell'organizzazione senza calibrazione/fine-tuning.

Privacy Filter non supporta la configurazione dinamica delle policy di etichette a runtime; invece, cambiare le policy richiede un ulteriore fine-tuning del modello. Il set nativo di etichette e i confini decisionali associati potrebbero non essere appropriati per ogni caso d'uso. Ad esempio, la policy di addestramento del modello mira a dare priorità agli identificatori personali, preservando spesso per design il contesto non fortemente legato alla persona; alcuni utenti potrebbero voler modificare questa scelta.

Le prestazioni possono calare su testo non inglese, script non latini, pattern di denominazione di gruppi protetti o domini fuori distribuzione rispetto all'addestramento del modello.

Modalità di Errore

Come tutti i modelli, Privacy Filter può commettere errori, come: sotto-rilevamento di nomi personali non comuni, convenzioni di denominazione regionali, iniziali, riferimenti ricchi di titoli onorifici o identificatori specifici di dominio; sovra-redazione di entità pubbliche, organizzazioni, località o nomi comuni quando il contesto locale è ambiguo; confini di span frammentati o spostati in testi a formato misto, documenti lunghi o testi con molta punteggiatura e artefatti di layout; secret mancati per formati di credenziali nuovi, pattern di token specifici di progetto o secret divisi attraverso la sintassi circostante; e sovra-redazione di stringhe benigne ad alta entropia, placeholder, hash, credenziali di esempio o esempi sintetici che assomigliano a secret.

Queste limitazioni possono interagire con variazioni demografiche, regionali e di dominio. Ad esempio, nomi e identificatori sottorappresentati nei dati di addestramento, o che seguono convenzioni diverse dalla distribuzione di addestramento dominante, possono essere più facilmente mancati o delimitati in modo incoerente.

Cautela per Deployment ad Alto Rischio

È opportuna ulteriore cautela in contesti ad alta sensibilità come flussi di lavoro medici, legali, finanziari, delle risorse umane, dell'istruzione e governativi. In questi contesti, sia i falsi negativi sia i falsi positivi possono essere costosi: gli span mancati possono esporre informazioni sensibili, mentre una mascheratura eccessiva può rimuovere contesto materiale necessario per revisione, audit o processi decisionali a valle.

Raccomandazioni

  • Usa Privacy Filter come parte di un approccio olistico di privacy-by-design, non come pretesa di anonimizzazione generalizzata.
  • Valuta in-domain con riferimenti alle policy locali prima della produzione.
  • Usa il fine-tuning specifico per il task quando la policy differisce dai confini di base.
  • Mantieni percorsi di revisione umana per flussi di lavoro ad alta sensibilità.
Scarica lo strumento