İçeriğe geç
Emin Akif Erzurumlu
Bütün çalışmalar

Karnova

Öğrencinin tam olarak hangi kazanımda takıldığını tespit eden, içeriği ona göre uyarlayan eğitim platformu.

Rol
Backend & Yapay Zekâ Geliştirici
Kapsam
Ekip projesi · 3 kişi
Yıl
2026
Problem

Bir öğrenci matematik denemesinden 40 aldığında bu sayı, onun hangi konuda takıldığını söylemez. Öğretmen otuz kişilik bir sınıfta her öğrencinin eksiğini tek tek çıkaramaz; çıkarsa bile ertesi gün yeni bir deneme gelir. Not bir sonuçtur, teşhis değildir.

Yaklaşım
  • Veri modelini not üzerine değil kazanım üzerine kurdum: her soru bir veya birden çok müfredat kazanımına bağlı, öğrenci cevapları kazanım seviyesinde toplanıyor.
  • Yapay zekâ asistanına serbest metin ürettirmek yerine function calling verdim — model, öğrencinin gerçek kazanım verisine kendi çağırdığı fonksiyonlar üzerinden erişiyor. Bu, "iyi giden bir öğrenciye kötü gidiyorsun" demesini yapısal olarak engelliyor.
  • Her okulun verisi birbirinden yalıtık: multi-tenant kurulum ve rol tabanlı yetkilendirme (RBAC) ile öğretmen, öğrenci ve yönetici farklı kapılardan giriyor.
Bu projedeki işim

Üç kişilik ekipte backend ve yapay zekâ tarafından sorumluyum: veri modeli, REST API, Gemini entegrasyonu ve yetkilendirme katmanı. Arayüz ile operasyon, içerik ve test tarafı ekipteki diğer iki kişide.

Sonuç

Platform kazanım bazlı raporlama ve adaptif içerik önerisi verecek noktaya geldi. Kaynak kod şu an özel; mimari kararların dokümantasyonu herkese açık.

Öğrendiğim

Bir dil modelini üretimde güvenilir kılan şey daha iyi bir prompt değil, modelin uyduramayacağı bir veri yolu açmaktır. Serbest metin üretimiyle bir öğrencinin durumu hakkında yanlış cümle kurmasını engelleyemezsiniz; function calling ile modelin cevabı veritabanındaki gerçek kayda bağlanır. Artık tahmin etmiyor, sorguluyor.

Kullanılan

Django 6 · Python · PostgreSQL · Google Gemini API · REST API · RBAC

Kaynak kod özel. Mimari dokümantasyonu açık.