Files
balikci/OLLAMA_SETUP.md
salvacybersec af0510e486 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!
2025-11-10 21:13:58 +03:00

308 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🤖 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.