From a8bedc7fbcd567d55ec3d8011f7b796c7fe266b6 Mon Sep 17 00:00:00 2001 From: salvacybersec Date: Tue, 11 Nov 2025 02:49:12 +0300 Subject: [PATCH] feat: Significantly improve AI prompt quality for template generation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enhanced system prompt: - Professional cyber security expert role - Modern HTML/CSS styling instructions - Responsive design requirements - Persuasive and urgent tone guidance - Turkish language grammar emphasis - Realistic corporate email appearance Enhanced user prompt: - Better structured input with emojis (📌) - Clear field labels (HEDEF ŞİRKET, SENARYO, etc.) - Detailed HTML example with inline CSS - Button styling, footer, responsive design - Max 70 char subject line guidance - Multiple warnings for quality output All user inputs are sent to AI: ✅ company_name (Şirket Adı) ✅ scenario (Senaryo) ✅ employee_info (Çalışan Bilgisi) - optional ✅ custom_prompt (Ek Talimatlar) - optional template_name and template_type are for DB only, NOT sent to AI. This will produce much higher quality, styled HTML emails. --- backend/src/services/ollama.service.js | 55 +++++++++++++++----------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/backend/src/services/ollama.service.js b/backend/src/services/ollama.service.js index 04c38f2..d4e626c 100644 --- a/backend/src/services/ollama.service.js +++ b/backend/src/services/ollama.service.js @@ -96,43 +96,52 @@ class OllamaService { const { company_name, scenario, employee_info, custom_prompt } = params; // Build the prompt - const systemPrompt = `Sen profesyonel bir güvenlik uzmanısın ve phishing test maileri oluşturuyorsun. -Amacın gerçekçi, ikna edici ancak zararsız test mailleri oluşturmak. -Mail şablonları HTML formatında olmalı ve modern, profesyonel görünmeli. -Şablon içinde {{company_name}} ve {{employee_name}} placeholder'ları kullan.`; + const systemPrompt = `Sen profesyonel bir siber güvenlik uzmanısın ve şirketler için phishing farkındalık testi mail şablonları oluşturuyorsun. - let userPrompt = `Aşağıdaki bilgilere göre bir phishing test mail şablonu oluştur: +GÖREV: Gerçekçi, ikna edici ve profesyonel phishing test mailleri oluştur. -Şirket: ${company_name} -Senaryo: ${scenario}`; +KURALLAR: +1. Mail şablonları modern HTML/CSS ile tasarlanmalı +2. Gerçek şirket maillerine benzer görünmeli +3. İkna edici ve inandırıcı olmalı +4. Türkçe dil bilgisi ve imla kurallarına uygun olmalı +5. Kullanıcıyı aciliyet hissi ile harekete geçirmeli +6. Şirket logosu/branding için placeholder kullan + +ZORUNLU PLACEHOLDER'LAR: +- {{company_name}} - Şirket adı +- {{employee_name}} - Çalışan adı (varsa "Sayın {{employee_name}}", yoksa "Sayın Yetkili") +- {{tracking_url}} - Tıklama linki (button veya link olarak) + +YANIT FORMATI: Sadece ve sadece JSON, hiçbir ek açıklama yok!`; + + let userPrompt = `Aşağıdaki bilgilere göre profesyonel bir phishing test mail şablonu oluştur: + +📌 HEDEF ŞİRKET: ${company_name} +📌 SENARYO: ${scenario}`; if (employee_info) { - userPrompt += `\nÇalışan Bilgisi: ${employee_info}`; + userPrompt += ` +📌 HEDEF KİTLE: ${employee_info}`; } if (custom_prompt) { - userPrompt += `\nEk Talimatlar: ${custom_prompt}`; + userPrompt += ` +📌 ÖZEL TALİMATLAR: ${custom_prompt}`; } userPrompt += ` -ÖNEMLI: -1. Yanıtını JSON formatında ver -2. İki alan olmalı: "subject" (konu) ve "body" (HTML mail içeriği) -3. Body HTML formatında, modern ve profesyonel olmalı -4. {{company_name}} ve {{employee_name}} placeholder'larını kullan -5. Gerçekçi ve ikna edici olmalı -6. Link için {{tracking_url}} placeholder'ını kullan - -ÇOK ÖNEMLİ: Yanıtın SADECE JSON olmalı, başka hiçbir metin olmamalı! - -Kesinlikle bu formatta yanıt ver: +JSON YANIT FORMATI (AYNEN BU YAPIDA): { - "subject": "Mail konusu buraya", - "body": "

Başlık

Mail içeriği buraya

Link" + "subject": "İkna edici mail konusu buraya (max 70 karakter)", + "body": "

Başlık

Sayın {{employee_name}},

Mail içeriği buraya - ikna edici ve aciliyet vurgulu

Butona tıklat" } -SADECE JSON döndür, hiç açıklama yazma!`; +⚠️ SADECE JSON DÖNDÜR! Açıklama, not, yorum YAZMA! +⚠️ Body içinde CSS stillendir, responsive yap! +⚠️ Konuyu çekici ve acil yap! +⚠️ HTML'i tam ve geçerli oluştur!`; try { logger.info(`Generating template for company: ${company_name}, scenario: ${scenario}`);