Anonymisez les données personnelles avant qu'elles n'atteignent le modèle

piighost est une bibliothèque Python pour créer des pipelines d'anonymisation de données personnelles. Elle remplace les informations sensibles par des jetons stables que le modèle peut utiliser, puis restitue les vraies valeurs à vos outils et à vos utilisateurs. Votre code d'agent ne change pas.

Hi, this is Patrick Dupont from Acme Corp. My order #ACME-9123 should be delivered to 12 rue de la Paix, Paris. You can reach me by email at patrick.dupont@acme.com or by phone at +33 6 12 34 56 78.

Le problème

Vous ne devriez pas avoir à choisir entre de bons modèles et la confidentialité

Les clouds hébergés exposent les données brutes

OpenAI, Anthropic et Google proposent les meilleurs modèles du marché. Mais chaque octet de contexte que vous leur envoyez, y compris les données personnelles brutes, quitte votre juridiction dès que la requête part sur le réseau. Une seule invite devient une exportation de données.

Les modèles locaux sacrifient la qualité

L'auto-hébergement garde les données dans votre réseau, mais vous renoncez à une partie de l'état de l'art et vous prenez en charge la facture GPU et les mises à jour. Le gain en confidentialité s'accompagne d'un coût opérationnel permanent, et le modèle que vous pouvez faire tourner est rarement celui que vous voudriez utiliser.

La conformité n'attend pas

Le RGPD, HIPAA et les règles de résidence des données s'appliquent que votre stack ait été conçu avec elles ou non. Envoyer des données personnelles brutes à un tiers est une responsabilité que vous ne pouvez pas effacer une fois la requête partie, et cela soumet chaque décision produit ultérieure à une revue juridique.

Interdire, c'est renoncer aux gains

Certaines équipes réagissent en interdisant purement et simplement les LLM hébergés. Cela protège les données, mais cela renonce aussi aux gains de productivité que tous les autres captent, et les gens contournent l'interdiction de toute façon en collant leur travail dans des comptes personnels que l'entreprise ne voit pas.

Pourquoi piighost

Plus qu'un détecteur de PII

Repérer les données sensibles, c'est le plus facile. piighost fournit tout le reste : des détecteurs que vous composez, des jetons que vous pouvez annuler, la cohérence sur toute une conversation, et un pipeline que vous exécutez à vos conditions.

Détecteurs composables

Combinez des détecteurs regex, NER et LLM dans un même pipeline et gardez ceux en qui vous avez confiance. Un découpage intégré fractionne les longs documents, si bien que même les gros fichiers sont entièrement couverts.

Jetons réversibles et transparents

Chaque valeur devient un jeton stable, restitué automatiquement. Vos utilisateurs et vos outils voient toujours les vraies données, tandis que le modèle ne voit jamais que le jeton.

Cohérent sur toute une conversation

Une même valeur conserve le même jeton sur toute une conversation, à travers chaque message, appel d'outil et agent. Rien ne dérive, si bien que le modèle ne perd jamais le fil de qui est qui.

Piloté par config, auto-hébergé

Décrivez un pipeline entier dans un seul fichier de configuration et exécutez-le entièrement sur votre propre infrastructure. Rien ne sort de chez vous, et aucun service tiers à qui faire confiance.

Fonctionnement

Une couche entre votre agent et le modèle

Message utilisateur

Hi, this is Patrick Dupont. Could you forward this to Marie Lambert and Jean Moreau? My email is patrick.dupont@acme.com, and you can also cc marie.lambert@acme.com. The case ID is #ACME-9123.

piighost exécute vos détecteurs sur le message et indique chaque donnée personnelle trouvée : noms, e-mails, identifiants, tout ce que le modèle n'a pas besoin de voir. Les détections qui se chevauchent entre plusieurs détecteurs sont arbitrées par niveau de confiance avant tout remplacement.

L'écosystème

Une couche de confidentialité, plusieurs projets

Commencez avec la bibliothèque. Ajoutez le serveur, la démo de chat et le correcteur de CV au fil de votre croissance.

Démarrage rapide

Branchez-le sur votre framework d'agent

Ajoutez piighost au framework que vous utilisez déjà. Votre code d'agent reste le même.

uv add 'piighost[langchain,gliner2]'
from langchain.agents import create_agent

from piighost.components.detector.ner import Gliner2Detector
from piighost.pipeline import ThreadAnonymizationPipeline
from piighost.integrations.langchain import PIIAnonymizationMiddleware

# Any detector works: regex, NER, or an LLM. Here a GLiNER2 NER model.
detector = Gliner2Detector("fastino/gliner2-multi-v1", labels=["PERSON", "LOCATION"])
pipeline = ThreadAnonymizationPipeline(detector)
middleware = PIIAnonymizationMiddleware(pipeline=pipeline)

agent = create_agent(
    model="openai:gpt-5.6-terra",
    tools=[lookup_city],
    middleware=[middleware],
)

# The model only sees "<<PERSON:1>>"; lookup_city still receives "Patrick".

Questions fréquentes

Pourquoi anonymiser plutôt qu'héberger le modèle soi-même ?
Le self-host est un choix valable et offre la confidentialité la plus forte : aucun tiers ne peut lire le contenu, par construction. En contrepartie, tout bascule sur vous (la facture GPU, la sécurité, les mises à jour, la journalisation) et le modèle que vous faites tourner vous-même est en général moins bon que les meilleurs modèles hébergés. L'anonymisation préserve cette qualité : seuls des jetons comme <<PERSON:1>> quittent votre infrastructure, donc le risque de fuite est neutralisé quel que soit le fournisseur. C'est une couche de défense, pas une solution miracle. La page Philosophie détaille tout le compromis.
De quoi ai-je besoin pour faire tourner piighost en production ?
Au minimum, la bibliothèque piighost et un pipeline. Installez-la avec les extras de vos détecteurs : pip install 'piighost[config]' suffit pour un pipeline uniquement regex ; ajoutez transformers, gliner2 ou llm selon le détecteur, et cache pour une correspondance partagée via Redis. Enregistrez votre pipeline dans un fichier TOML et chargez-le avec load_pipeline. Le NER classique et GLiNER téléchargent un modèle ONNX au premier usage et tournent sur CPU ; la regex ne demande rien de plus ; le détecteur LLM nécessite un fournisseur et une clé d'API. Quand plusieurs processus doivent partager un même point d'accès, déployez piighost-api plutôt que d'embarquer la bibliothèque.
Puis-je utiliser piighost avec Claude Code ?
piighost est agnostique du modèle : il fonctionne avec Claude d'Anthropic comme avec n'importe quel fournisseur. Il agit au niveau des données : vous anonymisez le texte dans votre propre code avant que le modèle ne le voie, donc seuls des jetons comme <<PERSON:1>> arrivent jusqu'à Claude, et les vraies valeurs sont restaurées dans la réponse. Enveloppez n'importe quel appel à Claude depuis Python, directement ou via LangChain, Pydantic AI ou LlamaIndex. Il n'existe pas d'extension dédiée pour la CLI Claude Code elle-même, car piighost protège les prompts et les données que vous envoyez, pas l'outil avec lequel vous les envoyez.
Est-ce que je peux utiliser piighost avec LangChain, Pydantic AI ou LlamaIndex ?
piighost fournit des intégrations pour LangChain, Pydantic AI et LlamaIndex. Vous enveloppez votre pipeline dans l'assistant proposé (middleware, hooks ou anonymiseur de nœuds) afin que les données personnelles soient remplacées avant l'appel au modèle et restaurées ensuite. Le modèle ne raisonne que sur des jetons comme <<PERSON:1>>, jamais sur les vraies valeurs.
Est-ce que piighost est conforme au RGPD, et comment fonctionnent les jetons stables ?
piighost réalise une pseudonymisation réversible au sens du RGPD, ce qui facilite la conformité mais ne remplace pas votre propre analyse juridique. Des jetons stables signifient qu'une même entité correspond toujours au même jeton (Patrick devient <<PERSON:1>> partout), donc le modèle garde le contexte pendant que la vraie valeur reste hors de sa portée.
Mes données restent-elles locales ? Qu'est-ce qui est réellement envoyé au modèle ?
Seul le texte anonymisé est envoyé au modèle, chaque valeur détectée étant remplacée par un jeton comme <<PERSON:1>>. La correspondance entre les jetons et les vraies valeurs reste de votre côté et n'est jamais envoyée. Après la réponse du modèle, piighost restaure localement les valeurs d'origine pour que vos utilisateurs voient les vraies données.

Livrez des fonctionnalités IA sans livrer les données de vos utilisateurs

Installez piighost, branchez votre détecteur et gardez les données personnelles hors du modèle.