Design principles for building robust, fault-tolerant AI applications
Resilient AI Systems are designed to maintain functionality and performance despite failures, fluctuations in model quality, or changes in external dependencies by implementing defensive architecture patterns and graceful degradation mechanisms.
Scenario:
Application:
import { CircuitBreaker } from 'opossum';
import { OpenAI } from 'openai';
import { GoogleGenerativeAI } from '@google/generative-ai';
constructor() {
// Initialize clients
this.openaiClient = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
this.geminiClient = new GoogleGenerativeAI(process.env.GOOGLE_API_KEY || '');
// Basic keyword filter as ultimate fallback
this.keywordFilter = new Set([
'offensive', 'inappropriate', 'harmful'
// more keywords would be added in a real system
]);
// Create circuit breakers
this.openaiBreaker = new CircuitBreaker(this.moderateWithOpenAI.bind(this), {
failureThreshold: 3,
resetTimeout: 30000,
timeout: 5000
});
this.geminiBreaker = new CircuitBreaker(this.moderateWithGemini.bind(this), {
failureThreshold: 3,
resetTimeout: 30000,
timeout: 5000
});
// Set up event handlers
this.openaiBreaker.on('open', () => {
console.warn('OpenAI circuit breaker opened - switching to fallbacks');
});
this.geminiBreaker.on('open', () => {
console.warn('Gemini circuit breaker opened - switching to fallbacks');
});
}
// If primary is down, try secondary (Gemini)
if (!this.geminiBreaker.opened) {
return await this.geminiBreaker.fire(content);
}
// If both AI services are down, use keyword filter fallback
return this.keywordFilterFallback(content);
} catch (error) {
console.error('All moderation methods failed:', error);
// In extreme failure, apply maximum caution
return {
isAcceptable: false,
confidence: 1.0,
method: 'emergency_fallback'
};
}
}
private keywordFilterFallback(content: string): ModerationType {
const contentLower = content.toLowerCase();
let matched = false;
for (const keyword of this.keywordFilter) {
if (contentLower.includes(keyword)) {
matched = true;
break;
}
}
return {
isAcceptable: !matched,
confidence: matched ? 0.8 : 0.6, // Lower confidence for this method
method: 'keyword_filter'
};
}
}
```
#resilientAI #faultTolerance #circuitBreaker #gracefulDegradation #AIReliability #defensiveDesign #highAvailability
Sources: