Le problème de la prémisse initiale.
Le dépôt a commencé comme bot Telegram « psychologue ». Il conservait des conversations sensibles et présentait ses réponses générées comme plus proches d’un soin que le logiciel ne pouvait le justifier.
J’ai gardé la question technique utile — comment un petit classificateur apprend et échoue — mais supprimé comptes, transcriptions, diagnostics et allégations thérapeutiques. Le nouveau projet expose le modèle, la partition des données, la politique de calibration et la limite de sécurité.
Ce qu’exige une expérience crédible.
La refonte devait rendre les fuites d’évaluation et l’incertitude plus difficiles à cacher :
- Les prompts apparentés restent groupés pour empêcher les paraphrases de passer entre entraînement et test.
- Calibration, sélection de politique, test in-distribution et test out-of-distribution ont des rôles de données séparés.
- Une preuve faible doit produire une abstention, pas une étiquette forcée.
- Les implémentations web et Rust vérifient le même artefact versionné et le même contrat d’inférence.
De l’exactitude d’une démo à un protocole.
Un seul score train/test ne répond pas aux questions essentielles : familles de prompts traversant la partition, seuils réglés sur le test final ou comportement hors du domaine d’entraînement.
Le protocole v3 gèle donc des partitions conscientes des groupes et sépare entraînement, calibration, sélection de la politique d’abstention et évaluation finale. Les types Rust excluent les tests finaux des API de sélection.
Le pipeline open-set.
Une validation TSV stricte alimente une partition déterministe par groupes. Un vocabulaire TF-IDF limité à l’entraînement et une régression logistique multinomiale produisent les probabilités ; le temperature scaling les calibre, puis une politique choisie séparément décide de l’abstention.
Les choix qui préservent l’honnêteté du résultat.
Le protocole d’évaluation fait partie du logiciel.
Geler les familles sémantiques
La fixture supervisée contient 525 lignes dans 105 familles de prompts de taille égale. Des ID de groupe explicites gardent les formulations apparentées ensemble.
La fixture est volontairement synthétique et bornée ; elle prouve la reproductibilité, pas la validité sur un langage clinique réel.
Séparer l’inconnu des tests finaux
Des populations distinctes pour le développement OOD et le test OOD permettent de choisir la politique avant l’évaluation finale.
Le protocole exige davantage de fixtures et de suivi, mais la mesure finale ne sert plus au réglage.
Expliquer la marge réelle
Les prédictions exposent probabilités, confiance, marge des deux premières classes et contributions reconstruisant l’écart des logits gagnants.
Cette attribution explique le calcul du modèle linéaire, pas le sens ou l’intention humaine.
Vérifications de reproduction et de publication.
Modèle, politique, métriques et plan de partition résident dans un bundle lié par SHA-256. La CLI peut le reconstruire, vérifier les contrats et exécuter une inférence batch bornée. Une précision de reporting déclarée maintient le bundle v3 identique octet pour octet sur les cibles prises en charge.
Rust et le navigateur exécutent des fixtures de parité sur le même modèle. Un rapport de sélection séparé, lié par SHA-256, publie chaque probabilité out-of-fold, affectation de fold et rang de candidat ; le navigateur recalcule ses métriques et échoue si les octets ou les agrégats changent.
Ce que démontre le projet.
ELIZA Lab démontre un workflow complet pour petit modèle : sélection imbriquée par groupes, calibration, choix de politique open-set, test gelé, vérification d’artefact et inférence locale.
Ce n’est ni un thérapeute, ni un détecteur de crise, ni un modèle de langage de production. Sa valeur tient à une expérience inspectable et reproductible plutôt qu’à une démo opaque.
Registre des preuves.
Les artefacts vérifiés présentent ensemble le résultat de sélection, le test gelé et les cas faibles :
- Protocole de sélection
- 385 lignes d’entraînement et de développement réparties en 77 familles passent par 11 folds externes et 5 internes groupés, soit 506 modèles ajustés.
- Résultat de sélection
- L’exactitude out-of-fold est de 62,597 % et le macro-F1 de 62,640 % ; l’intervalle à 95 % par famille pour l’exactitude va de 57,143 à 68,571 %.
- Test ID gelé
- Exactitude de 82,857 % et macro-F1 de 82,278 % sur 70 lignes synthétiques en anglais.
- Résultat open-set
- La politique gelée couvre 62,857 % des lignes ID et 11,11 % des lignes OOD ; l’AUROC OOD est de 0.80278 et le FPR à 95 % de TPR de 0.7778.
- Faiblesse connue
- La fixture de contraste de 28 lignes atteint 42,86 % d’exactitude par paire ; le projet ne masque pas cet échec.