Merhaba.
Yaklaşık 6 ay önce, yasa tasarılarını kolayca görüp görüş bırakmayı sağlayan vatandaş katılım hizmeti 'Eoheung' ile kendimi tanıtan geliştiriciyim.
Bu kez topluluk içindeki sahte haberleri ve verimsiz tartışmaları azaltmak amacıyla AI fact-check özelliğini devreye aldım; bu süreçte yaşadığım düşünceleri ve teknik deneme yanılmaları paylaşmak istiyorum.
Başta çok basit bir yaklaşımla başladım. Hedef metni verip "Bu yazının doğru olup olmadığını doğrula" şeklinde bir prompt hazırladım. Ama gerçek servise koyunca beklemediğim sorunlar peş peşe geldi.
Basit kişisel 'görüşleri' bile sanki gerçekmiş gibi fact-check etmeye çalışıyor, dayanak olmamasına rağmen kulağa makul gelen sonuçlara varıyordu. Üstelik fact-check bittikten sonra yazar metni düzenlerse, sonucun kendi içinde tutarsız kaldığı absürt durumlar da ortaya çıktı.
Sonunda ilk yapıyı tamamen attım ve şu anda pipeline'ı epey elden geçirerek aşağıdaki gibi işletiyorum.
1. Doğrulanacak hedefi ayıklama (görüş vs gerçek)
Yazının tamamını tek seferde doğrulamak yerine, önce yalnızca nesnel olarak doğrulanabilir 'olgusal iddiaları' çıkarmasını sağladım. "Bu politika berbat" gibi değer yargılarını yok sayıp, "Bu yasa tasarısı vergileri %20 artırıyor" gibi cümleleri hedef almak şeklinde.
Doğru bağlamı kavraması için yalnızca hedef metne bakmıyor; orijinal gönderiyi, üst yorumu, hatta eklenmiş görselleri bile multimodal biçimde bir araya getirerek yapay zekaya bağlam sağlıyorum.
2. "Bilmiyorum" diye yanıt vermesini sağlama
En çok özen gösterdiğim kısımlardan biri bu. LLM'lere özgü halüsinasyonları önlemek için, çapraz doğrulama yapmaya yetecek güvenilir kanıtın eksik olduğu veya doğrulamanın mümkün olmadığı konularda zorla sonuca varmak yerine 'bilinmiyor', 'karar ertelendi' şeklinde yanıt vermesi için prompt'u sıkı biçimde kontrol ettim.
3. Orijinal metin anlık görüntüsünü sabitleme ve şeffaf kaynak sunma
Yazarın yazıyı düzenlemesi sorununu önlemek için, fact-check talep edildiği andaki orijinal veriyi (snapshot) olduğu gibi saklıyorum. Diğer kullanıcılar sonucu gördüğünde "hangi andaki hangi metin/görsel temel alınarak doğrulandı", "hangi kaynaklara başvuruldu" gibi bilgileri şeffaf biçimde kontrol edebilecek şekilde yaptım.
4. Trafik ve kaynak yönetimi
Bu şekilde tüm bağlamı toplayıp doğrulama süreci ağır olduğu için kullanıcı bekleme kuyruğu yönetimi gerekti. Bu yüzden tüm istekleri Redis Cluster + BullMQ kullanarak asenkron kuyruğa atıyor ve arka plan worker'larında sırayla işliyorum.
Maliyet ve hızı göz önünde bulundurarak ana model olarak Gemini 3.5 Flash kullanıyorum; hata oranı yükseldiğinde veya karmaşık akıl yürütme başarısız olduğunda Gemini 3.1 Pro'ya fallback eden bir yapı uyguladım.
(Rastgele istekleri engellemek için günde 1 kez ücretsiz kullanım sonrası uygulama içi puan düşülecek şekilde de sınır koydum.)
Hâlâ çözmeye çalıştığım konular
Kendimce savunma mantıkları kurdum ama hâlâ zorlayıcı çok fazla durum var. İstatistiklerin referans tarihinin farklı olduğu durumlar, siyasetçilere özgü metafor veya yorum içeren ifadeler ya da gerçek ile yalanın ustaca karıştırıldığı uzun metinleri hâlâ kusursuz işlemek zor.
Eoheung uygulamasında doğrudan test edebilirsiniz.
Bu tür doğrulama mantığında halüsinasyonları daha iyi yakalayan prompt pratikleri ya da kullanıcıların muğlak sonuçları daha iyi kabullenmesini sağlayacak UX/UI fikirleri varsa, rahatça tavsiyelerinizi beklerim. Uzun yazıyı okuduğunuz için teşekkürler!
Google Play: https://play.google.com/store/apps/details?id=kr.uhheung.app
App Store: https://apps.apple.com/kr/app/%EC%96%B4%ED%9D%A5/id6751951353
Henüz yorum yok.