- 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>
224 lines
7.9 KiB
JavaScript
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 }; |