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
agent.py pipeline.py
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 valeurs

Le problème

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

OptionQualitéDonnées exposéesContrainteGains
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

  1. Utilisateur → piighost

    Envoie le dossier #ACME-9123 à marie.lambert@acme.com

  2. piighost → Modèle

    Envoie le dossier <<ID:1>> à <<EMAIL:1>>

  3. Modèle → piighost

    send_email(to=<<EMAIL:1>>)

  4. piighost → Outils

    send_email(to=marie.lambert@acme.com)

  5. Outils → piighost

    Mail envoyé à marie.lambert@acme.com

  6. piighost → Modèle

    Mail envoyé à <<EMAIL:1>>

  7. Modèle → piighost

    Le dossier <<ID:1>> a été envoyé à <<EMAIL:1>>.

  8. 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.

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 ».
Ajouté par piighost Le reste est votre agent, inchangé

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 ?
L'auto-hébergement protège le mieux, mais la facture GPU, la sécurité et les mises à jour sont pour vous, et le modèle est souvent moins bon. Avec piighost, vous gardez les meilleurs modèles et seuls des jetons comme <<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 ?
La bibliothèque et un pipeline décrit en TOML, chargé par 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 ?
Oui, par ses hooks. Ils anonymisent votre prompt et les sorties d'outils, et remettent les vraies valeurs dans les entrées d'outils. Ils s'appuient sur un serveur piighost-api, installé avec pip install 'piighost[client]'.
Quels frameworks sont pris en charge ?
LangChain, Pydantic AI et LlamaIndex, par un middleware, des hooks et un anonymiseur de nœuds. Pour tout autre client, les proxies compatibles OpenAI et Anthropic de piighost-api ne demandent qu'un changement de base_url.
piighost est-il conforme au RGPD ?
piighost fait de la pseudonymisation réversible au sens du RGPD: elle facilite la conformité sans remplacer votre analyse juridique. Les correspondances restent chez vous et se protègent comme des données personnelles.
Qu'est-ce qui est réellement envoyé au modèle ?
Le texte anonymisé seulement, où chaque valeur est devenue un jeton comme <<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.

pip install piighost