- Hiç uygulama mantığı olmayan bir web sunucusu kurularak, tüm isteklerin LLM tarafından işlendiği bir deney yapıldı
- Sunucu yalnızca HTTP isteklerini alıp LLM'e “ne yapılmalı?” diye soruyor, geri kalan her şeyi LLM yapıyor
- Sunucu, CRUD işlevlerini yerine getirmek için yalnızca database, webResponse ve updateMemory adlı üç aracı kullanıyor
- LLM, SQL şema tasarımı, HTML·JSON üretimi ve geri bildirimlerin uygulanması dahil her şeyi kendi başına yaparak temel bir kişi yönetimi uygulaması kuruyor
- Yanıt süresi 30~60 saniye, maliyet ise geleneksel web uygulamalarına kıyasla 100~1000 kat daha yüksek; ayrıca UI tutarlılığı ve hafıza sorunları var
- Buna rağmen, kod olmadan çalışan eksiksiz bir CRUD uygulamasının gerçekleştirilebileceğini göstererek, kodun kendisinin geçiş dönemi bir kavram olabileceğine işaret ediyor
Arka plan
- Her şey, "bir gün kod yazmamıza gerek kalmayacak" şeklindeki spekülatif bir fikrin (Shower Thought) çıkış noktası olmasıyla başladı
- Gelecekte LLM'ler gerçek zamanlı girdileri işleyip 120fps video üretebilir ve uygulamaların da kodun da olmadığı, tamamen niyet temelli bir bilişim mümkün olabilir
- Bugün için bu hâlâ bilim kurgu alanına girse de, hafta sonu boyunca bir deney olarak "mevcut teknolojiyle ne kadar ileri gidilebileceğini" doğrudan test etmeye karar verildi
- Deneyin hipotezi, başarısızlık beklentisiyle yola çıktı
- AI dünyasının büyük kısmı kod üretme yönüne odaklanmışken (ör. Claude Code, Cursor, Copilot vb.),
"kod üretimini tamamen atlarsak ne olur?" sorusunu farklı bir bakış açısından sınamak için bu proje yapıldı
- Sonuçta route, controller ve business logic içermeyen bir HTTP sunucusu oluşturuldu; her istek için LLM'e “ne yapılmalı?” diye soran bir yapı kuruldu
- Deneyin amacı, "o geleceğin aslında ne kadar uzakta olduğunu" kanıtlamaktı
Projeye genel bakış
- nokode, “uygulama mantığı olmayan bir web sunucusu” kurup tüm istekleri LLM'in işlemesine bırakan yapıyı test eden deneysel bir proje
- Sunucu yalnızca HTTP isteklerini alıp LLM'e “ne yapılmalı?” diye soruyor, geri kalan her şeyi LLM yapıyor
- Amaç, kod üretimi olmadan LLM'in uygulama mantığını doğrudan yerine getirip getiremeyeceğini doğrulamak
- Deney için seçilen uygulama, temel CRUD işlevleri (ekleme, görüntüleme, düzenleme, silme) içeren bir kişi yönetimi uygulaması (contact manager)
Sistem yapısı
- Backend yalnızca 3 araçtan oluşuyor
- database: SQLite üzerinde SQL çalıştırır; şemayı LLM doğrudan tasarlar
- webResponse: HTML, JavaScript, JSON gibi uygun biçimde yanıt üretir
- updateMemory: kullanıcı geri bildirimlerini Markdown olarak kaydeder ve sonraki isteklerde başvurur
- Örneğin
/contacts isteğinde HTML sayfası, /api/contacts isteğinde JSON yanıtı üretiliyor
- Her sayfada bir geri bildirim widget'ı bulunuyor; “butonu büyüt”, “koyu temaya geçir” gibi istekler anında uygulanıyor
Deney sonuçları
- İşlevsel olarak başarılı şekilde çalıştı
- Form gönderimi, veri kaydı, UI gösterimi ve API yanıtı sorunsuz çalıştı
- LLM, örnek verilmeden bile uygun veritabanı şeması, güvenli SQL, REST tarzı API, duyarlı yerleşim, form doğrulama ve hata işleme üretti
- Performans sorunları var
- İstek başına 30~60 saniye sürüyor; bu da geleneksel web uygulamalarına (10~100ms) kıyasla 300~6000 kat daha yavaş
- İstek başına $0.01~0.05 maliyet oluşuyor; yani 100~1000 kat daha pahalı
- UI renkleri ve yerleşiminde tutarsızlık, önceki durumu hatırlayamama ve hatalı SQL üretildiğinde anında hata oluşması gibi sorunlar var
- “⚡ THINK QUICKLY” gibi prompt optimizasyon denemeleri ise tam tersine hızı düşürdü
Sonuç ve çıkarımlar
- LLM'lerin uygulama mantığını doğrudan yerine getirebilme yeteneği gerçekten var
- Asıl sorun, hız, maliyet, tutarlılık ve güvenilirlik gibi performans sınırlamaları
- Ancak bu sınırlamalar, niteliksel bir engelden çok niceliksel iyileştirme alanı olarak görülüyor
- Akıl yürütme hızı her yıl yaklaşık 10 kat artıyor
- Maliyetler düşme eğiliminde
- Daha uzun context pencereleriyle hafızanın gelişme ihtimali var
- Hata oranı da azalma eğiliminde
- Sonuç olarak, "AI'ın kod yazdığı dönemden" çok "AI'ın doğrudan çalıştırdığı döneme" daha yakın olabiliriz
- Şu anda geriye yalnızca HTTP yapılandırması, araç tanımı, DB bağlantısı gibi altyapı düzeyindeki kodlar kalıyor;
uzun vadede ise "yalnızca niyet ve icranın var olduğu bir bilişim" modeline geçiş ihtimali ortaya çıkıyor
Çalıştırma yöntemi
npm install sonrasında .env dosyasında LLM sağlayıcısını ve API anahtarını ayarlayın
npm start çalıştırdıktan sonra http://localhost:3001 adresine gidin (ilk istek 30~60 saniye sürer)
prompt.md dosyasını düzenleyerek uygulama türünü veya işlevleri değiştirebilirsiniz
/game, /dashboard, /api/stats gibi farklı yollar denenebilir
- “make this purple”, “add a search box” gibi geri bildirimler girilince anında uygulanır
- İstek başına maliyet, modele göre $0.001~0.05 düzeyinde
- MIT lisansı ile yayımlanıyor
2 yorum
Sorun, bilişimin ne kadar hızlanıp ne kadar ucuzlayacağı gibi görünüyor.
Ortalama bir sunucunun bugüne göre 100 bin kat daha hızlı olduğu, ama işletme maliyeti ya da kurulum maliyetinin yine de aynı kaldığı bir gelecekte, bunun da doğru bir yöntem olması muhtemel.
Bilişim ucuzladıkça makine dili yerine C'ye, C yerine de Node.js ya da Python'a geçildiği gibi, ileride LLM'e de geçilebilir.
Pek çok şey değişecek ve bence oldukça ilginç olacak. Çeşitli fırsatlar da ortaya çıkacaktır.
Hacker News görüşleri
Ben de benzer şeyler düşünüyordum
Bunu ilk kez ChatGPT 3.5 çıktığında düşünmüştüm
Bir gün AI programların yerini tamamen alabilir belki, ama asıl mesele doğru soyutlamayı (abstraction) bulmak
Örneğin CVS’ten Git’e geçişin mikroservis çağının önünü açması gibi, iyi bir soyutlama problemin doğasını kökten değiştirebilir
LLM’in böyle soyutlamaları kendi başına keşfetmesi için gerçek dünyayla uzun süre etkileşime girerek öğrenmesi gerekir
LLM’in doğrudan kod dosyalarını düzenleyebildiği araçlar eklenirse, yanıt hızı ve tutarlılık büyük ölçüde artar gibi geliyor
Kod bir tür bellek deposu (memory) işlevi görmüş olur
LLM’e doğrudan HTTP isteği göndermek bir cache miss’e benziyor; ayrıca kod güncellemelerini tetikleyen bir geri bildirim mekanizması da korunabilir
Optimizasyon için çok alan var ama gerçekçi olarak bakınca geleneksel kodlama yaklaşımı hâlâ daha verimli gibi duruyor
Bu bana “deterministik olmayan (non-deterministic) davranış mümkünse neden ille de deterministik olsun?” sorusu gibi geliyor
Ama çoğu insanın her seferinde farklı çalışan bir web uygulaması isteyeceğini sanmıyorum
Deterministik kod karmaşık problemleri ele almakta sınırlı kalabilir ve insan benzeri esnek bir yaklaşım daha uygun olabilir
Ama gelecekte LLM’ler daha zengin çıktı ve depolama yetenekleri kazanacak
Örneğin LLM doğrudan bağlantılar üretip tıklandığında içeride yeniden sorgu çalıştırabilir ya da geçici bir veritabanını yönetebilir
Otomatik güncellemeler, A/B testleri, UX değişiklikleri gibi nedenlerle kullanıcı deneyimi sürekli değişiyor
İlginç olan şu ki bu yaklaşım, ayrı bir araç olmadan yalnızca context window ile de çalışıyor
2025 Temmuz’unda bir PoC hazırlamıştım
Bu deney, “boilerplate kod” kavramının nasıl değişebileceğini iyi gösteriyor
Birden fazla instance’ı aynı anda sandbox içinde çalıştırıp, iç değerlendirmede en iyi performans gösteren sonucu sunarsanız bir tür meta reinforcement learning elde ediyorsunuz
Ancak kullanıcının niyetini deterministik çıktıya çevirmek zor; tersine geleneksel uygulamalar da esneklikten yoksun
Sonuçta kilit nokta, niyet değerlendirmesini (intent evaluation) nasıl güvenilir biçimde uygulayacağınız
İyi bir değerlendirme yöntemi yapmak, AI modeli yapmak kadar karmaşık olabilir
İstekleri geleneksel yöntemlerle işlemek, LLM’i doğrudan kullanmaktan maliyet açısından çok daha verimli
Kabaca 7 milyar parametreli bir modelin 10 token üretmesi için 100 GFLOPs’tan fazlası gerekiyor
Enerji israfı büyük
Kurumsal BT’de çalışınca insan kaynaklı verimsizliğin de azımsanmayacak düzeyde olduğunu görüyorsunuz
Verimsizlik bile trend hâline gelebiliyor
Belki de LLM’i doğrudan 443 numaralı porta koyup “sen hem HTTPS sunucususun hem de uygulama sunucususun” demek yeterlidir ;)
Web uygulamasına gerçekten gerek var mı? Bilgisayarla doğrudan sesle konuşsak olmaz mı?
“Geçen yıl tatilde çektiğim fotoğrafları göster, bulutları sil, arkadaşıma gönder.”
“Egzersiz zamanlayıcısı ayarla, jumping jack’leri çıkar.”
“Detroit tarzı techno beat oluştur.”
“Bu gece için bana bir randevu bul, siyah saç tercih ediyorum.”
Her şeyin sözle halledildiği bir dünya hayal ediyorum
Sonunda insanlık bunu benimseyenlerle reddedenler diye ayrılacak gibi geliyor
Bunun işaretlerini plakların yeniden popülerleşmesi gibi örneklerde şimdiden görüyoruz
İnsanlar birbirleriyle iletişimde bile sık sık metni tercih ediyor
Yapılacaklar, alışveriş, takvim yönetimi her şeyi yapıyor ve tamamen kendi ihtiyaçlarıma göre özelleştirildi
Karmaşık işler sesle yeterince ifade edilebilir ama basit ve tekrarlı görevlerde UI daha verimli
Örneğin “bana pantolon al” dediğinizde 30 sonuç arasından birini seçmek için sonunda yine görsel bir arayüz gerekir
Ben de benzer bir PoC’yi GitHub’a koydum
Başlangıçta yavaş bir “tasarım modeli” ile uygulama temasını ve DB şemasını oluşturuyor, sonra hızlı bir modelle yanıtları işliyor
PostREST kullanarak mantığı veritabanına koymayı denedim ama şema oluşturma başarısızlıkları ve hatalı sorgu üretimi sık yaşandı
CSS kütüphanesiyle UI tutarlılığı korundu ve önceki sayfaların hatırlanması sağlandı
Bu yaklaşım, LLM’in tek seferde eksiksiz bir uygulama oluşturup oluşturamadığını değerlendiren bir App Bench olarak kullanılabilir gibi görünüyor