308 lines
7.5 KiB
Markdown
308 lines
7.5 KiB
Markdown
|
|
# 🤖 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.
|
|||
|
|
|