Evde sürekli çalışan bir sesli asistan kuruyorum. Beyin tarafını hazır bir araç üstüne kurdum — kalıcı bir süreç olarak açık duruyor, ben konuşuyorum, o cevap veriyor.
Çalıştı. Ve dayanılmaz derecede yavaştı: bir cümle söylüyorum, medyan 8,9 saniye sonra cevap geliyor. Sesli bir asistanda bu ölü demek; insan üçüncü saniyede “duydun mu?” diye soruyor.
İlk teşhis ve neden yanlıştı
Mantıklı açıklama şuydu: model büyük, düşünmesi uzun sürüyor. Çözüm de belli — daha küçük bir model kullan, gereksiz araçları kapat.
Bayrakları ekledim. Hata yok. Süreç açıldı. Ve süre değişmedi.
Bir şey ekledim, hiçbir şey olmadı. Tam olarak bu cümle beni doğru yere götürdü.
Kanıt açılış olayında
Süreç başlarken durumunu bildiren bir açılış olayı gönderiyor. Şimdiye kadar hiç bakmamıştım.
{
"type": "system", "subtype": "init",
"model": "…büyük model…", ← istediğim bu değil
"tools": [ … 30 araç … ] ← hepsi açık
}
İki bayrak da uygulanmamıştı. Reddedilmemişti, uyarı verilmemişti — sessizce yok sayılmıştı.
Sessiz başarısızlık. Sistem isteği kabul ediyor gibi davranıyor, hiçbir şey yapmıyor ve hiçbir şey söylemiyor.
En tehlikeli hata türü, çünkü düzelttiğini sanıyorsun. Yanlış yapılandırmayı yazıp “tamam, bu hallolduysa sıradakine geçeyim” diyorsun ve asıl sorun yerinde duruyor.
Çalışan yol: bayrak değil, dosya
Bayraklar işe yaramadığına göre başka bir kanal lazımdı. Aracın çalışma dizinindeki yapılandırma dosyalarını denedim: bir ayar dosyası ve bir kurallar dosyası.
Süreci yeniden başlattım ve önce açılış olayına baktım — artık her değişiklikten sonra ilk yaptığım şey bu:
{
"model": "…küçük model…",
"tools": []
}
Tuttu. Kişilik ve davranış tarafında da aynı: bayrakla verilen yönerge uygulanmıyordu, çalışma dizinine konan kurallar dosyası uygulandı.
Sonuç
| durum | cevap süresi (medyan) |
|---|---|
| Varsayılan — büyük model, 30 araç açık | 8,9 sn |
| Yapılandırma dosyasıyla — küçük model, araçsız | 1,8 – 3,3 sn |
Ve asıl sürpriz burada: yavaşlığın sebebi modelin büyüklüğü değildi.
Araçlar açık olduğu için model, basit bir sohbet sorusuna cevap vermeden önce dosya sistemine bakıyordu. “Bugün hava nasıl” sorusuna cevap verirken projede dosya arıyordu. Sekiz saniyenin çoğu düşünmek değil, gezinmekti.
Araçları kapatınca gecikme çöktü. Model küçültmek de katkı yaptı ama tek başına yeterli olmazdı.
Üçüncü tuzak: miras alınan ortam
Bir gün asistan masaüstünden açıldığında farklı, terminalden açıldığında farklı davranıyordu. Aynı kod, aynı yapılandırma.
Sebep: asistanı bir geliştirme oturumunun içinden başlatırsam, alt süreç ebeveynin ortam değişkenlerini miras alıyordu. Masaüstünden başlatıldığında böyle bir miras yok.
Çözüm: süreci başlatmadan önce ilgili değişkenleri açıkça temizlemek. Aynı desen sunucuda da çıktı.
Bir ayarın kabul edilmesi ile uygulanması ayrı şeyler. Aralarındaki farkı görmenin tek yolu, sistemin bildirdiği duruma bakmak.
Ben aylarca bayrak ekleyip sonucu varsaydım; tek bir açılış olayı hepsinden fazlasını söyledi.
Aynı desenin başka yerleri
- Yapılandırma dosyası okunmamak — yol yanlış, dosya var, hata yok, varsayılanlarla çalışıyor.
- Bilinmeyen anahtar — yapılandırmada yazım hatası; ayrıştırıcı sessizce yok sayıyor.
- Üzerine yazan katman — ayar doğru okunuyor ama sonra başka bir katman onu eziyor.
Hepsinde çözüm aynı: ayarı yazdıktan sonra etkin durumu doğrula.
Kapanış
Bu proje bana AI kullanımıyla ilgili en somut dersi verdi ve ders modelle ilgili değil: bir aracı hızlandırmak istiyorsan önce onun gerçekten ne yaptığını ölç.
Ben “model yavaş” diye teşhis koymuştum. Model yavaş değildi; ona gereksiz iş yaptırıyordum ve bunu durdurma denemelerimin hiçbiri uygulanmamıştı.