// ======================================== // DEMO DYNAMIC PROMPT ENGINE // Démonstration du système de prompt engineering dynamique avancé // ======================================== const { DynamicPromptEngine } = require('../lib/prompt-engine/DynamicPromptEngine'); async function demoPromptEngine() { console.log('🧠 === DEMO DYNAMIC PROMPT ENGINE ===\n'); const engine = new DynamicPromptEngine(); // Status initial console.log('📊 Status du moteur:'); const status = engine.getEngineStatus(); console.log(` • Templates: ${status.templates.join(', ')}`); console.log(` • Analyseurs: ${status.contextAnalyzers.join(', ')}`); console.log(` • Règles: ${status.adaptiveRules.join(', ')}`); console.log(` • Total composants: ${status.totalComponents}\n`); // ======================================== // TEST 1: PROMPT TECHNIQUE STANDARD // ======================================== console.log('🔧 === TEST 1: PROMPT TECHNIQUE STANDARD ==='); const testContent = { titre: 'Installation panneau signalétique', intro: 'Guide complet pour installer vos panneaux', section1: 'Étapes de montage détaillées' }; const csvData = { mc0: 'plaque signalétique aluminium', personality: { nom: 'Marc', style: 'technique' } }; const result1 = await engine.generateAdaptivePrompt({ templateType: 'technical', content: testContent, csvData: csvData, layerConfig: { intensity: 1.0, targetTerms: ['dibond', 'fixation', 'visserie'], focusAreas: ['précision technique', 'normes ISO'] } }); console.log('✅ Prompt généré:'); console.log(result1.prompt); console.log('\n📊 Métadonnées:'); console.log(` • Longueur: ${result1.metadata.stats.promptLength} caractères`); console.log(` • Variables: ${result1.metadata.stats.variablesCount}`); console.log(` • Complexité: ${result1.metadata.contextAnalysis.complexity_level}`); console.log(` • Domaine: ${result1.metadata.contextAnalysis.domain}\n`); // ======================================== // TEST 2: PROMPT AVEC TENDANCE ECO // ======================================== console.log('🌱 === TEST 2: PROMPT AVEC TENDANCE ECO-RESPONSABLE ==='); const trend = { id: 'eco-responsable', name: 'Eco-Responsable', config: { technical: { targetTerms: ['durable', 'écologique', 'recyclé'], focusAreas: ['impact environnemental', 'cycle de vie'] } } }; const result2 = await engine.generateAdaptivePrompt({ templateType: 'style', content: testContent, csvData: csvData, trend: trend, layerConfig: { intensity: 1.2, targetStyle: 'responsable et engagé' } }); console.log('✅ Prompt avec tendance éco:'); console.log(result2.prompt); console.log('\n📊 Adaptations appliquées:'); Object.entries(result2.metadata.adaptiveConfig).forEach(([key, value]) => { console.log(` • ${key}: ${value}`); }); console.log(); // ======================================== // TEST 3: PROMPT ADVERSARIAL INTENSIF // ======================================== console.log('🕵️ === TEST 3: PROMPT ADVERSARIAL INTENSIF ==='); const result3 = await engine.generateAdaptivePrompt({ templateType: 'adversarial', content: testContent, csvData: csvData, layerConfig: { intensity: 1.5, detectorTypes: ['GPTZero', 'Originality.ai'], stealthLevel: 'maximum' }, customVariables: { detector_types: 'GPTZero, Originality.ai, détecteurs IA', target_scores: 'Humain 95%+, IA <5%', stealth_techniques: 'variations syntaxiques, erreurs humaines, styles multiples' } }); console.log('✅ Prompt adversarial:'); console.log(result3.prompt); console.log('\n📊 Variables personnalisées injectées:'); result3.metadata.dynamicVariables.forEach(varName => { console.log(` • ${varName}`); }); console.log(); // ======================================== // TEST 4: COMPARAISON INTENSITÉS // ======================================== console.log('⚖️ === TEST 4: COMPARAISON INTENSITÉS ==='); const intensities = [0.5, 1.0, 1.5]; for (const intensity of intensities) { const result = await engine.generateAdaptivePrompt({ templateType: 'technical', content: testContent, csvData: csvData, layerConfig: { intensity } }); console.log(`🎛️ Intensité ${intensity}:`); console.log(` • Précision: ${result.metadata.adaptiveConfig.precision || 'standard'}`); console.log(` • Style: ${result.metadata.adaptiveConfig.style || 'standard'}`); console.log(` • Instructions: ${result.metadata.adaptiveConfig.instruction_type || 'STANDARD'}`); console.log(` • Longueur: ${result.metadata.stats.promptLength} chars\n`); } // ======================================== // TEST 5: TEMPLATE PERSONNALISÉ // ======================================== console.log('✨ === TEST 5: TEMPLATE PERSONNALISÉ ==='); // Ajouter template personnalisé engine.addCustomTemplate('creative', { meta: { role: "Tu es un créatif visionnaire spécialisé en {creative_domain}", inspiration: "Puise ton inspiration dans {inspiration_sources}", innovation: "Adopte une approche {innovation_level} et {creativity_style}" }, context: { creative_brief: "BRIEF CRÉATIF: {creative_objective}", target_emotion: "ÉMOTION RECHERCHÉE: {target_feeling}", creative_constraints: "CONTRAINTES CRÉATIVES: {creative_limits}" }, task: { creative_transformation: "TRANSFORMATION CRÉATIVE: {transformation_goal}", artistic_vision: "VISION ARTISTIQUE: {artistic_approach}", innovation_injection: "INJECTION D'INNOVATION: {innovation_methods}" } }); const result5 = await engine.generateAdaptivePrompt({ templateType: 'creative', content: testContent, csvData: csvData, customVariables: { creative_domain: 'communication visuelle immersive', inspiration_sources: 'art contemporain, design nordique, biomimétisme', innovation_level: 'disruptive', creativity_style: 'minimaliste premium', creative_objective: 'révolutionner l\'expérience signalétique', target_feeling: 'émerveillement et sophistication' } }); console.log('✅ Template créatif personnalisé:'); console.log(result5.prompt); console.log('\n📊 Status final:'); const finalStatus = engine.getEngineStatus(); console.log(` • Templates disponibles: ${finalStatus.templates.length}`); console.log(` • Nouveau template: ${finalStatus.templates.includes('creative') ? '✅' : '❌'}`); console.log('\n🎯 === DEMO TERMINÉE ==='); console.log('Le DynamicPromptEngine offre:'); console.log('• 🧠 Analyse contextuelle automatique'); console.log('• 🎛️ Adaptation selon intensité et tendances'); console.log('• 🔧 Templates modulaires multi-niveaux'); console.log('• ✨ Extensibilité complète (templates, règles, analyseurs)'); console.log('• 📊 Métadonnées détaillées pour debugging'); } // FONCTION HELPER - Test rapide d'un template async function quickTemplateTest(templateType, description) { console.log(`\n🚀 Test rapide: ${description}`); const engine = new DynamicPromptEngine(); const result = await engine.generateAdaptivePrompt({ templateType, content: { test: 'Contenu de test' }, csvData: { mc0: 'test signalétique' }, layerConfig: { intensity: 1.0 } }); console.log('📏 Résumé:'); console.log(` • Longueur: ${result.metadata.stats.promptLength} chars`); console.log(` • Variables: ${result.metadata.stats.variablesCount}`); console.log(` • Complexité: ${result.metadata.contextAnalysis.complexity_level}`); return result; } // EXÉCUTER DEMO if (require.main === module) { demoPromptEngine() .catch(console.error); } // Export pour tests module.exports = { demoPromptEngine, quickTemplateTest };