Skip to main content

Prompt validator

The prompt validator plugin validates the content of consumer messages against regex-based allow/deny patterns before they reach the LLM provider. This is a lightweight alternative to LLM-based guardrails for pattern-based content filtering.

How it works

  1. The plugin stores its allow/deny patterns in the request attributes
  2. The LLM proxy reads these patterns and validates every message content against them
  3. If validation fails, the request is rejected

Validation logic

  • Allow patterns: if any are defined, at least one must match the message content
  • Deny patterns: if any match the message content, the message is denied
  • A message passes validation only when it is not denied AND allowed

Plugin configuration

Add the Cloud APIM - LLM Proxy - prompt validator plugin to your route, before the LLM proxy plugin:

{
"enabled": true,
"plugin": "cp:otoroshi_plugins.com.cloud.apim.otoroshi.extensions.aigateway.plugins.AiPromptValidator",
"config": {
"allow": [],
"deny": []
}
}
ParameterTypeDefaultDescription
allowarray[]Regex patterns — if non-empty, at least one must match for the message to pass
denyarray[]Regex patterns — if any matches, the message is denied

Stacking validators

Multiple prompt validator plugins can be stacked on the same route. All validators must pass for the request to be allowed — their allow/deny patterns accumulate.

Examples

Block requests containing code

{
"deny": ["```.*```", "<script.*>", "eval\\(", "exec\\("]
}

Only allow questions about a specific topic

{
"allow": ["(?i).*(weather|forecast|temperature|climate).*"]
}

Combine allow and deny

{
"allow": ["(?i).*(product|pricing|support).*"],
"deny": ["(?i).*(competitor|internal|confidential).*"]
}

This allows only messages about products, pricing, or support, while blocking any mention of competitors or confidential information.