Skip to main content

Configuration

LLM Guard provides various configuration options to customize its behavior. This page explains how to configure LLM Guard for your specific needs.

Basic Configuration

When creating a new LLM Guard instance, you can specify which guards to enable:

import { LLMGuard } from 'llm-guard';

const guard = new LLMGuard({
pii: true,
jailbreak: true,
profanity: true,
promptInjection: true,
relevance: true,
toxicity: true
});

Guard-Specific Options

Each guard can be configured with specific options:

PII Guard Options

Not implemented yet

piiOptions is not supported. The PII guard takes no options — enable it with pii: true and it uses its built-in patterns. Tracked in #6.

Profanity Guard Options

Not implemented yet

profanityOptions is not supported. The profanity guard takes no options — enable it with profanity: true and it uses its built-in word list. Tracked in #6.

Jailbreak Guard Options

const guard = new LLMGuard({
jailbreak: true,
jailbreakOptions: {
// Additive: these run alongside the built-in patterns, never instead of them.
customPatterns: [
/enter developer mode/i,
/pretend you are unrestricted/i
]
}
});

customPatterns is the only supported field. There is no threshold — the jailbreak guard is pattern-based, not scored.

Prompt Injection Guard Options

const guard = new LLMGuard({
promptInjection: true,
promptInjectionOptions: {
// Additive: these run alongside the built-in patterns, never instead of them.
customPatterns: [
/exfiltrate the vault/i,
/override system prompt/i
]
}
});

customPatterns is the only supported field. There is no sensitivity — the guard is pattern-based, so widen or narrow it by supplying your own patterns.

Relevance Guard Options

const guard = new LLMGuard({
relevance: true,
relevanceOptions: {
minLength: 10, // Minimum text length
maxLength: 5000, // Maximum text length
minWords: 3, // Minimum word count
maxWords: 1000 // Maximum word count
}
});

Toxicity Guard Options

Not implemented yet

toxicityOptions is not supported. The toxicity guard takes no options — enable it with toxicity: true and it uses its built-in word list. Tracked in #6.

Custom Validation Rules

You can create custom validation rules to address specific validation needs:

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

// Check for specific keywords
requiredKeywords: (prompt) => {
const requiredWords = ['security', 'authentication'];
const missingWords = requiredWords.filter(word => !prompt.toLowerCase().includes(word));
const isValid = missingWords.length === 0;
return {
isValid,
errors: isValid ? [] : [`Prompt must include: ${missingWords.join(', ')}`]
};
}
}
});

Configuration File

For CLI usage, you can create a configuration file (e.g., config.json):

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

Then use it with the CLI:

npx llm-guard --config config.json "Your prompt here"

Environment Variables

LLM Guard also supports configuration through environment variables:

# Enable specific guards
LLM_GUARD_PII=true
LLM_GUARD_JAILBREAK=true
LLM_GUARD_PROFANITY=true

# Configure options
LLM_GUARD_RELEVANCE_MIN_LENGTH=10
LLM_GUARD_RELEVANCE_MAX_LENGTH=5000
LLM_GUARD_TOXICITY_THRESHOLD=0.7

Best Practices

  1. Enable only the guards you need to improve performance
  2. Adjust sensitivity thresholds based on your use case
  3. Use custom patterns for domain-specific validation
  4. Create custom rules for unique validation requirements
  5. Regularly update your configuration to address new security concerns