Guardrails AI
Guardrails PII
Detects personally identifiable information (PII) in text.
en
string
ML
Data Leakage
Chatbots
RAG
CodeGen
Structured data
Customer Support

Overview

updated 10 months
Developed by:
Guardrails AI
Date of development:
September 2, 2024
Validator type:
Format
Blog:
https://www.guardrailsai.com/blog/advanced-pii-and-jailbreak
License:
Apache 2
Input/Output:
Output

Playground

Description
Intended Use

This validator is designed to detect and anonymize Personally Identifiable Information (PII) in LLM-generated text using state-of-the-art methods. Currently a combination of Presidio and GLiNER yields the highest performing results. It supports various entity types and can be configured to focus on specific PII categories.

Key features:

  • Detects PII using both Presidio's built-in recognizers and a GLiNER-based recognizer
  • Anonymizes detected PII to protect sensitive information
  • Customizable entity types for targeted PII detection
  • Provides detailed error spans for identified PII instances

Use this validator to ensure that generated text does not inadvertently contain sensitive personal information, helping to maintain privacy and compliance with data protection regulations.

Requirements
  • Dependencies:
    • guardrails-ai>=0.4.0
    • gliner
    • presidio-analyzer
    • presidio-anonymizer
Installation
$ guardrails hub install hub://guardrails/guardrails_pii
Usage Examples
Validating string output via Python

In this example, we apply the validator to a string output generated by an LLM.

# Import Guard and Validator
from guardrails.hub import GuardrailsPII
from guardrails import Guard

# Setup Guard
guard = Guard().use(
    GuardrailsPII(entities=["DATE_TIME"], on_fail="fix")
)

Supported Entities

The following entities are supported by this validator. You may use any combination of them together in the validator init

  • "CREDIT_CARD",
  • "CRYPTO",
  • "DATE_TIME",
  • "EMAIL_ADDRESS",
  • "IBAN_CODE",
  • "IP_ADDRESS",
  • "NRP",
  • "LOCATION",
  • "PERSON",
  • "PHONE_NUMBER",
  • "MEDICAL_LICENSE",
  • "URL",
  • "US_BANK_NUMBER",
  • "US_DRIVER_LICENSE",
  • "US_ITIN",
  • "US_PASSPORT",
  • "US_SSN",
  • "UK_NHS",
  • "ES_NIF",
  • "ES_NIE",
  • "IT_FISCAL_CODE",
  • "IT_DRIVER_LICENSE",
  • "IT_VAT_CODE",
  • "IT_PASSPORT",
  • "IT_IDENTITY_CARD",
  • "PL_PESEL",
  • "SG_NRIC_FIN",
  • "SG_UEN",
  • "AU_ABN",
  • "AU_ACN",
  • "AU_TFN",
  • "AU_MEDICARE",
  • "IN_PAN",
  • "IN_AADHAAR",
  • "IN_VEHICLE_REGISTRATION",
  • "IN_VOTER",
  • "IN_PASSPORT",
  • "FI_PERSONAL_IDENTITY_CODE"
API Reference

__init__(self, entities: List[str], model_name: str = "urchade/gliner_small-v2.1", on_fail: Optional[Callable] = None)

Initializes a new instance of the GuardrailsPII class.

Parameters

  • entities (List[str]): A list of entity types to detect and anonymize.
  • model_name (str, optional): The name of the GLiNER model to use. Defaults to "urchade/gliner_small-v2.1".
  • get_entity_threshold (Callable[[str], float], optional): A callable to customize the threshold for each entity type Defaults to a function that returns 0.5 for most entities.
  • on_fail (Optional[Callable], optional): A callable to execute when the validation fails. Defaults to None.

This validator uses Presidio and GLiNER to detect and anonymize PII in the generated text.

Key Properties

PropertyDescription
Name for format attributeguardrails/guardrails_pii
Supported data typesstring
Programmatic fixAnonymized text

validate(self, value: Any, metadata: Dict = {}) -> ValidationResult

Validates the given value using the rules defined in this validator, relying on the metadata provided to customize the validation process. This method is automatically invoked by guard.parse(...), ensuring the validation logic is applied to the input data.

Note:

  1. This method should not be called directly by the user. Instead, invoke guard.parse(...) where this method will be called internally for each associated Validator.
  2. When invoking guard.parse(...), ensure to pass the appropriate metadata dictionary that includes keys and values required by this validator. If guard is associated with multiple validators, combine all necessary metadata into a single dictionary.

Parameters

  • value (Any): The input value to validate.

  • metadata (Dict): A dictionary containing metadata required for validation. Keys and values must match the expectations of this validator.

    KeyTypeDescriptionDefault
    entitiesList[str]List of entity types to detect and anonymize.self.entities

Returns

  • ValidationResult: A PassResult if no PII is detected, or a FailResult with the anonymized text and error spans if PII is found.

This method first retrieves the list of entities to detect from the metadata or falls back to the default entities set during initialization. It then uses the anonymize method to process the input text and detect PII. If no PII is found, it returns a PassResult. Otherwise, it returns a FailResult with the anonymized text and error spans.

Benchmark Results