PII Guard
Détectez et masquez les informations personnelles sensibles avant d'envoyer des données aux API LLM.Couche de protection conforme au RGPD.
Conformité Réglementaire
Garantit le respect strict du RGPD en anonymisant les données avant leur envoi aux API LLM cloud.
RGPD_GDPRLegal SafetyPrévention des Fuites (DLP)
Les identifiants (CB, SSN, emails) sont nettoyés localement au sein de votre infrastructure.
Leak_PreventionData IntegrityPrêt pour l'Entreprise
Journalisation complète du traitement des données sensibles, répondant aux standards d'audit élevés.
Audit_ReadyAudit ControlConfiance Client
Démontre des pratiques IA responsables, renforçant la confiance via un traitement transparent.
Trust_EngineEthical AIDémarrage Rapide
import { PIIGuard, redactPII } from '@orka-js/core'; // Une seule ligneconst safeText = redactPII("Contact john@example.com or call 06 12 34 56 78");// → "Contact [EMAIL] or call [PHONE]" // Contrôle total avec une instance PIIGuardconst guard = new PIIGuard({ detectTypes: ['email', 'phone', 'credit_card', 'iban'], redactBeforeLLM: true,}); const result = guard.detect("My card is 4111 1111 1111 1111");console.log(result.redactedText); // "My card is [CREDIT_CARD]"console.log(result.matches); // [{ type: 'credit_card', value: '4111...', ... }]Types de Données Détectées
Courrier Électronique
(email)john@example.com, user.name@company.org
[EMAIL]Numéros de Contact
(phone)(555) 123-4567, 06 12 34 56 78, +33 6 12 34 56 78
[PHONE]Actifs Financiers
(credit_card)4111111111111111, 5500 0000 0000 0004
[CREDIT_CARD]Identité Gouvernementale
(ssn)123-45-6789
[SSN]Détails Bancaires
(iban)FR7630006000011234567890189
[IBAN]Identifiants Réseau
(ip_address)192.168.1.100, 2001:0db8:85a3::8a2e:0370:7334
[IP_ADDRESS]Dates Personnelles
(date_of_birth)15/03/1990, 1990-03-15
[DOB]Configuration
const guard = new PIIGuard({ // Activer/désactiver la détection (défaut: true) enabled: true, // Types à détecter (défaut: tous les types courants) detectTypes: ['email', 'phone', 'credit_card', 'ssn', 'iban', 'ip_address'], // Masquer automatiquement avant les appels LLM (défaut: true) redactBeforeLLM: true, // Utiliser des placeholders typés comme [EMAIL] (défaut: true) useTypedPlaceholders: true, // Placeholder personnalisé quand useTypedPlaceholders est false redactionPlaceholder: '[REDACTED]', // Seuil de confiance minimum 0-1 (défaut: 0.8) minConfidence: 0.8, // Lever une erreur au lieu de masquer (mode strict) throwOnPII: false, // Callback quand des données personnelles sont détectées onPIIDetected: (matches) => { console.warn('PII detected:', matches.map(m => m.type)); },});Intégration avec Orka
Utilisez PIIGuard pour protéger les données avant de les envoyer aux API LLM :
import { PIIGuard } from '@orka-js/core';import { OpenAIAdapter } from '@orka-js/openai'; const guard = new PIIGuard({ detectTypes: ['email', 'phone', 'credit_card', 'iban'], onPIIDetected: (matches) => { // Logger pour la piste d'audit console.log(`[AUDIT] Redacted ${matches.length} PII items`); },}); const llm = new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }); // Protéger l'entrée utilisateur avant l'appel LLMasync function safeAsk(userQuestion: string) { const safeQuestion = guard.processForLLM(userQuestion); const result = await llm.generate(safeQuestion, { systemPrompt: "You are a helpful assistant.", }); return result.content;} // Exemple d'utilisationconst answer = await safeAsk( "My email is john@company.com and my card is 4111111111111111");// Le LLM reçoit : "My email is [EMAIL] and my card is [CREDIT_CARD]"Patterns Personnalisés
Ajoutez des patterns spécifiques à votre organisation pour les IDs internes, codes ou autres données sensibles :
const guard = new PIIGuard({ customPatterns: [ { name: 'employee_id', pattern: /EMP-\d{6}/g, redactWith: '[EMPLOYEE_ID]', confidence: 0.95, }, { name: 'internal_project', pattern: /PRJ-[A-Z]{2}-\d{4}/g, redactWith: '[PROJECT_CODE]', }, { name: 'french_secu', pattern: /[12]\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{3}\s?\d{3}\s?\d{2}/g, redactWith: '[SECU_NUMBER]', confidence: 0.9, }, ],}); const result = guard.detect("Employee EMP-123456 on project PRJ-FR-2024");// → "Employee [EMPLOYEE_ID] on project [PROJECT_CODE]"Liste d'Exceptions
Excluez des patterns spécifiques de la redaction (ex: emails d'entreprise, IPs publiques) :
const guard = new PIIGuard({ allowList: [ /support@company\.com/, // Email support entreprise /noreply@company\.com/, // Email no-reply /192\.168\.\d+\.\d+/, // IPs réseau interne ],}); const result = guard.detect("Contact support@company.com or personal@gmail.com");// → "Contact support@company.com or [EMAIL]"// Email entreprise préservé, email personnel masquéMode Strict (Erreur sur PII)
Pour une sécurité maximale, levez une erreur au lieu de masquer silencieusement :
import { PIIGuard, OrkaError, OrkaErrorCode } from '@orka-js/core'; const strictGuard = new PIIGuard({ throwOnPII: true,}); try { strictGuard.detect("My email is john@example.com");} catch (error) { if (OrkaError.isOrkaError(error)) { console.error(`PII detected: ${error.message}`); // Gérer: demander à l'utilisateur de retirer les données sensibles }}Référence API
Analyse Complète
Audit complet de la chaîne. Retourne les correspondances, leurs positions et la version masquée.
detect(text)Deep AuditMasquage Rapide
Le filtre standard. Retourne uniquement le texte nettoyé où les entités sont remplacées par des jetons.
redact(text)Data ScrubbingGarde Booléenne
Vérification légère. Retourne true si une donnée PII est détectée. Idéal pour la validation rapide.
containsPII(text)ValidationPasserelle Adaptative
Wrapper intelligent. Masque le contenu selon le drapeau 'redactBeforeLLM' ou retourne l'original.
processForLLM(text)Context AwareExtension Personnalisée
Injecte une nouvelle logique de détection à la volée pour des identifiants métiers internes.
addPattern(ptn)Dynamic RuleGestion d'Exceptions
Définit des patterns sûrs qui ne doivent jamais être masqués, évitant les faux positifs.
allowList(regex)PrecisionFonctions Utilitaires
import { redactPII, detectPII, createPIIGuard } from '@orka-js/core'; // Masquage rapideconst safe = redactPII("Email: test@example.com"); // Détection rapideconst result = detectPII("Phone: 06 12 34 56 78"); // Créer une instance configuréeconst guard = createPIIGuard({ detectTypes: ['email'] });Bonnes Pratiques
- ✅ Toujours utiliser PIIGuard sur les entrées utilisateur avant les appels LLM
- ✅ Logger le nombre de données masquées pour la conformité audit
- ✅ Utiliser les listes d'exceptions avec parcimonie - uniquement pour les données vraiment publiques
- ✅ Considérer throwOnPII pour les contextes haute sécurité
- ✅ Ajouter des patterns personnalisés pour les données sensibles spécifiques à l'organisation
- ✅ Tester avec des échantillons de données réelles pour ajuster les seuils de confiance