Il problema dell’idea originale.

Il repository era nato come bot Telegram “psicologo”. Conservava conversazioni sensibili e presentava risposte generate come qualcosa di più vicino all’assistenza di quanto il software potesse sostenere.

Ho mantenuto la domanda ingegneristica utile, cioè come un piccolo classificatore testuale apprende e fallisce, ma ho rimosso account, trascrizioni, diagnosi e affermazioni terapeutiche. Il nuovo progetto rende visibili modello, suddivisione dei dati, policy di calibrazione e confine di sicurezza.

Ciò che serve a un esperimento credibile.

La riprogettazione doveva rendere più difficili da nascondere la contaminazione della valutazione e l’incertezza:

  1. I prompt correlati devono restare raggruppati, così le parafrasi non possono passare tra le partizioni di training e test.
  2. Calibrazione, selezione della policy, test in-distribution e test out-of-distribution richiedono ruoli dati separati.
  3. Evidenze deboli devono produrre un’astensione, non un’etichetta forzatamente sicura.
  4. Le implementazioni browser e Rust devono verificare lo stesso artefatto versionato e lo stesso contratto di inferenza.

Dall’accuratezza della demo a un protocollo.

Un singolo punteggio train/test non avrebbe risposto alle domande importanti. Non avrebbe mostrato se famiglie di prompt simili attraversavano la divisione, se le soglie venivano tarate sui dati finali di test o cosa accade fuori dal dominio di training.

Il protocollo v3 congela quindi partizioni consapevoli dei gruppi e separa fitting del modello, calibrazione delle probabilità, selezione della policy di astensione e valutazione finale. I tipi Rust impediscono ai set di test finali di entrare nelle API di selezione.

La pipeline open-set.

Una validazione TSV rigorosa alimenta una divisione deterministica consapevole dei gruppi. Un vocabolario TF-IDF costruito solo sul training e una regressione logistica multinomiale producono probabilità; il temperature scaling le calibra e una policy selezionata separatamente decide se il modello deve astenersi.

La pipeline open-set. Training, calibrazione, selezione della policy e valutazione finale restano distinti.SYSTEM VIEW / ELIZADATI SINTETICIDIVISIONEPER GRUPPITF-IDF + LOGREGCALIBRAZIONEASTENSIONE+ TRACCIAVERSIONED DELIVERY PATH
Training, calibrazione, selezione della policy e valutazione finale restano distinti.

Le scelte che mantengono onesto il risultato.

Il progetto considera il protocollo di valutazione parte integrante del software.

D01

Congelare le famiglie semantiche

La fixture supervisionata contiene 525 righe in 105 famiglie di prompt della stessa dimensione. ID di gruppo espliciti mantengono unite le formulazioni correlate durante la partizione.

La fixture è volutamente sintetica e limitata; garantisce riproducibilità, non validità sul linguaggio clinico reale.

D02

Separare gli esempi ignoti dai test finali

Popolazioni distinte per sviluppo OOD e test OOD permettono di scegliere la policy di astensione prima della valutazione finale.

Il protocollo richiede più fixture e tracciamento, ma la misurazione finale non fa più parte della taratura.

D03

Spiegare il margine reale

Le predizioni espongono probabilità, confidenza, margine tra le prime due classi e contributi delle feature che ricostruiscono la differenza tra i logit vincenti.

L’attribuzione delle feature spiega il calcolo di questo modello lineare; non spiega il significato o l’intento umano.

Controlli di riproduzione e rilascio.

Modello, policy, metriche e piano delle partizioni vivono in un bundle collegato tramite SHA-256. La CLI può ricostruire il bundle, verificare ogni contratto ed eseguire inferenza batch limitata. Una precisione di reporting dichiarata mantiene il bundle v3 identico byte per byte tra i target di rilascio supportati.

Il codice Rust e quello browser eseguono fixture di parità sullo stesso modello. Un report di selezione separato e vincolato tramite SHA-256 pubblica ogni probabilità out-of-fold, assegnazione ai fold e posizione dei candidati; il browser ricalcola le metriche e si blocca se cambiano byte o aggregati.

Cosa dimostra il progetto.

ELIZA Lab dimostra un flusso completo per un piccolo modello: selezione annidata per gruppi, calibrazione, scelta della policy open-set, test congelato, verifica degli artefatti e inferenza locale.

Non è un terapeuta, un rilevatore di crisi o un modello linguistico di produzione. Il suo valore sta nella possibilità di ispezionare l’esperimento e riprodurre il risultato, invece di fidarsi di una demo opaca.

Registro delle evidenze.

Gli artefatti verificati mostrano insieme il risultato di selezione, il test congelato e i casi deboli:

Protocollo di selezione
385 righe di training e sviluppo in 77 famiglie attraversano 11 fold esterni e 5 interni per gruppi, per un totale di 506 modelli addestrati.
Risultato di selezione
L’accuracy out-of-fold è 62,597% e il macro-F1 62,640%; l’intervallo al 95% per famiglia dell’accuracy è 57,143–68,571%.
Test ID congelato
Accuratezza dell’82,857% e macro-F1 dell’82,278% su 70 righe sintetiche in inglese.
Risultato open-set
La policy congelata copre il 62,857% delle righe ID e l’11,11% delle righe OOD; l’AUROC OOD è 0,80278 e l’FPR al 95% di TPR è 0,7778.
Debolezza nota
La fixture di contrasto da 28 righe raggiunge un’accuratezza per coppia del 42,86%; il progetto non nasconde questo limite.
Apri il progetto funzionante