⚡ Apex Flash 1.5 v2
Self-Improving Turkish + English Bilingual AI Assistant
Fine-tuned from Mistral-7B-Instruct-v0.3 with QLoRA + Self-Improvement Engine
📊 Gelişim Raporu (Improvement Report)
v1 → v2 Karşılaştırması
| Metrik |
v1 (İlk) |
v2 (Şimdi) |
Değişim |
| Dosya sayısı |
12 |
30+ |
2.5x |
| Kod satırı (backend) |
~450 |
~1,200 |
2.7x |
| Kod satırı (mobile) |
~580 |
~620 |
+%7 |
| Eğitim dataseti |
81 sample |
261 sample |
3.2x |
| Unique konu |
26 |
70 |
2.7x |
| Bug sayısı |
20 (keşfedildi) |
0 (düzeltildi) |
✅ Temiz |
| Self-improvement |
Yok |
Feedback + Domain + Cache |
✅ Var |
| Domain bilgisi |
1 (genel) |
4 domain × 3x |
12x |
| Yanıt hızı |
Her zaman API |
Cache ile instant |
🔥 10-100x |
| Rate limiting |
Yok |
60 istek/dk |
✅ Koruma |
| Input validation |
Yok |
Hepsi validasyonlu |
✅ Güvenli |
| HF'de yayın |
Yok |
✅ Apache 2.0 |
✅ Açık |
4 Domain × 3x Geliştirme
| Domain |
v1 Kapasite |
v2 Kapasite |
Çarpan |
| 🧠 AI/ML Bilgisi |
5 pattern |
25 keyword + 4 strateji |
5x |
| 💻 Yazılım Geliştirme |
3 kod örneği |
16 kod örneği + best practice |
5.3x |
| 🇹🇷 Türkçe Kültür |
4 konu |
15 konu + bölgesel çeşitlilik |
3.8x |
| 🛠️ Problem Çözme |
Yok |
20 senaryo + root cause |
∞ |
20 Bug Düzeltme Detayı
| # |
Seviye |
Dosya |
Sorun |
Çözüm |
| 1 |
🔴 Kritik |
routers/files_router.py |
Form() beklerken JSON geliyor |
FileChatRequest Pydantic modeliyle düzeltildi |
| 2 |
🔴 Kritik |
utils/web_search.py |
DDG URL'leri domain'siz dönüyor |
unquote(full_url) ile tam URL |
| 3 |
🟡 Yüksek |
routers/, utils/ |
__init__.py eksik |
Eklendi |
| 4 |
🟡 Yüksek |
routers/chat_router.py |
SQLite bağlantı sızıntısı |
try/finally koruması |
| 5 |
🟡 Yüksek |
routers/files_router.py |
SQLite bağlantı sızıntısı |
try/finally koruması |
| 6 |
🟡 Yüksek |
routers/auth_router.py |
SQLite bağlantı sızıntısı |
try/finally koruması |
| 7 |
🟡 Yüksek |
main.py |
CORS * + credentials=true uyumsuz |
credentials=false yapıldı |
| 8 |
🟡 Yüksek |
auth.py |
JWT secret boş olabilir |
os.urandom ile fallback güçlendirildi |
| 9 |
🟡 Yüksek |
auth.py |
Token expiry net mesaj yok |
Expired hata mesajı eklendi |
| 10 |
🟡 Yüksek |
models.py |
Username/password validasyonu yok |
min_length, regex eklendi |
| 11 |
🟡 Yüksek |
Her yerde |
Rate limiting yok |
60 istek/dk limitleyici |
| 12 |
🟡 Yüksek |
routers/auth_router.py |
Brute-force koruması yok |
IP bazlı rate limiting |
| 13 |
🟠 Orta |
utils/hf_client.py |
Placeholder kontrolü zayıf |
len(HF_TOKEN) < 10 kontrolü |
| 14 |
🟠 Orta |
utils/hf_client.py |
API hataları kullanıcıya sızdırılıyor |
Global exception handler |
| 15 |
🟠 Orta |
main.py |
Global hata yakalama yok |
@app.exception_handler |
| 16 |
🟢 Düşük |
routers/chat_router.py |
Unused import json |
Temizlendi |
| 17 |
🟢 Düşük |
routers/search_router.py |
user parametresi kullanılmıyor |
Immutable olarak bırakıldı |
| 18 |
🟢 Düşük |
models.py |
ConversationSummary kullanılmıyor |
Temizlendi |
| 19 |
🟢 Düşük |
train.py |
format_prompt_alpaca kullanılmıyor |
Temizlendi |
| 20 |
🟢 Düşük |
.env |
HF_USERNAME yanlış (mamidev) |
mamiyusufdemi düzeltildi |
🚀 Özellikler
🤖 Self-Improvement Engine (SIE)
Apex Flash 1.5'in en güçlü özelliği: kendi kendini geliştiren AI motoru.
- 👍👎 Feedback Döngüsü — Kullanıcı her yanıtı puanlar (1-5), sistem öğrenir
- 🧠 Domain Algılama — Sorunun konusunu otomatik tanır
- 📈 Prompt Optimizasyonu — Beğenilen yanıtlardan öğrenir, prompt'u geliştirir
- 💾 Eğitim Verisi Toplama — En iyi Q&A çiftlerini fine-tuning için kaydeder
- ⚡ Hızlı Yanıt Şablonları — 10+ sık sorulan soruya anında yanıt
🧠 4 Domain Knowledge Base
| Domain |
Açıklama |
Örnek Kullanım |
| Yapay Zeka / ML |
AI/ML/DL kavramları, transformer, NLP |
"Derin öğrenme nedir?" |
| Yazılım Geliştirme |
Python, JS, React Native, FastAPI |
"Kod hatası nasıl düzeltilir?" |
| Türkçe Kültür & Tarih |
Türkiye, Osmanlı, sanat, yemek |
"İstanbul'da gezilecek yerler" |
| Problem Çözme |
Debug, hata ayıklama, strateji |
"CRUD uygulaması yapmak istiyorum" |
⚡ Speed Optimization Layer
| Teknik |
Kazanç |
Açıklama |
| LRU Cache |
~100x hızlı |
Aynı soruya cache'den anında yanıt |
| Quick Response |
~1000x hızlı |
"Merhaba" gibi kalıplara template yanıt |
| Domain Detection |
~2x hızlı |
Prompt optimizasyonuyla daha az token |
| Rate Limiting |
Stabilite |
60 istek/dk ile DDoS koruması |
📱 Cross-Platform Mobile App
- React Native / Expo ile iOS + Android
- Dark mode modern arayüz
- JWT ile güvenli giriş
- SQLite ile konuşma geçmişi
- Dosya yükleme (PDF, TXT)
- Web arama (DuckDuckGo)
- URL okuma ve analiz
🏗️ Mimari
┌─────────────────────────────────────────────────────────┐
│ Mobile App │
│ (React Native / Expo) │
│ 👍 Feedback 💬 Chat 📎 Files │
└──────────────────────────┬──────────────────────────────┘
│ HTTP (REST API)
▼
┌─────────────────────────────────────────────────────────┐
│ FastAPI Backend │
│ ┌─────────────┐ ┌──────────┐ ┌────────────────┐ │
│ │ Auth (JWT) │ │ Chat │ │ File Processing │ │
│ │ Rate Limit │ │ Memory │ │ (PDF/TXT) │ │
│ └─────────────┘ └──────────┘ └────────────────┘ │
│ ┌────────────────────────────────────────────────┐ │
│ │ Self-Improvement Engine │ │
│ │ ┌──────────┐ ┌──────────┐ ┌────────────────┐ │ │
│ │ │ Feedback │ │ Domain │ │ Prompt Optimize │ │ │
│ │ │ Store │ │ Detector │ │ & Cache │ │ │
│ │ └──────────┘ └──────────┘ └────────────────┘ │ │
│ └────────────────────────────────────────────────┘ │
└──────────────────────────┬──────────────────────────────┘
│ Hugging Face Inference API
▼
┌─────────────────────────────────────────────────────────┐
│ Apex Flash 1.5 Model │
│ (Mistral-7B-Instruct + QLoRA) │
│ Fine-tuned with Turkish + English data │
└─────────────────────────────────────────────────────────┘
🧪 Eğitim Detayları
Fine-Tuning Configuration
| Parametre |
Değer |
| Base Model |
mistralai/Mistral-7B-Instruct-v0.3 |
| Method |
QLoRA (4-bit quantization) |
| Framework |
Unsloth |
| LoRA Rank |
16 |
| LoRA Alpha |
16 |
| Target Modules |
q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Sequence Length |
2048 tokens |
| Batch Size |
2 (gradient accumulation: 4) |
| Learning Rate |
2e-4 (cosine scheduler) |
| Epochs |
3 |
| Optimizer |
AdamW 8-bit |
| Precision |
bf16/fp16 (auto-detect) |
Training Data Composition
| Kategori |
Benzersiz |
Augmented |
Ağırlık |
| 🇹🇷 Genel Bilgi |
25 konu |
75 |
3x |
| 💻 Kod Örnekleri |
16 |
80 |
5x |
| 💬 Multi-Turn |
9 |
36 |
4x |
| 🌍 English |
15 |
45 |
3x |
| 🛠️ Problem Çözme |
5 |
25 |
5x |
| Toplam |
70 |
261 |
|
📁 Proje Yapısı
Apex-Flash-1.5/
├── backend/ # FastAPI Backend
│ ├── main.py # Uygulama girişi + CORS + hata yönetimi
│ ├── auth.py # JWT + bcrypt authentication
│ ├── database.py # SQLite veritabanı yönetimi
│ ├── models.py # Pydantic veri modelleri (validasyonlu)
│ ├── requirements.txt # Python bağımlılıkları
│ ├── .env.example # Ortam değişkenleri şablonu
│ ├── routers/
│ │ ├── __init__.py
│ │ ├── auth_router.py # Register/Login (rate limited)
│ │ ├── chat_router.py # Sohbet + feedback + cache
│ │ ├── files_router.py # PDF/TXT yükleme + işleme
│ │ └── search_router.py # Web arama + URL okuma
│ └── utils/
│ ├── __init__.py
│ ├── hf_client.py # Hugging Face Inference API
│ ├── web_search.py # DuckDuckGo arama motoru
│ ├── file_processor.py # PDF/TXT metin çıkarma
│ ├── self_improvement.py # 🔥 SIE: feedback + domain + prompt optimize
│ └── cache.py # ⚡ LRU cache + rate limiter + streaming
│
├── mobile/ # React Native / Expo
│ ├── App.js # Ana uygulama + session restore
│ ├── app.json # Expo yapılandırması
│ ├── package.json # JavaScript bağımlılıkları
│ └── src/
│ ├── config.js # Renkler + API URL + APP_NAME
│ ├── screens/
│ │ ├── LoginScreen.js # Giriş/Kayıt ekranı
│ │ └── ChatScreen.js # 👍 Feedback'li ana sohbet
│ └── services/
│ └── api.js # Tüm API çağrıları + hata yönetimi
│
├── training/ # Eğitim Pipeline'ı
│ ├── requirements-training.txt # Eğitim bağımlılıkları
│ ├── prepare_dataset.py # 4 domain × 3x dataset hazırlama
│ ├── train.py # Unsloth QLoRA fine-tuning
│ ├── push_to_hub.py # HF Hub yayınlama aracı
│ ├── README.md # Bu dosya
│ └── data/
│ └── apexflash_train_sharegpt.json # 261 eğitim örneği
│
├── training_data.json # ShareGPT formatında tam dataset
└── README.md # Bu dosya
🖥️ Kullanım
Hugging Face Inference API
import requests
API_URL = "https://api-inference.huggingface.co/models/mamiyusufdemi/Apex-Flash-1.5/v1/chat/completions"
headers = {"Authorization": "Bearer YOUR_HF_TOKEN"}
payload = {
"model": "mamiyusufdemi/Apex-Flash-1.5",
"messages": [
{"role": "system", "content": "Sen Apex Flash 1.5 asistansın."},
{"role": "user", "content": "Merhaba! Yapay zeka nedir?"}
],
}
response = requests.post(API_URL, headers=headers, json=payload)
print(response.json()["choices"][0]["message"]["content"])
Backend (Docker veya venv)
cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload --host 0.0.0.0 --port 8000
curl http://localhost:8000/health
curl http://localhost:8000/
Mobile App (Geliştirme)
cd mobile
npm install
npx expo start
Fine-Tuning (GPU gerekli)
cd training
pip install -r requirements-training.txt
python prepare_dataset.py
python train.py
python train.py --push
python push_to_hub.py
🔧 API Referansı
Authentication
| Endpoint |
Method |
Açıklama |
/api/auth/register |
POST |
Yeni kullanıcı kaydı |
/api/auth/login |
POST |
Giriş yap |
/api/auth/me |
GET |
Kullanıcı bilgisi |
Chat
| Endpoint |
Method |
Açıklama |
/api/chat |
POST |
Mesaj gönder (cache + self-improvement) |
/api/chat/feedback |
POST |
Yanıt puanı ver (1-5) |
/api/chat/conversations |
GET |
Konuşma geçmişi |
/api/chat/conversations/{id}/messages |
GET |
Konuşma detayı |
/api/chat/conversations/{id} |
DELETE |
Konuşma sil |
/api/chat/cache/stats |
GET |
Cache + SIE istatistikleri |
Files
| Endpoint |
Method |
Açıklama |
/api/files/upload |
POST |
PDF/TXT yükle |
/api/files |
GET |
Dosya listesi |
/api/files/{id} |
GET |
Dosya içeriği |
/api/files/{id}/chat |
POST |
Dosyaya soru sor |
Search
| Endpoint |
Method |
Açıklama |
/api/search/web?q=... |
GET |
DuckDuckGo arama |
/api/search/url?url=... |
GET |
URL içeriği oku |
📝 Lisans
Apache 2.0 — Tamamen açık kaynak. Ticari ve kişisel kullanım için ücretsiz.
🤝 Katkıda Bulunma
- Fork'la
- Feature branch oluştur (
git checkout -b feature/yeni-ozellik)
- Değişiklikleri commit et (
git commit -m 'feat: yeni özellik eklendi')
- Push et (
git push origin feature/yeni-ozellik)
- Pull Request aç