PIIGhost Le modèle travaille. Les données restent.
piighost masque les données personnelles de vos prompts avant qu'elles n'atteignent le modèle, puis restitue les vraies valeurs dans la réponse. Détecteurs au choix, regex, NER ou LLM, et un proxy compatible OpenAI et Anthropic.
Se branche sur
- LangChain
- Pydantic AI
- LlamaIndex
from langchain.agents import create_agentfrom piighost.integrations.langchain import PIIAnonymizationMiddleware middleware = PIIAnonymizationMiddleware(pipeline=pipeline) agent = create_agent( model="openai:gpt-5.6", tools=[send_email], middleware=[middleware],)# le modele ne voit que des jetons ; send_email recoit les vraies valeursLe problème
Vous ne devriez pas avoir à choisir entre de bons modèles et la confidentialité
| Option | Qualité | Données exposées | Contrainte | Gains |
|---|---|---|---|---|
| Modèle hébergé | oui, La meilleure | non, Toutes | oui, Aucune | oui, Oui |
| Modèle local | non, Dégradée | oui, Aucune | non, GPU et exploitation | en partie, Partiels |
| Interdire | non, Aucune | oui, Aucune | oui, Rien | non, Aucun, et contourné |
| piighost | oui, La meilleure | oui, Aucune | en partie, Une infra CPU | oui, Oui |
Une limite à connaître. piighost fait de la pseudonymisation au sens du RGPD, pas de l'anonymisation : les correspondances entre valeurs et jetons sont conservées chez vous le temps de la conversation, et se protègent comme des données personnelles.
Pourquoi piighost
Plus qu'un détecteur de PII
Les détecteurs regex et NER savent repérer les données confidentielles. Anonymiser un échange avec un LLM demande en plus de les remplacer, de les suivre d'un message à l'autre et de les restituer. piighost orchestre tout cela pour vous.
Des détecteurs composables
Regex, NER ou LLM, dans un même pipeline. Vous gardez celui en qui vous avez confiance.
Des jetons qui reviennent seuls
Le modèle lit <<PERSON:1>>, votre utilisateur et vos outils lisent le vrai nom.
Le même jeton tout au long
Une valeur garde son jeton d'un message à l'autre, et le modèle ne perd pas le fil.
Un fichier, votre infrastructure
Tout le pipeline tient dans un TOML, validé en ligne de commande, exécuté chez vous.
Détecteurs pris en charge
- Regex
- GLiNER2
- spaCy
- Transformers
- Presidio
Fonctionnement
Une couche entre votre agent et le modèle
Utilisateur → piighost
Envoie le dossier #ACME-9123 à marie.lambert@acme.com
piighost → Modèle
Envoie le dossier <<ID:1>> à <<EMAIL:1>>
Modèle → piighost
send_email(to=<<EMAIL:1>>)
piighost → Outils
send_email(to=marie.lambert@acme.com)
Outils → piighost
Mail envoyé à marie.lambert@acme.com
piighost → Modèle
Mail envoyé à <<EMAIL:1>>
Modèle → piighost
Le dossier <<ID:1>> a été envoyé à <<EMAIL:1>>.
piighost → Utilisateur
Le dossier #ACME-9123 a été envoyé à marie.lambert@acme.com.
La colonne du modèle ne contient que des jetons. Même ce que renvoient les outils est anonymisé avant qu'il ne le lise.
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.
piighost
La bibliothèque centrale. Construisez des pipelines d'anonymisation pour vos agents IA.
En savoir pluspiighost-api
Un serveur REST qui héberge un pipeline piighost derrière HTTP.
En savoir pluspiighost-chat
Un chatbot de démonstration qui anonymise les messages avant que le LLM ne les voie.
En savoir pluspiighost-proofreader
Un relecteur de CV par LLM qui anonymise les documents avant tout appel au LLM.
En savoir plus<<PROJECT_NAME:2b1f4a>>
À venir.
<<PROJECT_NAME:7c43e9>>
À venir.
<<PROJECT_NAME:9af0d2>>
À venir.
<<PROJECT_NAME:1e8c75>>
À venir.
<<PROJECT_NAME:f30b86>>
À venir.
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 Gliner2Detectorfrom piighost.pipeline import ThreadAnonymizationPipelinefrom piighost.integrations.langchain import PIIAnonymizationMiddleware # N'importe quel détecteur convient : regex, NER ou LLM.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],) # Le modèle ne voit que <<PERSON:1>>, lookup_city reçoit « Patrick ».FAQ
Questions fréquentes
Une question qui n'est pas ici ? La communauté et la documentation répondent.
Pourquoi anonymiser plutôt qu'héberger le modèle soi-même ?
<<PERSON:1>> sortent de chez vous. C'est une couche de défense, pas une solution miracle. La page Philosophie détaille le compromis.De quoi ai-je besoin en production ?
load_pipeline. pip install 'piighost[config]' suffit pour des regex ; ajoutez l'extra de votre détecteur (gliner2, spacy, transformers ou llm), et redis pour partager la mémoire entre processus. Plusieurs services ? Déployez piighost-api.Puis-je utiliser piighost avec Claude Code ?
pip install 'piighost[client]'.Quels frameworks sont pris en charge ?
base_url.piighost est-il conforme au RGPD ?
Qu'est-ce qui est réellement envoyé au modèle ?
<<PERSON:1>>. La correspondance reste de votre côté le temps de la conversation, et piighost restaure les valeurs localement.Le modèle travaille.
Les données restent.
Livrez vos fonctionnalités d'IA sans donner les données confidentielles de vos clients. Installez piighost, branchez votre détecteur et gardez les données personnelles hors du modèle.
LlamaIndex
GLiNER2
spaCy
Presidio