CI_Assistani / README.md
samliumay's picture
Add model selector and token usage metrics.
0a498d0
|
Raw
History Blame Contribute Delete
7.53 kB
metadata
title: Siber Güvenlik Haber Asistanı
emoji: 🛡️
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 7860
fullWidth: true
short_description: Ollama ile güncel CVE ve siber güvenlik asistanı
tags:
  - ollama
  - cybersecurity
  - tool-calling
  - cve
  - turkish

Siber Güvenlik Haber Asistanı

Yerel bir Ollama modelinin güncel siber güvenlik kaynaklarını araç çağrılarıyla sorguladığı Türkçe Gradio uygulaması. Arayüz; modelin çağırdığı aracı, parametrelerini, dönen sonucu, tur numarasını ve nihai yanıtı ayrı ayrı gösterir. Modelin gizli düşünce metni gösterilmez.

Model ve üretim kontrolleri

Arayüz yalnızca izin verilen dört Ollama modeli arasında seçim yaptırır:

Arayüz seçeneği Ollama modeli Önerilen kullanım
1B qwen3.5:0.8b En hızlı deneme ve düşük kaynak kullanımı
4B qwen3.5:4b Ekonomik varsayılan Space modeli
9B qwen3.5:9b Hız ve yanıt kalitesi dengesi
35B qwen3.6:latest En yüksek kalite ve güçlü GPU

Container başlangıcında yalnızca OLLAMA_MODEL ile belirlenen varsayılan model indirilir. Diğer modeller ilk seçildiklerinde otomatik indirilir; model hazırlama durumu araç izleriyle birlikte arayüzde gösterilir.

Gelişmiş ayarlar bölümünde Temperature, Top-K ve Top-P değiştirilebilir. Her nihai yanıtın üzerinde model adı, ajan turu, süre, girdi tokenı, çıktı tokenı ve tüm turların toplam token sayısı görüntülenir.

Veri kaynakları

Anahtarsız kullanılabilen kaynaklar:

  • GDELT — güncel haber araması
  • CISA KEV — aktif istismar edildiği bilinen zafiyetler
  • NIST NVD — CVE arama ve ayrıntıları
  • CISA RSS ve CERT/CC Atom — resmi güvenlik duyuruları
  • MITRE ATT&CK TAXII 2.1 — Enterprise teknikleri

İsteğe bağlı kaynaklar:

  • NewsAPI (NEWSAPI_KEY)
  • AlienVault OTX (OTX_API_KEY)
  • NVD yüksek istek limiti (NVD_API_KEY)
  • Kurumsal MISP (MISP_BASE_URL, MISP_API_KEY)

API anahtarları hiçbir zaman kaynak koda veya model mesajına eklenmez; yalnızca sunucu tarafındaki ortam değişkenlerinden okunur.

Yerel çalıştırma

Gereksinimler:

  • Python 3.11+
  • Çalışan bir Ollama sunucusu
  • Araç çağrısını destekleyen bir Ollama modeli
ollama serve
ollama pull qwen3.6:latest
cp .env.example .env
uv sync
uv run python app.py

uv kullanmıyorsanız:

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python app.py

Uygulama varsayılan olarak http://127.0.0.1:11434 ve qwen3.6:latest kullanır. Ayarlar kabuktan verilebilir:

export OLLAMA_MODEL=qwen3.6:latest
export NEWSAPI_KEY=...
export NVD_API_KEY=...
python app.py

.env dosyası örnek amaçlıdır; Python uygulaması bu dosyayı kendiliğinden yüklemez. Değerleri kabuğa aktarın veya dağıtım platformunun secret yönetimini kullanın.

Çalışma biçimi

Örnek soru:

Son 7 günde yayımlanan kritik CVE'leri bul ve aktif istismar durumlarını kontrol et.

Beklenen akış:

  1. Model son_cve_kayitlarini_getir aracını çağırır.
  2. Dönen CVE'lerden gerekli gördükleri için cve_detayi_getir veya aktif_istismar_edilenleri_ara çağrısını yapar.
  3. Arayüz her çağrıyı ve sonucu tur bazında gösterir.
  4. Model, tarih ve kaynak bağlantıları içeren Türkçe nihai yanıtı üretir.

Model en fazla altı araç turu çalıştırabilir. Bu sınır hatalı veya sonsuz araç döngülerini engeller.

Yapılandırma

Değişken Varsayılan Açıklama
OLLAMA_BASE_URL http://127.0.0.1:11434 Ollama veya uyumlu güvenli geçit
OLLAMA_MODEL qwen3.5:4b Container açılışında indirilecek varsayılan model
OLLAMA_API_KEY boş Uzak geçit için Bearer anahtarı
OLLAMA_TIMEOUT_SECONDS 300 Model yanıt zaman aşımı
OLLAMA_NUM_CTX 16384 Bağlam penceresi
OLLAMA_TEMPERATURE 0.2 Üretim sıcaklığı
OLLAMA_TOP_K 20 Varsayılan Top-K değeri
OLLAMA_TOP_P 0.95 Varsayılan Top-P değeri
OLLAMA_PULL_TIMEOUT_SECONDS 3600 İlk model indirme zaman aşımı
CYBER_API_CONNECT_TIMEOUT 20 Genel API bağlantı zaman aşımı
CYBER_API_READ_TIMEOUT 60 Genel API okuma zaman aşımı
GDELT_CONNECT_TIMEOUT 30 GDELT için bağlantı zaman aşımı
GDELT_READ_TIMEOUT 75 GDELT için okuma zaman aşımı
CYBER_NEWS_CACHE_SECONDS 300 Aynı haber sorgusunun önbellek süresi
NEWSAPI_KEY boş NewsAPI erişimi
NVD_API_KEY boş Daha yüksek NVD istek limiti
OTX_API_KEY boş AlienVault OTX erişimi
MISP_BASE_URL boş Kurumsal MISP kök adresi
MISP_API_KEY boş MISP erişim anahtarı
MISP_VERIFY_TLS true MISP TLS sertifika doğrulaması

Hugging Face Docker Space

Depo, Ollama ile Gradio'yu aynı container içinde çalıştıran Docker Space düzenine hazırdır. start.sh önce Ollama'yı başlatır, OLLAMA_MODEL ile seçilen modeli indirir ve ardından Gradio'yu 0.0.0.0:7860 üzerinde açar. Yalnızca Gradio portu dışarı açılır; Ollama container içinde 127.0.0.1:11434 adresinde kalır.

Space oluşturma ve yükleme örneği:

hf auth login --add-to-git-credential
hf repos create KULLANICI_ADI/siber-guvenlik-asistani --repo-type space --sdk docker
git remote add space https://huggingface.co/spaces/KULLANICI_ADI/siber-guvenlik-asistani
git push space main

Space secret değerlerini Hugging Face web arayüzündeki Settings → Variables and secrets bölümünden ekleyin. Her push sonrasında Space otomatik olarak yeniden oluşturulur.

Önerilen Space değişkenleri:

OLLAMA_MODEL=qwen3.5:4b
OLLAMA_NUM_CTX=16384

NEWSAPI_KEY, NVD_API_KEY, OTX_API_KEY ve MISP erişim bilgilerini yalnızca Space secret olarak ekleyin. Bunları Dockerfile'a veya Git deposuna yazmayın.

qwen3.6:latest yaklaşık 24 GB'tır. Model ağırlıkları ile çalışma belleğine yer kalması için 48 GB VRAM'li bir GPU güvenli tercihtir. Varsayılan 4B model daha hızlı başlar; 35B seçeneği yalnızca yeterli GPU ve disk olduğunda kullanılmalıdır.

Space diski geçiciyse model her yeniden oluşturmada tekrar indirilir. Bir Storage Bucket /data yoluna bağlanırsa Space değişkenini aşağıdaki gibi ayarlayarak model önbelleği kalıcı tutulabilir:

OLLAMA_MODELS=/data/ollama-models

Docker'ı yerelde sınama

CPU ile yalnızca container başlangıcını sınamak için:

docker build -t siber-guvenlik-asistani .
docker run --rm -p 7860:7860 \
  -e OLLAMA_MODEL=qwen3.5:4b \
  siber-guvenlik-asistani

NVIDIA Container Toolkit kurulu bir makinede GPU ile:

docker run --rm --gpus all -p 7860:7860 \
  -e OLLAMA_MODEL=qwen3.6:latest \
  siber-guvenlik-asistani

Testler

python -m unittest discover -s tests -v

Testler gerçek API veya Ollama bağlantısı kurmadan araç şemalarını, CVE normalizasyonunu ve çok turlu araç döngüsünü doğrular.

Güvenlik ve doğruluk

  • Uygulama savunma ve haber analizi amaçlıdır.
  • Güncel veri kaynakları gecikebilir veya geçici olarak hata verebilir.
  • CVSS puanı tek başına aktif istismar kanıtı değildir; KEV durumu ayrıca gösterilir.
  • Kritik operasyonel kararlar özgün CISA, NVD, CERT/CC veya üretici duyurusundan doğrulanmalıdır.