{ "type": "REST", "operations": [ { "name": "Validate", "key": "validate", "inputParameters": [ { "name": "text", "displayName": "Content to check", "type": "string", "required": true, "bodyLocation": "prompt" } ], "outputParameters": [ { "name": "passed", "displayName": "Passed", "type": "boolean", "applyMappingConfig": "always" }, { "name": "reason", "displayName": "Reason", "type": "string", "applyMappingConfig": "always" } ], "config": { "method": "POST", "url": "/analyze/prompt", "httpResponseHandler": { "type": "script", "implementation": { "language": "javascript", "script": "var statusCode = flwHttpResponse.getStatusCode();\n\nif(statusCode === 401 || statusCode === 403) {\n throw 'LLM Guard authentication failed (HTTP ' + statusCode + '). Verify the auth token is configured correctly.';\n}\n\nif(statusCode < 200 || statusCode >= 300) {\n throw 'LLM Guard API returned HTTP ' + statusCode + ': ' + flwHttpResponse.getBody();\n}\n\nvar json = flw.json.stringToJson(flwHttpResponse.getBody());\nvar result = flw.json.createObject();\nvar isValid = json.path('is_valid').asBoolean();\n\nif(!isValid) {\n result.putBoolean('passed', false);\n var scanners = json.path('scanners');\n var failedScanners = [];\n var scannerNames = scanners.fieldNames();\n for (var i = 0; i < scannerNames.size(); i++) {\n var scannerName = scannerNames.get(i);\n var score = scanners.path(scannerName).asDouble();\n if (score > 0.5) {\n failedScanners.push(scannerName + ' (score: ' + score + ')');\n }\n }\n result.putString('reason', 'LLM Guard flagged: ' + failedScanners.join(', '));\n} else {\n result.putBoolean('passed', true);\n result.putString('reason', '');\n}\n\nflwHttpResponse.setBody(flw.json.jsonToString(result));" } } }, "type": "search" } ], "config": { "baseUrl": "http://localhost:8000", "authorization": { "bearer": { "token": { "type": "default", "value": "my-llm-guard-token" } } } }, "name": "LLM Guard Guardrail", "key": "llmGuardGuardrail", "description": "Comprehensive content scanning using LLM Guard (Protect AI). Includes prompt injection, toxicity, PII, jailbreak detection, and more." }