Yapay zekâyı çıkarınca
daha iyi oldu
Yapım notu · Tek HTML dosyası · 19 yayın · Sıfır anahtar
Sentetik ses · antalia-mini ile okundu
Kısaca§1
Dünyanın teknoloji yayınlarını Türkçe okumak için tek dosyalık bir sayfa yaptım. On dokuz kaynağı tarıyor, başlıkları Türkçeye çeviriyor, bir habere tıklayınca sizi sitesine göndermeden metni Türkçe önünüze koyuyor. Sunucu yok, kurulum yok, API anahtarı yok.
İşin ilginç yanı şu: anahtarı çıkarmak zorunda kaldığımda ürün küçülmedi. Düzeldi.
Neden böyle bir şey§2
Teknoloji haberciliğinin merkezi İngilizce. Türkçe teknoloji medyası çoğu zaman aynı haberi bir gün sonra, kısaltarak veriyor. Kaynağı okumak istiyorum ama akşam yorgunken kırk İngilizce başlık taramak başlı başına bir mesai.
İstediğim basitti: günün tablosu, Türkçe, tek sayfada. Kaydolmadan, bildirim istemeden, arada bir şirket olmadan.
Her şeyi belirleyen kısıt§3
İlk sürümde bir yapay zekâ modeli çağırıyordum. Günün özetini yazsın, başlıkları düzgün Türkçeye çevirsin istiyordum. Çalıştı da, hem de güzel çalıştı.
Sonra sayfanın çalışması için gerekenleri saydım: bir API anahtarı almam, bakiye yüklemem ve o anahtarı tarayıcıda saklamam gerekiyordu. Sohbet aboneliğim işe yaramıyor; bir web sayfası ondan faydalanamıyor. Programla çağrılan API ayrı bir ürün ve kullandıkça ödeniyor.
Bunu “sonra hallederim” diye bir detay sanıyordum. Değilmiş. Anahtarı çıkardığım anda verdiğim her kararı yeniden vermek zorunda kaldım — ve çıkan sonuç öncekinden iyi oldu. Aynı dersi bir asistan kurarken de almıştım: “ücretsiz olsun” bir özellik değil, mimari karardır.
Tarayıcının duvarları§4
Tarayıcı, başka bir sitenin verisini öylece alamıyor. Herkese açık bir RSS akışı bile olsa alamıyor; güvenlik gereği engelli. Sayfa bu yüzden isteği araya giren bir servis üzerinden geçiriyor ve biri yanıt vermezse sıradakini deniyor. Üç tanesi sırayla denenince on dokuz kaynağın hepsi geliyor.
Çeviri için önce DeepL istedim; kalitesi Google’dan iyi. Denedim, olmadı. DeepL hem ücretsiz API’sinde hem web ucunda tarayıcıdan gelen isteği reddediyor. Anahtar alsam bile bir HTML dosyasından çağrılamıyordu; arada kendi sunucumun olması gerekirdi — ki bu da “kurulum yok” sözünü bozardı. Google’ın açık çeviri ucuyla kaldım. Beklediğimden iyi iş görüyor.
Haberi kaynağına gitmeden okumak§5
Başlığı çevirmek yetmiyordu; asıl istediğim haberi okumaktı. Sayfa artık makalenin tam metnini getiriyor, menüyü, reklamı, “ilgili haberler” bloklarını ayıklıyor ve paragraf paragraf çeviriyor. Sağ tarafta da o haberde geçen önemli İngilizce kelimelerin Türkçe karşılıkları çıkıyor.
Burada küçük ama sinir bozucu bir ayrıntı vardı: metindeki biçim işaretleri çeviriden sağ çıkıyor, cümlelerin arasında ## gibi kalıntılar bırakıyordu. Kaynağında temizleyip başlıkları biçimlerinden tanımak zorunda kaldım — kısa, noktalamayla bitmeyen satır muhtemelen başlıktır.
En iyi yanlış dönüş§6
Bir WIRED haberine tıkladım. Karşıma tertemiz Türkçe bir metin geldi:
Zaten abone misiniz? Oturum aç. Bu hikâyeyi ücretsiz okuyun. Okumaya devam etmek için bültene kaydolun… Teklifleri görün.
Sayfa, üyelik ekranını makale sanmış ve özenle Türkçeye çevirmişti. Bu benim en sevdiğim hata türü: sistem kusursuz çalışıyor, sadece yanlış şeyi çalışıyor.
Düzeltmenin iki yolu vardı. Duvarı aşmanın yollarını arayabilirdim; aramadım, o yayının kararı. Onun yerine sayfa artık üyelik ekranını tanıyor, çevirmeye kalkışmıyor, RSS’in verdiği özeti gösteriyor ve altına açıkça yazıyor: bu yayın haberi abonelerine ayırıyor, devamı için orijinaline git.
Kullanıcıya dürüst bir boşluk, sahte bir doluluktan iyidir.
Lügat ve işe yaramaz kelime sorunu§7
Lügatın ilk hali işe yaramıyordu. Bana şunları getiriyordu: completely, without, testing, officially. Teknik olarak doğru, pratikte değersiz — bunları zaten biliyorum.
Birkaç eleme koydum. Gündelik kelimeler gitti. -ly zarfları gitti; İngilizcede bunların çoğu şeffaf. Özel isimler gitti — bir kelime cümle ortasında büyük harfle geçiyorsa o Nvidia’dır, çeviri istemez.
En çok işe yarayan eleme sonuncusu oldu: Türkçesi İngilizcesine benzeyen kelimeler. performance → performans kimseye bir şey öğretmiyor. Geriye şunlar kaldı:
- connector → bağlayıcı
- incendiary → yangın çıkarıcı
- instability → istikrarsızlık
Yapay zekâsız bir “günün özeti”§8
Anahtar gidince günün özeti de gider sanmıştım. Sonra doğru soruyu sordum: bir haberin önemli olduğunu nereden bilirim?
Cevap gözümün önündeydi. Birden fazla yayın aynı şeyi yazmışsa önemlidir. Sayfa şimdi başlıklardaki ortak kelimelerden konu kümeleri çıkarıyor; üç yayın aynı olayı yazmışsa o haber listenin başına geçiyor ve altında hangi yayınlar olduğu yazıyor.
İlk denemede liste tek bir sitenin akışına döndü; o gün WIRED çok haber geçmişti. Yayın başına en fazla iki haber sınırı koydum, liste dengelendi.
Sonradan fark ettim ki bu, bir modelin “bugün şunlar önemliydi” tahmininden daha dürüst. Çünkü tahmin değil, ölçüm: dünyanın haber odalarının o gün neye mesai harcadığının ölçümü.
Aklımda kalan§9
Kısıtların ürünü küçülteceğinden korkarız. Bu sefer tersi oldu. Anahtarı çıkarmak beni “modele sorayım” kolaylığından mahrum bıraktı ve verinin kendisinde zaten duran bir sinyali aramaya zorladı. Bulduğum sinyal, modelin vereceği cevaptan daha savunulabilir çıktı.
Yapay zekâ bu işin neresinde peki? Sayfayı yazarken yanımdaydı; ama sayfanın çalışması için gerekli değil. İkisi aynı şey değil, ve bunu ayırt etmek son zamanlarda verdiğim en faydalı karar oldu.