DynamoAI Guardrails
LiteLLM supports DynamoAI guardrails for content moderation and policy enforcement on LLM inputs and outputs.
Quick Startβ
1. Define Guardrails on your LiteLLM config.yamlβ
Define your guardrails under the guardrails section:
config.yaml
model_list:
- model_name: gpt-4
litellm_params:
model: openai/gpt-4
api_key: os.environ/OPENAI_API_KEY
guardrails:
- guardrail_name: "dynamoai-guard"
litellm_params:
guardrail: dynamoai
mode: "pre_call"
api_key: os.environ/DYNAMOAI_API_KEY
Supported values for modeβ
pre_call- Run before LLM call, on inputpost_call- Run after LLM call, on outputduring_call- Run during LLM call, on input. Same aspre_callbut runs in parallel as LLM call
2. Set Environment Variablesβ
export DYNAMOAI_API_KEY="your-api-key"
# Optional: Set policy IDs via environment variable (comma-separated)
export DYNAMOAI_POLICY_IDS="policy-id-1,policy-id-2,policy-id-3"
3. Start LiteLLM Gatewayβ
litellm --config config.yaml --detailed_debug
4. Test Requestβ
Langchain, OpenAI SDK Usage Examples
- Successful Call
- Blocked Call
Successful Request
curl -i http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "What is the capital of France?"}
],
"guardrails": ["dynamoai-guard"]
}'
Response: HTTP 200 Success
Content passes all policy checks and is allowed through.
Blocked Request
curl -i http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Content that violates policy"}
],
"guardrails": ["dynamoai-guard"]
}'
Expected Response on Block: HTTP 400 Error
{
"error": {
"message": "Guardrail failed: 1 violation(s) detected\n\n- POLICY NAME:\n Action: BLOCK\n Method: TOXICITY\n Description: Policy description\n Policy ID: policy-id-123",
"type": "None",
"param": "None",
"code": "400"
}
}
Advanced Configurationβ
Specify Policy IDsβ
Configure specific DynamoAI policies to apply:
config.yaml
guardrails:
- guardrail_name: "dynamoai-policies"
litellm_params:
guardrail: dynamoai
mode: "pre_call"
api_key: os.environ/DYNAMOAI_API_KEY
policy_ids:
- "policy-id-1"
- "policy-id-2"
- "policy-id-3"
Custom API Baseβ
Specify a custom DynamoAI API endpoint:
config.yaml
guardrails:
- guardrail_name: "dynamoai-custom"
litellm_params:
guardrail: dynamoai
mode: "pre_call"
api_key: os.environ/DYNAMOAI_API_KEY
api_base: "https://custom.dynamo.ai"
Model ID for Trackingβ
Add a model ID for tracking and logging purposes:
config.yaml
guardrails:
- guardrail_name: "dynamoai-tracked"
litellm_params:
guardrail: dynamoai
mode: "pre_call"
api_key: os.environ/DYNAMOAI_API_KEY
model_id: "gpt-4-production"
Input and Output Guardrailsβ
Configure separate guardrails for input and output:
config.yaml
guardrails:
# Input guardrail
- guardrail_name: "dynamoai-input"
litellm_params:
guardrail: dynamoai
mode: "pre_call"
api_key: os.environ/DYNAMOAI_API_KEY
# Output guardrail
- guardrail_name: "dynamoai-output"
litellm_params:
guardrail: dynamoai
mode: "post_call"
api_key: os.environ/DYNAMOAI_API_KEY
Configuration Optionsβ
| Parameter | Type | Description | Default |
|---|---|---|---|
api_key | string | DynamoAI API key (required) | DYNAMOAI_API_KEY env var |
api_base | string | DynamoAI API base URL | https://api.dynamo.ai |
policy_ids | array | List of DynamoAI policy IDs to apply (optional) | DYNAMOAI_POLICY_IDS env var (comma-separated) |
model_id | string | Model ID for tracking/logging | DYNAMOAI_MODEL_ID env var |
mode | string | When to run: pre_call, post_call, or during_call | Required |
Observabilityβ
DynamoAI guardrail logs include:
- guardrail_status:
success,guardrail_intervened, orguardrail_failed_to_respond - guardrail_provider:
dynamoai - guardrail_json_response: Full API response with policy details
- duration: Time taken for guardrail check
- start_time and end_time: Timestamps
These logs are available through your configured LiteLLM logging callbacks.
Error Handlingβ
The guardrail handles errors gracefully:
- API Failures: Logs error and raises exception with status
guardrail_failed_to_respond - Policy Violations: Raises
ValueErrorwith detailed violation information - Invalid Configuration: Raises
ValueErroron initialization if API key is missing
Current Limitationsβ
- Only the
BLOCKaction is currently supported WARN,REDACT, andSANITIZEactions are treated as success (pass through)
Supportβ
For more information about DynamoAI:
- Website: https://dynamo.ai
- Documentation: Contact DynamoAI for API documentation