Guardrail Policies

Define and resolve guardrail policies for agent safety

Define safety policies to control agent behavior and protect against harmful outputs.

Diagram

Guardrail Flow

Allow

Block

Warn

📥 Input

🛡️ Policy

✅ Process

🚫 Reject

⚠️ Log & Process

Quick Start

  1. Define Policies
    typescript
    import { GuardrailPolicy, resolveGuardrailPolicies } from 'praisonai';
    
    const policies: GuardrailPolicy[] = [
      {
        name: 'no-pii',
        action: 'block',
        message: 'PII detected in output'
      },
      {
        name: 'content-filter',
        action: 'warn',
        message: 'Potentially sensitive content'
      }
    ];
  2. Use Preset Policies
    typescript
    import { resolveGuardrailPolicies, GUARDRAIL_PRESETS } from 'praisonai';
    
    // Use preset by name
    const resolved = resolveGuardrailPolicies(['strict', 'no-pii']);

Policy Actions

Diagram

Choose Your Action

Stop execution

Log and continue

Just log

Do nothing

What should happen?

🚫 block

⚠️ warn

📝 log

✅ allow

ActionBehavior
blockStop execution and return error
warnLog warning and continue
logLog event and continue silently
allowAllow without any action

GuardrailPolicy Interface

typescript
interface GuardrailPolicy {
  name: string;                    // Policy name
  action: 'block' | 'warn' | 'log' | 'allow';
  conditions?: Record<string, any>; // Optional conditions
  message?: string;                // Message to show/log
}

Preset Policies

Use built-in presets for common scenarios:

typescript
import { GUARDRAIL_PRESETS, resolveGuardrailPolicies } from 'praisonai';

// Available presets
GUARDRAIL_PRESETS.strict      // Block harmful content
GUARDRAIL_PRESETS.moderate    // Warn on sensitive content
GUARDRAIL_PRESETS.permissive  // Log only, allow all
GUARDRAIL_PRESETS['no-pii']   // Block PII
GUARDRAIL_PRESETS['no-code']  // Block code execution

// Resolve by name
const policies = resolveGuardrailPolicies(['strict', 'no-pii']);

Preset Definitions

PresetActionDescription
strictblockBlock all harmful content
moderatewarnWarn on sensitive content
permissivelogLog everything, block nothing
no-piiblockBlock personal information
no-codeblockBlock code execution

Resolve Policies

Convert string presets and policy objects:

typescript
import { resolveGuardrailPolicies, GuardrailPolicy } from 'praisonai';

// Mix of presets and custom policies
const policies = resolveGuardrailPolicies([
  'strict',                           // Preset name
  'no-pii',                           // Preset name
  {                                   // Custom policy
    name: 'custom-filter',
    action: 'warn',
    message: 'Custom warning'
  }
]);

// Returns array of GuardrailPolicy objects
console.log(policies);

Common Patterns

Content Moderation

typescript
import { resolveGuardrailPolicies, GuardrailPolicy } from 'praisonai';

const moderationPolicies: GuardrailPolicy[] = [
  {
    name: 'profanity-filter',
    action: 'block',
    message: 'Profanity detected'
  },
  {
    name: 'hate-speech',
    action: 'block',
    message: 'Hate speech detected'
  },
  {
    name: 'spam-detection',
    action: 'warn',
    message: 'Potential spam detected'
  }
];

const resolved = resolveGuardrailPolicies(moderationPolicies);

Data Protection

typescript
import { GuardrailPolicy } from 'praisonai';

const dataProtectionPolicies: GuardrailPolicy[] = [
  {
    name: 'pii-detection',
    action: 'block',
    conditions: {
      patterns: ['ssn', 'credit-card', 'phone']
    },
    message: 'Personal information detected'
  },
  {
    name: 'api-key-leak',
    action: 'block',
    conditions: {
      patterns: ['sk-', 'api_key', 'secret']
    },
    message: 'API key detected in output'
  }
];

Environment-Based

typescript
import { resolveGuardrailPolicies } from 'praisonai';

function getPolicies() {
  if (process.env.NODE_ENV === 'production') {
    return resolveGuardrailPolicies(['strict', 'no-pii']);
  } else if (process.env.NODE_ENV === 'staging') {
    return resolveGuardrailPolicies(['moderate']);
  } else {
    return resolveGuardrailPolicies(['permissive']);
  }
}

API Reference


Best Practices

Use strict policies in production

Always use strict and no-pii policies in production environments.

Log before blocking

Use warn during development to understand what would be blocked.

Provide clear messages

Include descriptive messages to help users understand why content was blocked.

Layer policies

Combine multiple policies for comprehensive protection.


Related