Metadata-Version: 2.4
Name: openlayer-guardrails
Version: 0.2.0
Summary: Guardrails that can be used to check inputs and outputs of functions and works well with Openlayer tracing.
Requires-Python: >=3.10
Requires-Dist: openlayer>=0.2.0a89
Provides-Extra: pii
Requires-Dist: presidio-analyzer>=2.2.0; extra == 'pii'
Requires-Dist: presidio-anonymizer>=2.2.0; extra == 'pii'
Provides-Extra: prompt-injection
Requires-Dist: torch>=2.0.0; extra == 'prompt-injection'
Requires-Dist: transformers>=4.40.0; extra == 'prompt-injection'
Description-Content-Type: text/markdown

# Openlayer Guardrails

Open source guardrail implementations that work with Openlayer tracing.

## Installation

```bash
pip install openlayer-guardrails
```

## Usage

### Standalone Usage

```python
from openlayer_guardrails import PIIGuardrail

# Create guardrail
pii_guard = PIIGuardrail(
    block_entities={"CREDIT_CARD", "US_SSN"},
    redact_entities={"EMAIL_ADDRESS", "PHONE_NUMBER"}
)

# Check inputs manually
data = {"message": "My email is john@example.com and SSN is 123-45-6789"}
result = pii_guard.check_input(data)

if result.action.value == "block":
    print(f"Blocked: {result.reason}")
elif result.action.value == "modify":
    print(f"Modified data: {result.modified_data}")
```

### With Openlayer Tracing

```python
from openlayer_guardrails import PIIGuardrail
from openlayer.lib.tracing import trace

# Create guardrail
pii_guard = PIIGuardrail()

# Apply to traced functions
@trace(guardrails=[pii_guard])
def process_user_data(user_input: str):
    return f"Processed: {user_input}"

# PII is automatically handled
result = process_user_data("My email is john@example.com")
# Output: "Processed: My email is [EMAIL-REDACTED]"
```

