项目文件夹

文件
wehub-resource-sync 3cd11ababe
Check Markdown links / linkChecker (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:38:56 +08:00

999 行
27 KiB
JSON

{
"id": "default",
"name": "Default",
"description": "The default set of guardrail functions available in the AI Gateway.",
"credentials": [],
"functions": [
{
"name": "Regex Match",
"id": "regexMatch",
"type": "guardrail",
"supportedHooks": ["beforeRequestHook", "afterRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Check if the request or response text matches a regex pattern."
}
],
"parameters": {
"type": "object",
"properties": {
"rule": {
"type": "string",
"label": "Regex Rule",
"description": [
{
"type": "subHeading",
"text": "Enter the regex pattern"
}
]
},
"not": {
"type": "boolean",
"label": "Invert Match",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be inverted"
}
],
"default": false
}
},
"required": ["rule"]
}
},
{
"name": "Allowed Request Types",
"id": "allowedRequestTypes",
"type": "guardrail",
"supportedHooks": ["beforeRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Control which request types (endpoints) can be processed. Use either an allowlist or blocklist approach. If no types are specified, all request types are allowed."
}
],
"parameters": {
"type": "object",
"properties": {
"allowedTypes": {
"type": "array",
"label": "Allowed Request Types (Multi-select)",
"description": [
{
"type": "subHeading",
"text": "Select request types to allow. Can be combined with blockedTypes for refined control. Can also be specified in metadata as 'supported_endpoints'."
}
],
"items": {
"type": "string",
"enum": [
"complete",
"chatComplete",
"embed",
"rerank",
"moderate",
"stream-complete",
"stream-chatComplete",
"stream-messages",
"proxy",
"imageGenerate",
"createSpeech",
"createTranscription",
"createTranslation",
"realtime",
"uploadFile",
"listFiles",
"retrieveFile",
"deleteFile",
"retrieveFileContent",
"createBatch",
"retrieveBatch",
"cancelBatch",
"listBatches",
"getBatchOutput",
"listFinetunes",
"createFinetune",
"retrieveFinetune",
"cancelFinetune",
"createModelResponse",
"getModelResponse",
"deleteModelResponse",
"listResponseInputItems",
"messages"
]
}
},
"blockedTypes": {
"type": "array",
"label": "Blocked Request Types (Multi-select)",
"description": [
{
"type": "subHeading",
"text": "Select request types to block. When combined with allowedTypes, blocked types take precedence. Can also be specified in metadata as 'blocked_endpoints'."
}
],
"items": {
"type": "string",
"enum": [
"complete",
"chatComplete",
"embed",
"rerank",
"moderate",
"stream-complete",
"stream-chatComplete",
"stream-messages",
"proxy",
"imageGenerate",
"createSpeech",
"createTranscription",
"createTranslation",
"realtime",
"uploadFile",
"listFiles",
"retrieveFile",
"deleteFile",
"retrieveFileContent",
"createBatch",
"retrieveBatch",
"cancelBatch",
"listBatches",
"getBatchOutput",
"listFinetunes",
"createFinetune",
"retrieveFinetune",
"cancelFinetune",
"createModelResponse",
"getModelResponse",
"deleteModelResponse",
"listResponseInputItems",
"messages"
]
}
}
},
"required": []
}
},
{
"name": "Sentence Count",
"id": "sentenceCount",
"type": "guardrail",
"supportedHooks": ["beforeRequestHook", "afterRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Checks if the content contains a certain number of sentences. Ranges allowed."
}
],
"parameters": {
"type": "object",
"properties": {
"minSentences": {
"type": "number",
"label": "Minimum Sentence Count",
"description": [
{
"type": "subHeading",
"text": "Enter the minimum number of sentences to allow."
}
],
"default": 0
},
"maxSentences": {
"type": "number",
"label": "Maximum Sentence Count",
"description": [
{
"type": "subHeading",
"text": "Enter the maximum number of sentences to allow."
}
],
"default": 99999
},
"not": {
"type": "boolean",
"label": "Invert Range Check",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be true when count is outside the range"
}
],
"default": false
}
}
}
},
{
"name": "Word Count",
"id": "wordCount",
"type": "guardrail",
"supportedHooks": ["beforeRequestHook", "afterRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Checks if the content contains a certain number of words. Ranges allowed."
}
],
"parameters": {
"type": "object",
"properties": {
"minWords": {
"type": "number",
"label": "Minimum Word Count",
"description": [
{
"type": "subHeading",
"text": "Enter the minimum number of words to allow."
}
],
"default": 0
},
"maxWords": {
"type": "number",
"label": "Maximum Word Count",
"description": [
{
"type": "subHeading",
"text": "Enter the maximum number of words to allow."
}
],
"default": 99999
},
"not": {
"type": "boolean",
"label": "Invert Range Check",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be true when count is outside the range"
}
],
"default": false
}
}
}
},
{
"name": "Character Count",
"id": "characterCount",
"type": "guardrail",
"supportedHooks": ["beforeRequestHook", "afterRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Checks if the content contains a certain number of characters. Ranges allowed."
}
],
"parameters": {
"type": "object",
"properties": {
"minCharacters": {
"type": "number",
"label": "Minimum Character Count",
"description": [
{
"type": "subHeading",
"text": "Enter the minimum number of characters to allow."
}
],
"default": 0
},
"maxCharacters": {
"type": "number",
"label": "Maximum Character Count",
"description": [
{
"type": "subHeading",
"text": "Enter the maximum number of characters to allow."
}
],
"default": 9999999
},
"not": {
"type": "boolean",
"label": "Invert Range Check",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be true when count is outside the range"
}
],
"default": false
}
}
}
},
{
"name": "JSON Schema",
"id": "jsonSchema",
"type": "guardrail",
"supportedHooks": ["afterRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Check if the response JSON matches a JSON schema."
}
],
"parameters": {
"type": "object",
"properties": {
"schema": {
"type": "json",
"label": "JSON Schema",
"description": [
{
"type": "subHeading",
"text": "Enter the JSON schema to validate against."
}
]
},
"not": {
"type": "boolean",
"label": "Invert Schema Match",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be true when schema does not match"
}
],
"default": false
}
},
"required": ["schema"]
}
},
{
"name": "JSON Keys",
"id": "jsonKeys",
"type": "guardrail",
"supportedHooks": ["afterRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Check if the response JSON contains any, all or none of the mentioned keys."
}
],
"parameters": {
"type": "object",
"properties": {
"keys": {
"type": "array",
"label": "JSON Keys",
"description": [
{
"type": "subHeading",
"text": "Enter the keys to check for."
}
],
"items": {
"type": "string"
}
},
"operator": {
"type": "string",
"label": "Operator",
"description": [
{
"type": "subHeading",
"text": "Select the operator to use."
}
],
"enum": ["any", "all", "none"],
"default": "any"
}
},
"required": ["keys", "operator"]
}
},
{
"name": "Contains",
"id": "contains",
"type": "guardrail",
"supportedHooks": ["afterRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Checks if the content contains any, all or none of the words or phrases"
}
],
"parameters": {
"type": "object",
"properties": {
"words": {
"type": "array",
"label": "Words or Phrases",
"description": [
{
"type": "subHeading",
"text": "Enter the words or phrases to check for."
}
],
"items": {
"type": "string"
}
},
"operator": {
"type": "string",
"label": "Operator",
"description": [
{
"type": "subHeading",
"text": "Select the operator to use."
}
],
"enum": ["any", "all", "none"],
"default": "any"
}
},
"required": ["words", "operator"]
}
},
{
"name": "Valid URLs",
"id": "validUrls",
"type": "guardrail",
"supportedHooks": ["afterRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Checks if all the URLs mentioned in the content are valid"
}
],
"parameters": {
"type": "object",
"properties": {
"onlyDNS": {
"type": "boolean",
"label": "Only DNS (10x faster)",
"description": [
{
"type": "subHeading",
"text": "Only check if all URL domains resolve."
}
],
"default": false
},
"not": {
"type": "boolean",
"label": "Invert URL Validation",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be true when URLs are invalid"
}
],
"default": false
}
}
}
},
{
"name": "Webhook",
"id": "webhook",
"type": "guardrail",
"supportedHooks": ["beforeRequest", "afterRequest"],
"description": [
{
"type": "subHeading",
"text": "Makes a request to a webhook which returns the verdict and data"
}
],
"parameters": {
"type": "object",
"properties": {
"webhookURL": {
"type": "string",
"label": "Webhook URL",
"description": [
{
"type": "subHeading",
"text": "eg: https://webhook.site/guardrail"
}
]
},
"headers": {
"type": "json",
"label": "Headers",
"description": [
{
"type": "subHeading",
"text": "Enter the headers to send with the request."
}
]
}
},
"required": ["webhookURL"]
}
},
{
"name": "Log",
"id": "log",
"type": "guardrail",
"supportedHooks": ["afterRequest"],
"description": [
{
"type": "subHeading",
"text": "Makes a request to a log URL and always gives `true` as the verdict."
}
],
"parameters": {
"type": "object",
"properties": {
"logURL": {
"type": "string",
"label": "Log URL",
"description": [
{
"type": "subHeading",
"text": "eg: https://logging.site/collector"
}
]
},
"headers": {
"type": "json",
"label": "Headers",
"description": [
{
"type": "subHeading",
"text": "Enter the headers to send with the request."
}
]
}
},
"required": ["logURL"]
}
},
{
"name": "Contains Code",
"id": "containsCode",
"type": "guardrail",
"supportedHooks": ["afterRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Checks if the content contains code of format SQL, Python, TypeScript, etc."
}
],
"parameters": {
"type": "object",
"properties": {
"format": {
"type": "string",
"label": "Code Format",
"description": [
{
"type": "subHeading",
"text": "Select the code format to check for."
}
],
"enum": [
"SQL",
"Python",
"TypeScript",
"JavaScript",
"Java",
"C#",
"C++",
"C",
"Ruby",
"PHP",
"Swift",
"Kotlin",
"Go",
"Rust",
"Scala",
"R",
"Perl",
"Shell",
"HTML",
"CSS",
"XML",
"JSON",
"YAML",
"Markdown",
"Dockerfile"
]
},
"not": {
"type": "boolean",
"label": "Invert Code Check",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be true when code is not found"
}
],
"default": false
}
},
"required": ["format"]
}
},
{
"name": "Uppercase check",
"id": "alluppercase",
"type": "guardrail",
"supportedHooks": ["beforeRequest", "afterRequest"],
"description": [
{
"type": "subHeading",
"text": "Checks if content has all uppercase letters."
}
],
"parameters": {
"type": "object",
"properties": {
"not": {
"type": "boolean",
"label": "Invert Case Check",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be true when text is not all uppercase"
}
],
"default": false
}
}
}
},
{
"name": "Ends With",
"id": "endsWith",
"type": "guardrail",
"supportedHooks": ["beforeRequest", "afterRequest"],
"description": [
{
"type": "subHeading",
"text": "Check if the content ends with a specified string."
}
],
"parameters": {
"type": "object",
"properties": {
"suffix": {
"type": "string",
"label": "Suffix",
"description": [
{
"type": "subHeading",
"text": "Enter the suffix to check for."
}
]
},
"not": {
"type": "boolean",
"label": "Invert Suffix Check",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be true when text does not end with suffix"
}
],
"default": false
}
},
"required": ["suffix"]
}
},
{
"name": "Lowercase check",
"id": "alllowercase",
"type": "guardrail",
"supportedHooks": ["beforeRequest", "afterRequest"],
"description": [
{
"type": "subHeading",
"text": "Checks if content has all lowercase letters."
}
],
"parameters": {
"type": "object",
"properties": {
"not": {
"type": "boolean",
"label": "Invert Case Check",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be true when text is not all lowercase"
}
],
"default": false
}
}
}
},
{
"name": "Allowed Models",
"id": "modelwhitelist",
"type": "guardrail",
"supportedHooks": ["beforeRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Blocks any request whose model isn’t on this list."
}
],
"parameters": {
"type": "object",
"properties": {
"models": {
"type": "array",
"label": "Model list",
"description": [
{
"type": "subHeading",
"text": "Enter the allowed models. e.g. gpt-4o, llama-3-70b, mixtral-8x7b"
}
],
"items": {
"type": "string"
}
},
"not": {
"type": "boolean",
"label": "Invert Model Check",
"description": [
{
"type": "subHeading",
"text": "When on, any model in the list is blocked instead of allowed."
}
],
"default": false
}
},
"required": ["models"]
}
},
{
"name": "Model Rules",
"id": "modelRules",
"type": "guardrail",
"supportedHooks": ["beforeRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Allow requests based on metadata-driven rules mapping to allowed models."
}
],
"parameters": {
"type": "object",
"properties": {
"rules": {
"type": "object",
"label": "Rules object: {\"defaults\": [\"model\"], \"metadata\": {\"key\": {\"value\": [\"models\"]}}}",
"description": [
{
"type": "text",
"text": "Overrides model list using metadata-based routing."
}
]
},
"not": {
"type": "boolean",
"label": "Invert Model Check",
"description": [
{
"type": "text",
"text": "When on, any model resolved by rules is blocked instead of allowed."
}
],
"default": false
}
},
"required": ["rules"]
}
},
{
"name": "JWT",
"id": "jwt",
"type": "guardrail",
"supportedHooks": ["beforeRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Check if the JWT token is valid."
}
],
"parameters": {
"type": "object",
"properties": {
"jwksUri": {
"type": "string",
"label": "JWKS URI",
"description": [
{
"type": "subHeading",
"text": "Enter the JWKS URI of the JWT token."
}
]
},
"headerKey": {
"type": "string",
"label": "Header Key",
"description": [
{
"type": "subHeading",
"text": "Enter the header key to check for the JWT token."
}
]
},
"cacheMaxAge": {
"type": "number",
"label": "Cache Max Age",
"description": [
{
"type": "subHeading",
"text": "Enter the cache max age in seconds."
}
],
"default": 86400
},
"clockTolerance": {
"type": "number",
"label": "Clock Tolerance",
"description": [
{
"type": "subHeading",
"text": "Enter the clock tolerance in seconds."
}
],
"default": 5
},
"maxTokenAge": {
"type": "string",
"label": "Max Token Age",
"description": [
{
"type": "subHeading",
"text": "Enter the max token age."
}
],
"default": "1d"
}
},
"required": ["jwksUri", "headerKey"]
}
},
{
"name": "Required Metadata Keys",
"id": "requiredMetadataKeys",
"type": "guardrail",
"supportedHooks": ["beforeRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Checks if the metadata contains all the required keys"
}
],
"parameters": {
"type": "object",
"properties": {
"metadataKeys": {
"type": "array",
"label": "Metadata Keys",
"description": [
{
"type": "subHeading",
"text": "Enter the metadata keys to check for."
}
],
"items": {
"type": "string"
}
},
"operator": {
"type": "string",
"label": "Operator",
"description": [
{
"type": "subHeading",
"text": "Select the operator to use."
}
],
"enum": ["all", "any", "none"],
"default": "all"
}
},
"required": ["metadataKeys", "operator"]
}
},
{
"name": "Add Prefix",
"id": "addPrefix",
"type": "transformer",
"supportedHooks": ["beforeRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Adds a configurable prefix to the user's prompt or messages before sending to the AI model"
}
],
"parameters": {
"type": "object",
"properties": {
"prefix": {
"type": "string",
"label": "Prefix Text",
"description": [
{
"type": "subHeading",
"text": "The text to prepend to the user's prompt or message"
}
],
"default": "Please respond helpfully and accurately to the following: "
},
"applyToRole": {
"type": "string",
"label": "Apply to Role",
"description": [
{
"type": "subHeading",
"text": "For chat completions, which message role to apply the prefix to"
}
],
"enum": ["user", "system", "assistant"],
"default": "user"
},
"addToExisting": {
"type": "boolean",
"label": "Add to Existing Message",
"description": [
{
"type": "subHeading",
"text": "If true, adds prefix to existing message. If false, creates new message with prefix"
}
],
"default": true
},
"onlyIfEmpty": {
"type": "boolean",
"label": "Only Apply If Role Empty",
"description": [
{
"type": "subHeading",
"text": "Only apply prefix if no message exists for the specified role (useful for system messages)"
}
],
"default": false
}
},
"required": ["prefix"]
}
},
{
"name": "Not Null",
"id": "notNull",
"type": "guardrail",
"supportedHooks": ["afterRequestHook"],
"description": [
{
"type": "subHeading",
"text": "Checks if the response content is not null, undefined, or empty. Useful for detecting when an AI model returns no content."
}
],
"parameters": {
"type": "object",
"properties": {
"not": {
"type": "boolean",
"label": "Invert Check",
"description": [
{
"type": "subHeading",
"text": "If true, the verdict will be true when content IS null (inverts the check)"
}
],
"default": false
}
}
}
}
]
}