Aller au contenu

Les trois invariants stricts

L’observabilité IA de monsys.ai est volontairement plus étroite que la plupart des outils de cette catégorie. Trois invariants résument ce que nous ne faisons pas, quelle que soit la demande client.

1. Passif, jamais autonome

monsys.ai n’exécute jamais de prompts. Il ne prend pas d’actions. Il ne bloque rien en ligne. C’est une couche d’observabilité — preuves a posteriori, pas un plan de contrôle.

Pas d’IA contrôlant une autre IA. Point final.

En pratique :

  • Pas de boutons « auto-fix » qui réécrivent un prompt.
  • Pas de « juge IA » qui classe automatiquement vos traces.
  • Pas de proxy bloquant. Notre SDK tourne en dehors de votre chemin de requête et échoue silencieusement si le hub est injoignable.

Pourquoi : les systèmes IA qui en contrôlent d’autres créent des vides de responsabilité. L’AI Act (art. 14) exige une supervision humaine. Une couche passive maintient les humains dans la boucle.

2. PII rédigées à la source

Les PII UE sont détectées avant stockage avec validation par checksum et remplacées par un jeton de hash tagué selon le type :

  • IBAN — 36 pays SEPA (ISO 13616 mod-97). Le suffixe est le code ISO en minuscules : [IBAN_BE], [IBAN_NL], [IBAN_FR], [IBAN_DE], [IBAN_ES], [IBAN_IT], [IBAN_PT], [IBAN_LU], [IBAN_AT], … Zéro faux positif sur chaînes aléatoires.
  • RRN (BE) — mod-97 sur 9 chiffres de base + 2 contrôle.
  • BTW-BE / KBO — mod-97 sur les 8 + 2 chiffres.
  • BSN (NL) — somme pondérée mod-11. Les BSN commençant par 0 sont rejetés (réservés en pratique).
  • NIR (FR) — mod-97 sur les 13 chiffres de base. Premier chiffre ∈ {1,2,3,4}.
  • Téléphone (E.164)+CC avec 8-15 chiffres au total. Universel.
  • Email — regex conforme RFC.

Format du jeton en mode pattern-redact : [KIND] ou pour IBAN [IBAN_<pays>]. En mode hash-only, un préfixe SHA256 de 12 caractères est ajouté : [IBAN_BE:43d1151bbe0b].

Les PII brutes n’atteignent jamais le système de fichiers ou la DB du hub.

En pratique :

  • La rédaction tourne dans hub/api/ai/redaction.go, avant que le blob de contenu soit hashé et stocké.
  • La validation mod-97 donne zéro faux positif sur les numéros invalides — une chaîne aléatoire de 11 chiffres ne ressemble pas à un RRN.
  • Le jeton de hash reste constant pour la même PII dans la même trace, vous voyez donc dans le contenu d’un span que « le même IBAN » a été répété sans savoir lequel.

L’attribut tenant redaction_level contrôle le comportement :

NiveauCe qui est stocké
offContenu complet (sandbox uniquement)
hash-onlySeulement SHA256 du contenu rédigé
pattern-redactContenu avec PII remplacées par jetons (défaut)
full-content-stripChaînes vides pour prompt/completion

3. Evidence packs signés Ed25519

Chaque mois (ou chaque période demandée) monsys.ai génère un tarball signé Ed25519. Le manifest contient :

  • pack_id, tenant_id, app_id, period_start, period_end
  • trace_count, span_count, blob_count
  • traces_sha256, spans_sha256, blob_index[] (hash par blob)
  • signing_public_hex (clé publique Ed25519)
  • Signature dans manifest.sig sur les bytes de manifest.json

Votre auditeur vérifie hors-ligne, sans compte monsys.

Le script tools/evidence-pack-verify.py (aucune dépendance monsys, uniquement cryptography) utilise la clé publique embarquée dans le manifest. L’auditeur la croise avec ce que monsys publie publiquement (page security, ou certificat imprimé que nous fournissons).

Détection d’altération

Si même un seul byte d’un blob, de traces.jsonl ou de spans.jsonl est modifié, la comparaison de hash échoue et le code de sortie = 1. Le script vous dit exactement quel artifact est faux.

Ce que ce n’est pas

Pas un outil de prompt engineering. Pas de playground, pas de prompts versionnés, pas d’A/B. Pour ça utilisez Langfuse ou similaire — et streamez la sortie vers monsys pour la partie audit.

Pas un framework d’évals. Pas de LLM-as-judge, pas de datasets intégrés. Vous pouvez injecter des résultats d’évals comme attributes de span.

Pas une couche de garde-fou bloquante. Pour de l’enforcement de politique en temps réel, il existe des outils spécialisés — nous tournons en async/parallèle à côté de votre chemin d’inférence.

Lire plus loin