Application systématique et méthodique de tous les patches historiques. ## ✅ FICHIERS SYNCHRONISÉS (19 fichiers) ### Core & Infrastructure: - server.js (14 patches) - Lazy loading ModeManager, SIGINT hard kill, timing logs - ModeManager.js (4 patches) - Instrumentation complète avec timing détaillé ### Pipeline System: - PipelineDefinition.js (6 patches) - Source unique getLLMProvidersList() - pipeline-builder.js (8 patches) - Standardisation LLM providers - pipeline-runner.js (6 patches) - Affichage résultats structurés + debug console - pipeline-builder.html (2 patches) - Fallback providers synchronisés - pipeline-runner.html (3 patches) - UI améliorée résultats ### Enhancement Layers: - TechnicalLayer.js (1 patch) - defaultLLM: 'gpt-4o-mini' - StyleLayer.js (1 patch) - Type safety vocabulairePref - PatternBreakingCore.js (1 patch) - Mapping modifications - PatternBreakingLayers.js (1 patch) - LLM standardisé ### Validators & Tests: - QualityMetrics.js (1 patch) - callLLM('gpt-4o-mini') - PersonalityValidator.js (1 patch) - Provider gpt-4o-mini - AntiDetectionValidator.js - Synchronisé ### Documentation: - TODO.md (1 patch) - Section LiteLLM pour tracking coûts - CLAUDE.md - Documentation à jour ### Tools: - tools/analyze-skipped-exports.js (nouveau) - tools/apply-claude-exports.js (nouveau) - tools/apply-claude-exports-fuzzy.js (nouveau) ## 🎯 Changements principaux: - ✅ Standardisation LLM providers (openai → gpt-4o-mini, claude → claude-sonnet-4-5) - ✅ Lazy loading optimisé (ModeManager chargé à la demande) - ✅ SIGINT immediate exit (pas de graceful shutdown) - ✅ Type safety renforcé (conversions string explicites) - ✅ Instrumentation timing complète - ✅ Debug logging amélioré (console.log résultats pipeline) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
6.4 KiB
6.4 KiB
TODO - AMÉLIORATIONS WORKFLOW CRITIQUES
🚨 PRIORITÉ 1 - INTÉGRATION IA DANS PERSONNALITÉS
PROBLÈME ACTUEL
- Les fallback IA ont été supprimés pour éviter la dégradation de qualité
- Si une IA échoue (Claude, OpenAI, Gemini, Mistral), le workflow s'arrête brutalement
- Aucune stratégie de récupération intelligente
SOLUTION REQUISE
Intégrer les préférences IA directement dans les profils de personnalités Google Sheets
Nouveaux champs à ajouter dans la sheet "Personnalités" :
LLM_Prefere: LLM principal pour cette personnalité (ex: "claude", "openai")LLM_Fallback: LLM de secours si le principal échoueTemperature: Température spécifique à la personnalité (0.7-1.0)Style_Prompt: Instructions spécifiques pour adapter le prompt au style
Exemple de données :
Marc | Expert technique | ... | claude | openai | 0.8 | "Utilise un vocabulaire technique précis"
Sophie | Passionnée | ... | gemini | mistral | 1.0 | "Sois chaleureux et utilise des anecdotes"
Logique de fallback intelligent :
- Utiliser
LLM_Preferede la personnalité - Si échec → utiliser
LLM_Fallbackde la personnalité - Si échec → relancer avec nouvelle personnalité (voir ci-dessous)
🔄 PRIORITÉ 2 - RELANCE AVEC NOUVELLE PERSONNALITÉ
PROBLÈME ACTUEL
- Si l'enhancement d'une personnalité échoue, le workflow s'arrête
- Perte complète du travail déjà effectué
SOLUTION REQUISE
Système de relance avec sélection d'une nouvelle personnalité
Stratégie de récupération :
- Détection d'échec : Capturer les erreurs IA lors de l'enhancement
- Sauvegarde état : Garder le contenu généré jusqu'à l'étape qui a échoué
- Nouvelle sélection : Choisir une personnalité différente avec LLM disponible
- Reprise partielle : Reprendre seulement l'étape qui a échoué, pas tout le workflow
Implémentation suggérée :
async function enhanceWithPersonalityRecovery(content, personality, attempt = 1) {
try {
return await enhance(content, personality);
} catch (error) {
if (attempt < 3) {
const newPersonality = selectAlternativePersonality(personality);
logSh(`🔄 Relance tentative ${attempt + 1} avec ${newPersonality.nom}`, 'INFO');
return await enhanceWithPersonalityRecovery(content, newPersonality, attempt + 1);
}
throw new Error(`FATAL: Échec après 3 tentatives avec personnalités différentes`);
}
}
📋 PRIORITÉ 3 - INTÉGRATION LITELLM POUR TRACKING COÛTS
PROBLÈME ACTUEL
- Impossible de récupérer les crédits restants via les APIs des providers (OpenAI, Anthropic, etc.)
- OpenAI a supprimé l'endpoint
/v1/dashboard/billing/credit_grantspour les soldes USD - Anthropic n'a aucune API pour la balance (feature request ouverte depuis longtemps)
- Pas de visibilité centralisée sur les coûts multi-providers
SOLUTION REQUISE
Intégrer LiteLLM comme proxy pour tracking automatique des coûts
Pourquoi LiteLLM :
- ✅ Standard de l'industrie : Utilisé par la majorité des projets multi-LLM
- ✅ Support 100+ LLMs : OpenAI, Anthropic, Google, Deepseek, Moonshot, Mistral, etc.
- ✅ Tracking automatique : Intercepte tous les appels et calcule les coûts
- ✅ Dashboard unifié : Vue centralisée par user/team/API key
- ✅ API de métriques : Récupération programmatique des stats
Implémentation suggérée :
# Installation
pip install litellm[proxy]
# Démarrage proxy
litellm --config litellm_config.yaml
# litellm_config.yaml
model_list:
- model_name: gpt-5
litellm_params:
model: openai/gpt-5
api_key: ${OPENAI_API_KEY}
- model_name: claude-sonnet-4-5
litellm_params:
model: anthropic/claude-sonnet-4-5-20250929
api_key: ${ANTHROPIC_API_KEY}
# ... autres models
Changements dans notre code :
- LLMManager.js : Router tous les appels via LiteLLM proxy (localhost:8000)
- LLM Monitoring : Récupérer les stats via l'API LiteLLM
- Dashboard : Afficher "Dépensé ce mois" au lieu de "Crédits restants"
Alternatives évaluées :
- Langfuse : Bien mais moins de models supportés
- Portkey : Commercial, pas open source
- Helicone : Plus basique
- Tracking maison : Trop de maintenance, risque d'erreurs de calcul
Avantages supplémentaires :
- 🔄 Load balancing : Rotation automatique entre plusieurs clés API
- 📊 Analytics : Métriques détaillées par endpoint/user/model
- 🚨 Alertes : Notifications quand budget dépassé
- 💾 Caching : Cache intelligent pour réduire les coûts
📋 PRIORITÉ 4 - AUTRES AMÉLIORATIONS
A. Monitoring des échecs IA
- Logging détaillé : Quel LLM échoue, quand, pourquoi
- Métriques de fiabilité : Taux de succès par LLM et par personnalité
- Alertes proactives : Notification si un LLM devient indisponible
B. Configuration dynamique
- Tests de connectivité : Vérifier la disponibilité des LLM avant le workflow
- Sélection intelligente : Éviter les LLM connus comme indisponibles
- Mise en cache : Cache des réponses LLM pour éviter les redondances
C. Rollback partiel
- Sauvegarde étapes : Sauvegarder le résultat de chaque étape du workflow
- Reprise granulaire : Reprendre à l'étape qui a échoué, pas depuis le début
⚡ IMPLÉMENTATION IMMÉDIATE
Étape 1 : Modifier Google Sheets
- Ajouter colonnes dans sheet "Personnalités"
- Remplir les données pour les 15 personnalités existantes
- Tester la lecture des nouvelles colonnes
Étape 2 : Adapter le code
- BrainConfig.js : Lire les nouveaux champs LLM des personnalités
- SelectiveEnhancement.js : Utiliser les LLM préférés par personnalité
- LLMManager.js : Ajouter logique de fallback par personnalité
Étape 3 : Tests
- Tester avec LLM indisponible volontairement
- Vérifier la relance avec nouvelle personnalité
- Valider la qualité du contenu avec les fallbacks
🎯 RÉSULTAT ATTENDU
- 99% de disponibilité : Le workflow ne s'arrête plus pour des problèmes IA temporaires
- Qualité préservée : Chaque personnalité utilise son LLM optimal
- Récupération intelligente : Échec d'une personnalité = essai avec une autre
- Zero perte de travail : Reprise à l'étape d'échec, pas restart complet