Skip to main content

API Reference

This page provides detailed information about the LLM Guard API.

LLMGuard

The main class for validating and securing LLM prompts.

Constructor

new LLMGuard(options?: LLMGuardOptions)

Parameters

  • options (optional): Configuration options for the LLM Guard instance.
interface LLMGuardOptions {
// Enable specific guards
pii?: boolean;
jailbreak?: boolean;
profanity?: boolean;
promptInjection?: boolean;
relevance?: boolean;
toxicity?: boolean;

// Custom validation rules
customRules?: Record<string, (prompt: string) => ValidationResult>;

// Guard-specific options
relevanceOptions?: RelevanceOptions;
piiOptions?: PIIOptions;
// ... other guard-specific options
}

Methods

validate

Validates a single prompt.

async validate(prompt: string): Promise<ValidationResult>
Parameters
  • prompt: The prompt to validate.
Returns

A ValidationResult object containing the validation status and any errors.

interface ValidationResult {
isValid: boolean;
prompt: string;
errors: string[];
}

validateBatch

Validates multiple prompts at once.

async validateBatch(prompts: string[]): Promise<ValidationResult[]>
Parameters
  • prompts: An array of prompts to validate.
Returns

An array of ValidationResult objects, one for each prompt.

Guards

PII Guard

Detects personally identifiable information.

interface PIIOptions {
sensitivity?: 'low' | 'medium' | 'high';
customPatterns?: RegExp[];
}

Profanity Guard

Filters inappropriate language.

interface ProfanityOptions {
language?: string;
customWords?: string[];
}

Jailbreak Guard

Detects attempts to bypass AI safety measures.

interface JailbreakOptions {
threshold?: number;
customPatterns?: RegExp[];
}

Prompt Injection Guard

Identifies attempts to inject malicious instructions.

interface PromptInjectionOptions {
sensitivity?: 'low' | 'medium' | 'high';
customPatterns?: RegExp[];
}

Relevance Guard

Evaluates the quality and relevance of prompts.

interface RelevanceOptions {
minLength?: number;
maxLength?: number;
minWords?: number;
maxWords?: number;
fillerWords?: string[];
}

Toxicity Guard

Detects harmful or aggressive content.

interface ToxicityOptions {
threshold?: number;
language?: string;
}

CLI

LLM Guard provides a command-line interface for quick validation.

Usage

npx llm-guard [options] <prompt>

Options

  • --pii: Enable PII detection
  • --jailbreak: Enable jailbreak detection
  • --profanity: Enable profanity filtering
  • --prompt-injection: Enable prompt injection detection
  • --relevance: Enable relevance checking
  • --toxicity: Enable toxicity detection
  • --config <file>: Use a configuration file
  • --batch: Run in batch mode
  • --batch-file <file>: Process prompts from a file
  • --help: Show help information

Configuration File

You can use a JSON configuration file to specify options:

{
"pii": true,
"jailbreak": true,
"profanity": true,
"promptInjection": true,
"relevance": true,
"toxicity": true,
"relevanceOptions": {
"minLength": 10,
"maxLength": 5000
}
}

Types

ValidationResult

interface ValidationResult {
isValid: boolean;
prompt: string;
errors: string[];
}

LLMGuardOptions

interface LLMGuardOptions {
pii?: boolean;
jailbreak?: boolean;
profanity?: boolean;
promptInjection?: boolean;
relevance?: boolean;
toxicity?: boolean;
customRules?: Record<string, (prompt: string) => ValidationResult>;
relevanceOptions?: RelevanceOptions;
piiOptions?: PIIOptions;
profanityOptions?: ProfanityOptions;
jailbreakOptions?: JailbreakOptions;
promptInjectionOptions?: PromptInjectionOptions;
toxicityOptions?: ToxicityOptions;
}

Error Handling

LLM Guard throws specific error types for different scenarios:

class ValidationError extends Error {
constructor(message: string, public result: ValidationResult) {
super(message);
this.name = 'ValidationError';
}
}

class ConfigurationError extends Error {
constructor(message: string) {
super(message);
this.name = 'ConfigurationError';
}
}

Examples

Basic Usage

import { LLMGuard } from 'llm-guard';

const guard = new LLMGuard({
pii: true,
jailbreak: true
});

const result = await guard.validate('My email is user@example.com');
console.log(result);

Custom Validation Rules

import { LLMGuard } from 'llm-guard';

const guard = new LLMGuard({
customRules: {
minLength: (prompt) => {
const minLength = 10;
const isValid = prompt.length >= minLength;
return {
isValid,
errors: isValid ? [] : [`Prompt must be at least ${minLength} characters long`]
};
}
}
});

const result = await guard.validate('Short');
console.log(result);

Batch Validation

import { LLMGuard } from 'llm-guard';

const guard = new LLMGuard();
const prompts = ['First prompt', 'Second prompt'];
const results = await guard.validateBatch(prompts);
console.log(results);