OrkaJS
Orka.JS

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 Safety

Prévention des Fuites (DLP)

Les identifiants (CB, SSN, emails) sont nettoyés localement au sein de votre infrastructure.

Leak_PreventionData Integrity

Prêt pour l'Entreprise

Journalisation complète du traitement des données sensibles, répondant aux standards d'audit élevés.

Audit_ReadyAudit Control

Confiance Client

Démontre des pratiques IA responsables, renforçant la confiance via un traitement transparent.

Trust_EngineEthical AI

Démarrage Rapide

import { PIIGuard, redactPII } from '@orka-js/core';
 
// Une seule ligne
const safeText = redactPII("Contact john@example.com or call 06 12 34 56 78");
// → "Contact [EMAIL] or call [PHONE]"
 
// Contrôle total avec une instance PIIGuard
const 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 LLM
async 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'utilisation
const 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 Audit

Masquage Rapide

Le filtre standard. Retourne uniquement le texte nettoyé où les entités sont remplacées par des jetons.

redact(text)Data Scrubbing

Garde 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)Validation

Passerelle Adaptative

Wrapper intelligent. Masque le contenu selon le drapeau 'redactBeforeLLM' ou retourne l'original.

processForLLM(text)Context Aware

Extension Personnalisée

Injecte une nouvelle logique de détection à la volée pour des identifiants métiers internes.

addPattern(ptn)Dynamic Rule

Gestion d'Exceptions

Définit des patterns sûrs qui ne doivent jamais être masqués, évitant les faux positifs.

allowList(regex)Precision

Fonctions Utilitaires

import { redactPII, detectPII, createPIIGuard } from '@orka-js/core';
 
// Masquage rapide
const safe = redactPII("Email: test@example.com");
 
// Détection rapide
const result = detectPII("Phone: 06 12 34 56 78");
 
// Créer une instance configurée
const 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