[CodeStudy] Bilerek rahatsız edici tasarlanmış Swift öğrenme uygulaması (yapay zeka eğitmeni)
(apps.apple.com)Merhaba.
Kişisel proje olarak geliştirdiğim bir iOS öğrenme uygulamasını tanıtmak istiyorum.
Yapma nedeni
ChatGPT veya Claude'a Swift kavramlarını sorduğunuzda hemen temiz ve düzenli bir yanıt geliyor.
Ama birkaç gün sonra aynı kavram yeniden karşınıza çıktığında zihninizin bomboş kaldığı deneyimi tekrar tekrar yaşayınca, "cevabı alan öğrenme" ile "cevabı arayan öğrenme"nin farklı şeyler olduğunu yeniden hissettim.
Bu yüzden Sokratik öğretim yöntemini, yani cevap vermek yerine soru sorarak kişinin kendi başına fark etmesini sağlayan yaklaşımı bir yapay zeka eğitmeni olarak uygulamaya çalıştım.
Aslında bilerek rahatsız edici yapılmış bir uygulama.
Nasıl bir uygulama
- 50 Swift kavramı (başlangıç → ileri seviye, async/await, Actor, Associated Types vb. dahil)
- Kullanıcı soru sorsa bile yapay zeka cevap vermez. Bunun yerine karşı sorularla düşünmeyi teşvik eder
- Her gün bir kavram, konuşma üzerinden "ustalık" seviyesine ulaşmayı hedefleyen yapı
- Konuşma sırasında Swift kodunu doğrudan girebileceğiniz yerleşik editör (sözdizimi vurgulama + otomatik girinti)
- Öğrenme kaydı, widget, karanlık mod
Teknoloji yığını
- iOS: SwiftUI + SwiftData, MVVM + @Observable, 0 harici bağımlılık
- Backend: Vercel Functions üzerinde Node.js (SSE streaming)
- LLM: OpenRouter üzerinden Claude Haiku 4.5. Provider soyutlaması sayesinde Gemini/OpenAI ile değiştirilebilir
- Müfredat: JSON tabanlı 50 concept, "cevap yerine soru" kısıtını zorunlu kılan sunucu tarafı prompt engineering
Mevcut durum
- Kayıt/giriş yok — şu an yalnızca cihazda yerel kayıt, anonim kullanım
- Reklam yok — öğrenme uygulamasının tonuna uymadığını düşündüm
- Ödeme yok — şu an temel doğrulama aşamasında. İleride abonelik modeli değerlendiriliyor
Dürüst sınırlamalar / Üzerinde düşündüklerim
- İşe giderken kullanmak yorucu geri bildirimi geldiği için, oturum süresini öngörülebilir hale getiren bir "5 dakika modu" tasarlıyorum
- İlk yanıt p99 yaklaşık 9 saniye (OpenRouter gözlemi). Sonraki sürümde prompt caching ile hedef 3–4 saniye
- Kullanıcı başına token maliyeti $0.005/DAU seviyesinde. Ölçeklenmede yeniden değerlendirmek gerekecek
3 yorum
Bunu yaparken beni en çok şaşırtan şey, system prompt’a eklediğim ve "cevap vermeyen AI" yapmayı amaçlayan kısıtlamayı (
[MASTERY]token tabanlı ustalık değerlendirmesi) LLM’in sürekli ihlal etmeye çalışması oldu; bu yüzden prompt engineering’e beklediğimden çok daha fazla zaman harcadım.Gemini Flash bu kısıtlamaya Claude Haiku’dan daha iyi uydu, ama buna karşılık soruların derinliği açısından Claude daha iyiydi. Şu anda Claude + ince ayarlanmış prompt kombinasyonunu kullanıyorum.
Benzer şekilde "LLM’i dizginlemeye" yönelik prompt tasarımı deneyimi olan varsa, ipuçlarını paylaşırsa çok sevinirim 🙏
Ajanına bir rol atayıp doğrudan ajanla konuşarak öğrenmekle
bu uygulamayı kullanarak öğrenmek arasında ne gibi farklar var acaba?
Ben de hem GPT hem de Claude ile özel prompt’larla denemiştim ama birkaç gün geçince en sonunda “ya, doğrudan söyle gitsin!” diyorsunuz... Bir de devam ettikçe cevabı veren durumlar sık sık ortaya çıkıyor.
O yüzden bu, öğrenmeden çok arama yapıyormuş hissi veriyordu.
Benim yaptığım uygulamada system prompt ve ustalık değerlendirmesi sunucu tarafında olduğu için bu durum biraz daha az yaşanıyor. Oturumun bitiş zamanı da belli olduğu için işe giderken kullanmak açısından rahat olduğunu düşünüyorum.
Aslında, dediğiniz gibi yöntemin kendisi GPT ya da Claude ile de fazlasıyla yapılabilir. Ama benim gibi tek başına düzenli devam edemeyen insanlara uygun bir format diye düşünebilirsiniz! :)