Skip to content

createValidationMiddleware

createValidationMiddleware(config): Middleware

Defined in: packages/middleware/src/validation.ts:752

Create input validation middleware

Validates and sanitizes requests to prevent security issues and ensure data quality.

ValidationConfig = {}

Validation configuration

Middleware

Middleware function

import { createValidationMiddleware } from 'ai.matey';
const validation = createValidationMiddleware({
maxMessages: 100,
maxTotalTokens: 128000,
preventPromptInjection: true,
});
bridge.use(validation);
const validation = createValidationMiddleware({
detectPII: true,
piiAction: 'redact', // or 'block', 'warn', 'log'
piiPatterns: {
email: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,
ssn: /\b\d{3}-\d{2}-\d{4}\b/g,
},
});
const validation = createValidationMiddleware({
moderationCallback: async (content) => {
// Call external moderation API
const result = await moderationAPI.check(content);
return {
flagged: result.flagged,
categories: result.categories,
scores: result.scores,
};
},
blockFlaggedContent: true,
});
const validation = createValidationMiddleware({
customValidator: async (request) => {
const errors: ValidationError[] = [];
// Custom business logic
if (request.messages.some(m => m.content.includes('forbidden'))) {
errors.push(new ValidationError(
'Forbidden content detected',
'messages',
'forbidden'
));
}
return errors;
},
});
const validation = createValidationMiddleware({
maxMessages: 100,
maxTotalTokens: 128000,
maxTokensPerMessage: 32000,
maxMessageLength: 100000,
blockEmptyMessages: true,
detectPII: true,
piiAction: 'redact',
preventPromptInjection: true,
sanitizeMessages: true,
validateModel: true,
allowedModels: ['gpt-4', 'claude-3-sonnet', 'gemini-pro'],
validateTemperature: true,
temperatureRange: [0, 2],
throwOnError: true,
logWarnings: true,
});