feat: Add Ollama AI integration for automatic mail template generation
✨ New Features: - 🤖 AI-powered mail template generation with Ollama - 📧 Test mail sending with preview - 🔧 Ollama server and model management - 🎨 Beautiful AI generation dialog in Templates page - ⚙️ Ollama settings panel with connection test Backend: - Add ollama.service.js - Ollama API integration - Add ollama.controller.js - Template generation endpoint - Add ollama.routes.js - /api/ollama/* routes - Support for multiple Ollama models (llama3.2, mistral, gemma) - JSON-formatted AI responses with subject + HTML body - Configurable server URL and model selection Frontend: - Settings: Ollama configuration panel - Server URL input - Model selection - Connection test with model listing - Templates: AI generation dialog - Company name, scenario, employee info inputs - Custom prompt for AI instructions - Auto-save to database - Test mail sending functionality Documentation: - OLLAMA_SETUP.md - Comprehensive setup guide - Installation instructions - Model recommendations - Usage examples - Troubleshooting Tech Stack: - Ollama API integration (REST) - Axios HTTP client - React dialogs with MUI - Self-hosted AI (privacy-friendly) - Zero external API dependencies Example Usage: Company: Garanti Bankası Scenario: Account security warning → AI generates professional phishing test mail in seconds!
This commit is contained in:
307
OLLAMA_SETUP.md
Normal file
307
OLLAMA_SETUP.md
Normal file
@@ -0,0 +1,307 @@
|
||||
# 🤖 Ollama AI Entegrasyonu
|
||||
|
||||
## Genel Bakış
|
||||
|
||||
Phishing Test Yönetim Paneli, **Ollama AI** entegrasyonu ile otomatik mail şablonları oluşturabilir. Bu özellik, gerçekçi ve özelleştirilebilir phishing test maillerini dakikalar içinde üretmenizi sağlar.
|
||||
|
||||
## 🚀 Özellikler
|
||||
|
||||
### 1. **AI ile Mail Şablonu Oluşturma**
|
||||
- Şirket adı, senaryo ve hedef bilgilerine göre otomatik mail oluşturma
|
||||
- HTML formatında profesyonel mail içeriği
|
||||
- Özelleştirilebilir placeholder'lar (`{{company_name}}`, `{{employee_name}}`, `{{tracking_url}}`)
|
||||
- Otomatik konu satırı (subject) oluşturma
|
||||
|
||||
### 2. **Test Mail Gönderimi**
|
||||
- Oluşturulan şablonları test etme
|
||||
- Placeholder'ları doldurarak gerçek görünüm
|
||||
- Herhangi bir mail adresine test gönderimi
|
||||
|
||||
### 3. **Ollama Yönetimi**
|
||||
- Ollama sunucu bağlantı testi
|
||||
- Mevcut modelleri listeleme
|
||||
- Model seçimi ve yönetimi
|
||||
|
||||
## 📋 Gereksinimler
|
||||
|
||||
### 1. Ollama Kurulumu
|
||||
|
||||
#### Linux
|
||||
```bash
|
||||
curl -fsSL https://ollama.com/install.sh | sh
|
||||
```
|
||||
|
||||
#### macOS
|
||||
```bash
|
||||
brew install ollama
|
||||
```
|
||||
|
||||
#### Windows
|
||||
[Ollama Windows İndirme](https://ollama.com/download/windows)
|
||||
|
||||
### 2. Model İndirme
|
||||
|
||||
Önerilen modeller:
|
||||
|
||||
```bash
|
||||
# Llama 3.2 (Önerilen - hızlı ve etkili)
|
||||
ollama pull llama3.2
|
||||
|
||||
# Alternatifler:
|
||||
ollama pull mistral # Hızlı, compact
|
||||
ollama pull gemma # Google'ın modeli
|
||||
ollama pull llama2 # Eski ama stabil
|
||||
```
|
||||
|
||||
### 3. Ollama Servisini Başlatma
|
||||
|
||||
```bash
|
||||
# Servis olarak başlat
|
||||
ollama serve
|
||||
|
||||
# Veya systemd ile (Linux)
|
||||
systemctl start ollama
|
||||
systemctl enable ollama
|
||||
```
|
||||
|
||||
## ⚙️ Yapılandırma
|
||||
|
||||
### 1. Panel Ayarları
|
||||
|
||||
1. **Ayarlar** sayfasına gidin
|
||||
2. **🤖 Ollama AI Ayarları** bölümünde:
|
||||
- **Ollama Server URL**: `http://localhost:11434` (varsayılan)
|
||||
- **Model**: `llama3.2` (veya tercih ettiğiniz model)
|
||||
3. **Bağlantıyı Test Et** butonuna tıklayın
|
||||
4. Mevcut modelleri görün
|
||||
5. **Kaydet** butonuna tıklayın
|
||||
|
||||
### 2. Ortam Değişkenleri (Opsiyonel)
|
||||
|
||||
`.env` dosyasında varsayılan değerleri ayarlayabilirsiniz:
|
||||
|
||||
```bash
|
||||
OLLAMA_URL=http://localhost:11434
|
||||
OLLAMA_MODEL=llama3.2
|
||||
```
|
||||
|
||||
## 🎯 Kullanım
|
||||
|
||||
### AI ile Şablon Oluşturma
|
||||
|
||||
1. **Mail Şablonları** sayfasına gidin
|
||||
2. **AI ile Oluştur** butonuna tıklayın
|
||||
3. Formu doldurun:
|
||||
- **Şablon Adı**: Şablona verilecek isim
|
||||
- **Template Type**: Şablon tipi (örn: `bank`, `hr`, `it_support`)
|
||||
- **Şirket Adı**: Hedef şirket (örn: "Acme Corporation")
|
||||
- **Senaryo**: Mail senaryosu (örn: "Şifre sıfırlama maili")
|
||||
- **Çalışan Bilgisi** (opsiyonel): Hedef çalışan hakkında bilgi
|
||||
- **Ek Talimatlar** (opsiyonel): AI'ya özel talimatlar
|
||||
4. **Oluştur** butonuna tıklayın
|
||||
5. AI, birkaç saniye içinde profesyonel bir mail şablonu oluşturacak
|
||||
6. Şablon otomatik olarak veritabanına kaydedilir
|
||||
|
||||
### Senaryo Örnekleri
|
||||
|
||||
#### Banka Şablonu
|
||||
```
|
||||
Senaryo: "Hesap güvenlik uyarısı - şüpheli aktivite tespit edildi ve doğrulama gerekiyor"
|
||||
Şirket: Garanti Bankası
|
||||
Çalışan Bilgisi: Bireysel müşteri
|
||||
```
|
||||
|
||||
#### İK Şablonu
|
||||
```
|
||||
Senaryo: "Yıllık performans değerlendirme formu doldurulması gerekiyor"
|
||||
Şirket: Acme Tech
|
||||
Çalışan Bilgisi: Yazılım geliştirici
|
||||
Ek Talimat: Resmi ve profesyonel dil kullan
|
||||
```
|
||||
|
||||
#### IT Destek Şablonu
|
||||
```
|
||||
Senaryo: "Sistem güncellemesi için kullanıcı bilgilerinin doğrulanması"
|
||||
Şirket: XYZ Corporation
|
||||
Çalışan Bilgisi: Ofis çalışanı
|
||||
Ek Talimat: Teknik terimler kullan, aciliyet vurgusu yap
|
||||
```
|
||||
|
||||
### Test Mail Gönderme
|
||||
|
||||
1. Şablonlar listesinde istediğiniz şablonun yanındaki **Test Mail** butonuna tıklayın
|
||||
2. Test mail adresini girin
|
||||
3. Placeholder değerlerini düzenleyin:
|
||||
- Şirket Adı
|
||||
- Çalışan Adı
|
||||
4. **Gönder** butonuna tıklayın
|
||||
5. Test maili belirttiğiniz adrese gönderilir
|
||||
|
||||
## 🔧 Teknik Detaylar
|
||||
|
||||
### API Endpoints
|
||||
|
||||
#### Ollama Bağlantı Testi
|
||||
```http
|
||||
GET /api/ollama/test
|
||||
```
|
||||
|
||||
#### Mevcut Modelleri Listeleme
|
||||
```http
|
||||
GET /api/ollama/models
|
||||
```
|
||||
|
||||
#### AI ile Şablon Oluşturma
|
||||
```http
|
||||
POST /api/ollama/generate-template
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"company_name": "Acme Corp",
|
||||
"scenario": "Şifre sıfırlama",
|
||||
"employee_info": "IT personeli",
|
||||
"custom_prompt": "Aciliyet vurgusu yap",
|
||||
"template_name": "Acme Şifre Sıfırlama",
|
||||
"template_type": "it_support"
|
||||
}
|
||||
```
|
||||
|
||||
#### Test Mail Gönderme
|
||||
```http
|
||||
POST /api/ollama/send-test-mail
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"test_email": "test@example.com",
|
||||
"subject": "Test Subject",
|
||||
"body": "<html>...</html>",
|
||||
"company_name": "Test Company",
|
||||
"employee_name": "John Doe"
|
||||
}
|
||||
```
|
||||
|
||||
### Ollama Servisi Yapılandırması
|
||||
|
||||
Backend servisi Ollama'yı otomatik olarak yapılandırır:
|
||||
|
||||
```javascript
|
||||
// backend/src/services/ollama.service.js
|
||||
class OllamaService {
|
||||
constructor() {
|
||||
this.serverUrl = 'http://localhost:11434';
|
||||
this.model = 'llama3.2';
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### AI Prompt Yapısı
|
||||
|
||||
AI'ya gönderilen prompt:
|
||||
|
||||
```
|
||||
System: Sen profesyonel bir güvenlik uzmanısın ve phishing test maileri oluşturuyorsun.
|
||||
|
||||
User: Aşağıdaki bilgilere göre bir phishing test mail şablonu oluştur:
|
||||
- Şirket: [company_name]
|
||||
- Senaryo: [scenario]
|
||||
- Çalışan Bilgisi: [employee_info]
|
||||
- Ek Talimatlar: [custom_prompt]
|
||||
|
||||
Yanıt JSON formatında:
|
||||
{
|
||||
"subject": "Mail konusu",
|
||||
"body": "<html>Mail içeriği</html>"
|
||||
}
|
||||
```
|
||||
|
||||
## 🛠️ Troubleshooting
|
||||
|
||||
### Ollama bağlantı hatası
|
||||
|
||||
**Hata**: `Ollama sunucusuna bağlanılamadı`
|
||||
|
||||
**Çözüm**:
|
||||
```bash
|
||||
# Ollama servisinin çalıştığını kontrol edin
|
||||
curl http://localhost:11434/api/tags
|
||||
|
||||
# Servis çalışmıyorsa başlatın
|
||||
ollama serve
|
||||
```
|
||||
|
||||
### Model bulunamadı hatası
|
||||
|
||||
**Hata**: `Model not found`
|
||||
|
||||
**Çözüm**:
|
||||
```bash
|
||||
# Modeli indirin
|
||||
ollama pull llama3.2
|
||||
|
||||
# Mevcut modelleri listeleyin
|
||||
ollama list
|
||||
```
|
||||
|
||||
### Yavaş yanıt süresi
|
||||
|
||||
**Çözüm**:
|
||||
- Daha küçük bir model kullanın (`mistral`, `llama3.2:1b`)
|
||||
- GPU kullanımını etkinleştirin (CUDA destekli sistem gerekir)
|
||||
- RAM ve CPU kaynaklarını artırın
|
||||
|
||||
### Timeout hatası
|
||||
|
||||
**Hata**: `AI yanıt veremedi: timeout`
|
||||
|
||||
**Çözüm**:
|
||||
- Backend `ollama.service.js` dosyasında timeout süresini artırın:
|
||||
```javascript
|
||||
timeout: 180000, // 3 dakika
|
||||
```
|
||||
|
||||
## 📊 Performans
|
||||
|
||||
### Model Karşılaştırması
|
||||
|
||||
| Model | Boyut | Hız | Kalite | RAM |
|
||||
|-------|-------|-----|--------|-----|
|
||||
| llama3.2 | 2GB | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 8GB |
|
||||
| mistral | 4GB | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 8GB |
|
||||
| gemma | 2GB | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 6GB |
|
||||
| llama2 | 4GB | ⭐⭐⭐ | ⭐⭐⭐⭐ | 8GB |
|
||||
|
||||
### Yanıt Süreleri (Ortalama)
|
||||
|
||||
- **CPU**: 30-60 saniye
|
||||
- **GPU (CUDA)**: 5-15 saniye
|
||||
- **Apple Silicon (M1/M2)**: 10-25 saniye
|
||||
|
||||
## 🔒 Güvenlik Notları
|
||||
|
||||
1. **Ollama Erişimi**: Ollama sunucusu varsayılan olarak `localhost:11434` üzerinde çalışır. Production'da bu portu dışarıya açmayın.
|
||||
|
||||
2. **API Rate Limiting**: Backend API'sinde rate limiting aktiftir, kötüye kullanımı önler.
|
||||
|
||||
3. **Model Seçimi**: Güvenilir ve test edilmiş modeller kullanın.
|
||||
|
||||
4. **Veri Gizliliği**: AI'ya gönderilen veriler Ollama sunucusunda işlenir, dışarıya gönderilmez (self-hosted).
|
||||
|
||||
## 📚 Kaynaklar
|
||||
|
||||
- [Ollama Resmi Dokümantasyon](https://github.com/ollama/ollama)
|
||||
- [Ollama Model Library](https://ollama.com/library)
|
||||
- [Llama 3.2 Model Bilgileri](https://ollama.com/library/llama3.2)
|
||||
|
||||
## 🆘 Destek
|
||||
|
||||
Sorun yaşıyorsanız:
|
||||
|
||||
1. Ollama servisinin çalıştığını kontrol edin
|
||||
2. Model indirildiyse kontrol edin
|
||||
3. Panel **Ayarlar** sayfasında bağlantı testini yapın
|
||||
4. Backend loglarını kontrol edin: `backend/logs/`
|
||||
|
||||
---
|
||||
|
||||
**Not**: Ollama entegrasyonu tamamen opsiyoneldir. Sistemi Ollama olmadan da kullanabilir, manuel olarak mail şablonları oluşturabilirsiniz.
|
||||
|
||||
Reference in New Issue
Block a user