seo-generator-server/tests/prompt-engine-demo.js
StillHammer f51c4095f6 Add modular pipeline demo system with real module integration
- Add complete modular demo interface (public/modular-pipeline-demo.html)
- Add standalone demo server (simple-server.js) on port 3333
- Integrate real SelectiveCore, AdversarialCore, HumanSimulation, PatternBreaking modules
- Add configurable pipeline with step-by-step content transformation display
- Add new trend management and workflow configuration modules
- Add comprehensive test suite for full pipeline validation
- Update core modules for better modular integration and demo compatibility

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-23 16:03:20 +08:00

224 lines
7.9 KiB
JavaScript

// ========================================
// 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 };